Create a Game Character: Jouster - part 7
This exclusive, free tutorial series will explore game character creation workflow. I will cover my entire process of taking a concept through to the final game asset.
You can see how the concept was designed by Marc Brunet on LayerPaint in his two-part tutorial.
During this tutorial series I will cover:
1. Blocking in the proportions
2. Sculpting the face
3. Sculpting the armor
4. Creating the armor meshes
5. Finalizing the details
6. Creating the low poly model
7. UV unwrapping and texture baking
8. Texturing the armor
9. Texturing the face
10. Model presentation in Marmoset
I hope you'll find this series of helpful in some way and if you have any questions feel free to contact me. Let's get started!
UV Unwrap and texture baking
Step 1: Unwrap the face
Select the faces that make up the front of the character's face and apply a Create UVs > Planar Map from the Z axis. As a result there will be some UV distortion. Open Window > UV Texture Editor and select the face UV shell. Use the Smooth UV tool by clicking and dragging Relax and then the Unfold button until there is little UV distortion.
To save UV space we can mirror the lower half of the neck, as it won't be seen much because of the armor. Delete half of the neck from the chinstrap down. Select the other half and apply a Cylindrical map (Create UVs > Cylindrical Map).
Merge the neck UVs to the face UV shell. Use the Unfold function in the Smooth UV tool again, but keep the front UV edge of the neck straight. Select the neck faces, Mesh > Extract the faces into a separate object and then mirror the geometry. The neck UV shell will now be mirrored and stacked. Combine the neck geometry with the face geometry and merge vertices. You can then merge the UVs of the face and the non-mirrored UVs of the neck.
Step 2: Unwrap the torso
Select all the faces of the torso and Planar map from the Z axis. Next go through and select all the edges to define the breaks in the UV shells. With the edges selected, click on the "Separate the UVs along the selected edge" button on the UV Texture Editor shelf.
For each of the shells use the Unfold function in the Smooth UV tool to unfold the UVs and remove the distortion. This may also require some manual UV tweaking.
Step 3: Unwrap the arms and legs
I usually try to have the UV seams on the inside of the arms and legs. However, on this character, for parts like the lower leg, I'll put the UV seam along the edge that lines up with a panel split in the high poly at the back of the leg.
Apply either a Planar or Cylindrical map for each for the upper and lower legs and arms. Manually cut and sew any UVs needed to fix up the UV seams. Once again, use the Smooth UV tool to unfold the UVs and remove any distortion.
Step 4: UV packing
Once the UVs have been unwrapped, it's time to pack the UV shells into the 0-1 space. Try to unify the texture density for the UV shells. However, some UV shells - like the bottom of the foot - won't need as much texture space as the rest.
For the head texture sheet I've left some extra space for any additional hair strips I may need. One thing to note is the UVs for the hair strips have all been laid in the same direction. This is to take advantage of the anisotropic material in Marmoset that relies on the direction of the UVs.
Once the UV shells have been laid out, move any mirrored UV shells exactly 1 UV space across. You can do this by typing "polyEditUV -u -1 -v 0" in the MEL script dialog (I have it set as a button on a custom shelf).
Step 5: Bake in xNormal - part 1
I use xNormal to bake the texture maps. When baking our texture maps, we can 'explode' the high poly and low poly models, and then bake all at once; however, I prefer to bake parts separately and combine the texture maps in Photoshop.
Baking objects like the lower leg and upper leg at the same time without 'exploding' them will cause errors in the texture bake. Go through and split the character into separate meshes where needed, and export the meshes as an OBJ.
Step 6: Bake in xNormal - part 2
In xNormal, load all of the ZBrush high poly meshes into the High Definition meshes tab. In the Low Definition meshes tab, load the low poly meshes. When baking the separate passes, turn on the visibility of the OBJs that are needed for each bake in the High and Low Definition tabs.
Although a cage mesh can be used, you can set the ray distance for each object in the Low Definition mesh tab. Use the ray distance calculator in the Tools tab to help calculate the ray distance for each low mesh OBJ.
In the Baking Options tab you'll find the settings and a selection of maps to render. I normally bake normal map tests to check for any errors and that the ray distance is correct. Set the desired map size and bake out a Normal map and Ambient Occlusion map. I also bake out a Bake Base texture map, which I use as a selection mask when blocking out my base colors in the texturing phase.
Step 7: Combining maps
With all of the separate textures baked, combine them into one complete Normal and Ambient Occlusion map. Once all of the normal and occlusion bakes have been combined, I use nDo2 to create a cavity map from the Normal map. Alternatively, you can use CrazyBump.