Space Between: Developer Build
Hey everyone Jarrett here with part 2 of my processes and insights designing the Shapesong custom in game controller. Today I will be diving into modelling, animating, and texturing. That being said, let’s do it to it.
Tapping into my past architectural drafting roots, I find it very important to have a solid model sheet before moving on to modeling. With a strong side view concept in hand (check out the concept phase here), the next step was to flesh out a top and front view. I began by creating guidelines from major details to ensure I’m getting accurate proportions for these new views. For symmetrical designs, such as the controller, once I have my main guidelines setup I add in a centerline, allowing me to focus on a single side and mirror my work to ensure its symmetry, as well as speed up the pipeline.
The front view proved a little more difficult than the top as it was planned to have a notch to allow the interchanging of various heads, which wasn’t as obvious from the side view, but doable nonetheless. With the top and side view complete, I used the lasso tool to make selections around the parts intended to move and made a mockup of the controller in its open state in each view to get a better idea of the controller as a whole.
With a solid model sheet, time to start cranking out something tangible to use within the game!
As with any other 3D project, I setup my scene in Maya2016 with the model sheets I just finished. Understanding that the controllers are the tools in Shapesong that the player will constantly use to interact with the world, it was of most importance that they looked well in the the digital world in tandem with the physical controller in the player’s hands. Having a disconnect between the two would make for an awkward experience, and any good designer wants to avoid that. Therefore, the first order of business was to make a basic block-in of the concept and pop it in game to ensure its proportions felt appropriate. In retrospect I could have made a hand for scale to go alongside the controller concept for an even more sound design, but alas I did not so there’s no use crying over spilt polygons.
For my basic block-ins, I tend to work with a lower poly mesh as it’s easier to manipulate than a higher poly one, with a focus on overall shapes as opposed to functionality and minor details (that comes after). During this stage I discovered the head felt a little awkward when adhering to the concept, which was kind of anticipated, but with a little extra love and care on the fly I came out with a stronger design. Overall the proportions were pretty decent with very minor adjustments being needed, boiling down to the grip needing to be a little thicker and shorter. Ensuring the proportions were befitting at this stage as opposed to a fully fleshed out model may increase the pipeline slightly, but an overall higher quality model will be the result. As mentioned before, for a tool that will be used for a main portion of the player’s experience, the added time and care is well worth it.
Now with proper proportions, time to build up the controller and make it more smoot!!! Yeah, I said “smoot” not “smooth”. (it’s an inside thing)
The way I approached the first pass gave me some awkward edge flow so I began a fresh new model to ensure the overall quality of the mesh with duplicates of the previous block-in standing in for the previous model sheet. However, I still kept the model sheet present to inspire the overall feel and shapes, just not proportions. To save time, as well as ensure symmetry, I would focus on creating details on one side of the mesh, then mirror along the x-axis similar to when creating the model sheet, which I did frequently.
Some of the more tedious areas were where functioning parts would be. I couldn’t just have a button intersecting a mesh as I did in the block in. I would have to create housing for such details so they nestle in comfortably, yet also have wiggle room as if this were a physical product to be produced. Now usually you want to avoid using booleans for these kind of details, but after spending a good amount of time trying to find alternatives, I found it quicker to use this method and cleaning up the mess of extra vertices it leaves in its wake. Fortunately enough for me, the foundation of the mesh was neat enough that clean-up didn’t prove too difficult, although as tedious to be expected.
After all the time spent creating and cleaning up the model, the end result was rather satisfying. With the hard part out the way, time to have some fun and animate this puppy! (it’s not a puppy, it’s a controller, just so you know)
As I had already designed how parts would function and move on the model sheet, and with the stable mesh I had painstakingly crafted, all I had to do was adhere to the blueprint to make it dance! Rigging and skinning was pretty straight forward with next to no hiccups. Once I had all the main shells moving as intended, I made another pass adding secondary movement to tiny details such as the holo lenses in the base of the controller, making them pop in, out, twist, and have a little bounce. I also gave the same treatment to the main shells to soften them a little to give the feeling of a smooth operating machine, not a janky one.
The animations came out pretty damn cool if I must say. It was fun just to activate and deactivate the controller to watch all the minor movements within the game. However, as I was playing around with it, I realized the shells of the head where a little too snug for my liking so I opted in to adjust the shells to make them a tad bit thinner, giving them the room they needed, as well as add in some other minute details to push the overall design further for the greater good!
Yeah yeah, I’m gettin’ to that. Truth be told, I had them figured out during the block-in stage. Due to the clean sci-fi aesthetic, I kept the materials clean and simple as not to add too much noise to such a fine creation. For the first pass I simply selected the faces I wanted to be a certain material and assigned them, allowing me to avoid doing any UVing at that point to save time. I brought them into Substance Painter to refine them and get a general idea, luckily enough the first pass came out great! When it came down the final version of the model, I created a single material and spent a good time puzzling together an efficient UV. From there, I simply copied the materials I had previously created and added them as layers on a single material instead of having multiple materials which would add a bunch of extra draw calls, increasing the performance needed to run the game. Based on my previous experience with making textures for 3D models for VR, I made sure to max the texture size to 4k to get the most detail as possible, as texturing for VR requires cleaner textures due to being able to look at anything up close, especially the controller the player will have on them at all times.
A final minor detail I added was a hexagon pattern to the side grip buttons. For those who have not held an HTC Vive controller, the grip buttons have a bit of texture to them, so having the hex pattern with a matte finish with polished details adds a sense of felt texture to connect the digital object to the physical. It’s a minor nuance, but it adds that little bit extra immersion!
And there you have it folks! Another look into the development cycle and observations of creating a 3D asset for VR! From the trees from the forest demo to the in-game controller, I have learned much and I hope my insights have given you a better idea of what it takes to design and create assets for VR. I look forward to sharing more with you all in the near future! Stay tuned!