The first thing to consider is how the character looks and how the concept translates into a game character. Before I jump into modeling a game character I need to consider my polycount budget, mesh topology, any rigging issues and my texture limits.
Once I have a rough idea of the technical specification and limits I start creating the main body of the character. In the case of this particular model, I created the body and head to start with. I kept the head as a separate model so that I could easily work on it separately and later export it separately for baking.
Once the base mesh is made I make sure I have enough edge loops in the face area and the model and any other places where I plan to sculpt more details. Since this is for sculpting only I try to avoid any triangles and evenly space out all the quads.
When I am fairly happy with the shape of the body I export a medium subdivision level back to Maya as a reference on top of which I create rest of the base meshes for the shirt, jeans and gun holster.
Creating these base meshes are straight forward polygon modeling so there is not much to explain how every element of the base mesh was created. For example, here you can see the two steps for creating the base mesh of the shirt.
You will notice that the collar area of the shirt has double sided faces. I did a face extrude along the collar area to create those. This gives me a nice thickness along the border of the shirt. I will do that along all of the border areas for the rest of the clothing. Here are some of the other base meshes. I tend to create all the separate elements of the character separately instead of sculpting out all the details from one base mesh. From my experience if you have separate meshes for all of the parts, your final normal map will look really clean and almost like high poly. However, if you sculpt everything from one mesh then things tend to look like plastic or clay.
After the shirt is modeled, I create the gun holster. This way, the holster mesh conforms well to the shirt mesh. I can obviously adjust it later in Mudbox. The buckles, guns, ammos and all the hard surface parts are marked red below. These meshes are exported separately and not subdivided. They are exported only as a point of reference.
When creating these meshes, I usually put extra edge loops at the edge of surfaces and also around the seams. I do this mainly so that I have sufficient polygons to sculpt extra details in those areas. Otherwise I would have to do local subdivision or even divide the whole mesh just to get more detail in a small area of the mesh. This is why in my opinion, it is a smart thing to make your base mesh do most of the work for you.
When I am done creating all the base meshes I will check for certain errors in the mesh before exporting it to Mudbox. Things to check are un-welded vertices, overlapping vertices and whether surface normals are facing the right way. Also, I exported the shirt, jeans, shoes and most of the meshes separately so that I can work on them separately.
Here is a turn table of the base mesh:
Now comes the fun part of the process. Once I’ve exported all the base meshes, I usually check them in Mudbox for any errors that might have slipped through. For example, I would subdivide all the meshes a couple of times to check for any holes, sculpt on them a little to check for proper surface normals, etc.
When I start sculpting something I usually don’t move up to a high level of detail too early. For an organic model the first thing I do is push out the basic forms at level 0 - 1. Things to consider at this stage are the skeletal features of the body, the level of skin fat and age of the character.
When it comes to detailing a character it is easy to get carried away, but it is important to stay on target of what you want your particular character to look like. I wanted this character to look very rugged and worn out but not look too old.
The most challenging part of creating this character was getting the cloth folds look decent. I went through several iterations for the cloth folds. There were several things I needed to consider when sculpting the cloth folds. Since this character is meant for a game I had to keep the folds fairly generic so that the folds work in most of the action poses.
When sculpting folds, keep in mind that folds should not exist all over your fabric surface. I usually put folds where the character will be deforming such as the knees, around the shoulders. Then there are folds in places due to gravity like the area at the bottom of the jeans. There are also folds on the shirt under the holster strap which makes the integration look better. For all these folds, I will sculpt in a different level and only switch to the highest level for small, sharp folds. Since this is primarily for creating the normal map it is ok if your sculpt is slightly lumpy, it actually helps your final cloth surface look more natural. If it starts to become too lumpy, you can use the flatten brush to smooth along the folds.
Here is a turntable of the entire high poly mesh at 7.3 million triangles.
To create the low poly mesh I export a semi-high level mesh from Mudbox as a reference point for resurfacing on top of it. If there are overlapping meshes I do this separately.
For this process I am using Topogun. When creating the retopo mesh I try to be a little liberal with the polycount so that the normal map baking works good. Once the normal map is baked I can optimize the mesh quite a bit to reach my actual polygon budget.
Topogun will give me a pretty good mesh but I will eventually take this to Maya, clean it up and modify it as needed.
Once the low poly mesh is created I will go ahead and unwrap the UV. For this character I decided to keep most of the character unique. The only parts of the mesh that’s mirrored in UV are the arms, eye balls, inside of the mouth and the shades.
Here is the UV layout:
When I unwrap a game character I usually give more pixel density to the upper part of the body. So I will give the head the maximum pixel density, then the torso and then the legs. This is done mostly because the upper part of a character will get the most screen time so that needs to look sharper than the rest of the body.
For baking normal maps and AO maps I am using xNormal. I export all my high poly meshes and my low poly meshes to xNormal and bake the maps one by one.
Baking a good normal map depends on several factors. One of them is that your low poly model needs to conform well to your high poly mesh. Another is you baking low poly mesh needs to be a little higher poly to catch all the normals properly. When I say little higher poly, I mean you can be a little liberal around curved surfaces and add a few more edges to catch the normals properly. Just keep in mind not do any changes along the UV borders since they need to be intact.
Here are samples of the final normal map and the ambient occlusion map:
With the normal map and the AO map created I will go ahead and start work on the color map. Both the normal map and the AO map will be used in creating the color map. First I will create the base colors to define different areas of the character. Here is a sample of the base color:
On top of this I add the AO map and on some areas I’ll also add the green channel of the normal map to add an extra layer of shading. This is because the green channel of the normal map is usually the same as a sky light bake given that all your UVs are upright.
Here is the same base colors with the AO and the normal maps shading:
Next I create the different surface textures, like the skin surface, the shirt surface and the jeans surface. A lot of people have already asked me how I hand painted the jeans texture. The jeans texture is a result of hand painted patterns, noises and some simple filters. So for this tutorial, I will only go through the creation on the jeans texture.
First thing I did was create two simple thread patters. I use the offset filter in Photoshop to make sure these patterns are tillable. Pattern A and B are for the threads. C is created using the noise filter and vertical motion blur. D is another layer of just noise and E is the scaled version of D. F is a layer with random black and white dots. A and B is passed through a distort-glass filter just to give it that random weaving effect. Then C, D and E is multiplied on top and F is overlaid and the base color is multiplied on top of all of that.
Once I have a base texture of the jeans fabric I use the transform-warp to conform the texture to the UV so that the fabric pattern does not look like a grid running through the whole mesh.
Here is a sample of what it looks like after all the surface textures are added.
On top of this I add a layer of my own shading and other details such as the hair, shirt patterns, dirt, color noise, etc. when the color map is done I will take a copy of that and use it for the base of the specular map. For the specular map the fabric areas of the texture are muted the most, the skin area usually gets a very de-saturated cyan-bluish hue and has a layer of noise over the entire specular map.
Here is a sample of the final texture:
Here is the final model with AO map and color map on it.Model with AO map
This is the end of the tutorial, I hope it was informative enough and that you’ve enjoyed it.