Making Of 'Thrull'
I created this character, Thrull, for the Dominance War II game art challenge. The technical restrictions were 6000 tris for the character model and 2048 x 2048 for each map type. I was part of the CG Society team and our theme was "Ancients", so...creating a character that has come back from a long hiatis to reclaim their planet. This short tutorial will outline my work flow for creating this "next gen" character.
Research and Concept Drawing
I'd never consider myself a concept artist, but it's always import to at least have a rough sketch of your idea before you begin modeling. Here you will see any flaws that your character may have in anatomy or just design in general. I ended up having up creating 2 basic sketches in my sketch pad and went with a mixture of both for my final design. I liked most of the body on the first sketch but liked the second version of the arms.
I also looked around the internet to gain some inspiration for my character. It's fairly unique, so it's not like I was going to find an exact reference image. I did find a few things that gave me ideas though, mainly Motaro from Mortal Kombat and a lot of horse anatomy images.
Base Mesh Modeling
The first stage of modeling that I do is to create a base mesh model. This model's density will be slightly higher than a low polygon model (one that we will later create as an in game asset) and less than a high detailed mesh. The key to creating this model is to have evenly distributed polygons throughout the mesh and to have clean topology.
The technique I use is one that is becoming popular these days, edge extrusion. I start by just creating a plane, select an edge and extrude it out to follow the shape that you want. It takes some practice to get used to but now that I've been modeling this way, I can't ever imagine going back to box modeling. I usually begin my models at their nose and work out from there, creating the shape of the mouth, jaw, cheekbones, forehead, eyes and then complete the rest of the head shape.
I follow this method throughout the whole body, creating basic muscle shapes but still trying to leave my mesh nice and clean (minimal triangles) so that when I finally bring this into ZBrush, it will deform nicely when subdividing. You also want to leave enough polygons in your model so that you won't lose it's shape when subdiving. I usually model my characters with their arms at a 45 degree (roughly) angle, this seems to be common as it assists deformation at the shoulder and chest area. I model the legs relaxed and apart from each other. This may change for you if you're building to a preexisting rig or if you have other requirements.
After I'm done creating my base mesh, I need to split it into different parts so that ZBrush (and my machine) will be able to handle subdividing it to the level that I want it to be. This is also good for planning out your seams in your model. As you can see, I split the model at the jawline, the elbows and the waist...as these parts worked best for this character. I exported each of these pieces as a seperate OBJ so that I may import them into ZBrush for sculpting. Keep in mind, I only moved these pieces out in the image to show that they were, in fact seperate. When I exported them they are still in their old, correct, place with all of their pivot points set to 0,0,0. When you bring these pieces into ZBrush, their pivots can be set to something else...just clear the pivot before re exporting it or projecting normal maps.
Sculpting is, without question, my favorite part of creating characters. Mainly because the results are so fast but I think it's also the stage where you really start to see your character come to life.
Again, starting with the head I import the OBJ into ZBrush, set it to Edit mode and subdivide it a few times. I switch my "Mouse Avg" setting under "Stroke" to a high level such as 5. Start roughing in the big shapes in the face and work your way up from there. Subdivisions can always be added later if you need a more dense mesh for finer details. Add more subdivision levels by pressing CTRL+D. Move up and down the levels by press D or Shift+D. If your model is looking "blobby" this may be because you are attempting to add big details to a model at a high subdivision level.
Define your model as you see fit. It's tough to say exactly what to do in ZBrush as I think, with time, it's a program that will come naturally to you (once you learn the different interface.) "Work away at it until you are happy with your model" seems like a very broad statement, but it may be true :P
I generally just use standard brushes, adding peaks and subtracting to make valleys. To tighten up areas, I switch to the pinch tool and run that over things like seams or wrinkles...Also, to soften up a model (in case you've made a ridge that is very over pronounced, for example) I use the smooth tool.
When you are happy with your model, clear any pivot points that you have set and save the tool. As you can see this is how far I took the different pieces of my model:
Now, take all of the pieces you've created and move down to the lowest subdivision level. Export these pieces. The reason for this is that if you have done serious mesh changes to your model, it will be shown even in the lowest subdivision level and, once you create the optimized low poly model it will be more accurate to the high resolution model.
Low Poly Modeling
This is the stage where you will be creating the model that will be seen and used in a game engine. Keep this mesh as optimized as possible but also remember that in order for a next gen character to still look next gen, it needs to have a silhouette that compliments the normal map. To make sure that this is the case, Import the pieces that you have exported from ZBrush. If you cleared their pivot points, all of the pieces should pop into place when imported. Depending on how clean or complicated of a model you created you may need to fully rebuild or partially rebuild a low polygon model around these imported pieces but usually, I find, you can get decent results by just removing edge loops and tweaking the mesh topology to work properly for you.
It is a bit of a tedious task, but it should go by rather quickly. Just remove as many edges as you can to still maintain the basic shape you wanted and still fall under the technical boundries. Keep in mind that this mesh will be used in game so a lot of the lessons learned from previous gen characters still apply. Even though your medium resolution mesh would have had evenly distributed polygons throughout the entire model (to make sculpting easier) this low poly mesh really only needs geometry to define it's silhouette and for proper deformation. Even if your normal map is 4096 x 4096, it will still look awful on a model that doesn't have a shape to support it and only has one edge loop at the elbows :P
After optimizing my medium resolution mesh, I have created this low poly model weighing in at 5974-
Well, there's no debate that a lot of people hate this stage. The principles for unwrapping a mesh have been retold over and over again, I don't think it's overly neccessary to go over "How to Unwrap a Character" in this tutorial. Basically, put a checker pattern texture on your model and unwrap it so that these checkers appear as squares on your model and are all roughly the same shape throughout the model.
Depending on what engine your using, mirroring UV's may be out of the question. I usually always unwrap my characters so that none of the parts are mirroring. For some things I will have overlapping geometry. Something to keep in mind if you are going to used mirrored UVs or overlapping UVs is that, when generating normal maps, both sides of the model will be calculated and your normal map will most likely explode. A way around this is to use the half of your model that is not mirrored (or one instance of the piece of your model that is overlapped) to generate normal maps with. Again, with the engines that I have worked with, mirrored UVs seem to cause problems so I avoid it. Besides, who doesn't love asymmetry?
Unwrap your model in a layout that works best for you. Some people like to have the unwrap laid out in the same way that it would be in 3d space, I try to follow this idea but tend to sacrifice it in favor more more UV space devoted to my model. Try to lay out your model in a way that makes sense and occupies as much UV space as possible. Keep in mind to keep theUV space even throughout the whole model, by this I mean that a fingernail shouldn't get the same amount of space as an entire face.
These are the seperate UV maps that I created. I eventually split the torso sot hat it would share a map with the head and the legs would have it's own seperate sheet. In the end this seemed to work out well for me and the only real reason I chose this choice over 1 huge map is for organization.
Normal Map Generation
This step is fairly short and sweet. Export all of your unwrapped pieces of your character according to the pieces you divided for sculpting. Open up the tool that you saved in ZBrush that contains your final high resolution mesh. Move to it's lowest subdivision model and open up Zmapper (assuming you have this plugin.) Use the 3D Studio Max 7 Tangent Space configuration. Open the projection menu, move the "Raycasting Max Scan Distance" to an appropriate level for your model and then capture the mesh.
Leave ZMapper and delete the higher levels of your mesh. Import the newly unwrapped mesh and enter Zmapper once again. You'll notice that you can see the cage of the high poly mesh ontop of your low poly model. Create the projected normal map and examine your model by navigating in the Zmapper viewer. If everything looks good you can either up the samples and generate another normal map or export the one you just made. If everything doesn't look so hot (for example, you can see holes in your mesh from where the projection wasn't large enough) you can leave Zmapper, reload your ZTL and repeat the process untill your projection captures all of the detail you want.
Once this is all done, you should have a normal map (or series of normal maps) that you can apply to your model in your 3d app and view it in realtime.
This is the stage where your character finally comes together, applying colour to your model so people can finally stop saying "Now texture it!" (of course, it doesn't stop the comment "Now animate it!" :P )
Something to remember about texturing "next gen" assets is that the lighting information will be taken care of by your normal maps. Painting in too many shadows could wash out the detail you have in your normal maps. That being said, different engines seem to handle things different ways and you may need to bake in a little bit of lighting information into your texture to help push the details. Source, for example, seems to have very weak implementation of normal maps and seems to rely more so on the detail in the diffuse textures. Likewise, different engines have different maps that you can and cannot use. For Thrull I used Diffuse, Normal, Spec and Self Illumination textures. These textures are failry common. I painted all of the textures at 2048 x 2048 but reduced them down to 1024 x 1024 for the final.
A lot of my texturing is based around photo sourced images. For Thrull I used a rhino skin type base for his flesh and a combination of rock textures for the scale parts around his limbs and stomach.
I also created a lighting map of my model that would help showing the peaks and valleys thoughout my model and generally give me a better idea of where I painted detail just on a 2D surface. This is helpful for giving colour to veins, showing where seperate materials (or pieces) would be on a model and, if needed, can be used to bake lighting into your texture.
Using this and my UV layout as a guide, I started painting in basic colours to test what colour schemes I wanted to go with and as a reference for where pieces begin and end. I then began combining layers of photosourced images to give the texture detail. After that I used a few different brushes to create colour variation in the skin and also added extra details that couldn't be given by the photos. Thrull is fairly desaturated in colours, I didn't want to make him an overly colourful character...plus I wanted to draw attention to his eyes, arms and stomach mouth (the blue parts, basically.)
After the diffuse texture was complete, I made a desaturated version of it, toned down it's contrast and used this as a base for my Spec map. I made the areas that would be less shiny more dark and the areas that I really wanted to pop lighter. For example, the contrast on his scale parts are much higher contrast than the skin on his body.
After all of this was done, I still wanted to pop out the blue areas on him a little more so I added a very faint Self Illumination texture to where these areas were. Basically, on the texture, all of the parts are black except for these blue areas which are grey.
After your character is fully textured you can, if you haven't already or if you even need to, merge all of the pieces together to make a solid mesh and weld together any points that would otherwise cause a seam
I kind of rushed this part unfortunately, because of the competition deadline I didn't have enough time to construct a fully working rig. Better yet, I wanted to spend more time on texturing and modeling than rigging. I created a series of "dummies" and positioned them where I wanted the mesh to deform for the final pose that I had to submit. Also, these dummy controllers need to be positione din a way that, when applying the envelope to the character, would deform evenly.
I put ones at the head, neck, multiple ones down the spine(s), shoulder, bicep, forearm, hand, quads and shins. After I positioned all of these how I wanted them, I selected my character, applied a skin modifier (your 3d app of choice will have a different method for this, but the principle is the same), selected all of the dummies I created and then assigned vertices to each dummy. After this, I moved the dummies around to pose the model: Moving his head to look at the camera, twisting his spine slightly, lowering his arms and altering his legs to look as if he was taking a step.
I'll admit, it's a very basic way to go about it but it does get the job done. Posing your character, even if it is a basic one, really helps give it an extra level of professionalism when showing off your final renders. Just taking your character out of it's neutral pose can help it's presentation so much.
Another good thing to have for your character is a base for it to stand on. In this case, I modeled a big platform of a rocky/muddy surface. Starting with the rough shape in max, I modeled a simple starting point and marked the areas where footprints would be by pulling the areas down. I imported this mesh into ZBrush and sculpted away, creating more detail from the impact of Thrull's footprints and definition for the veins in the ground. After I was done sculpting, I imported the model into Max (it was fairly high resolution), gave it a planar projection that I altered slightly and slapped a dirt texture onto into. I made a basic lighting setup and baked the the texture and lighting information. I took this image into Photopshop and painted more detail onto the texture (colour variations, grass bits, darkened the veins in the mud, etc.), then saved this image and used it as the texture on my pedestal. I also created a transparency map that I applied to my pedestal that would help feather out the edges' opacity so that there wouldn't be hard edges from the base and the image's background and so I wouldn't have to keep doing in in Photoshop (erasing out the edges of my pedestal.)
It was fairly quick and dirty, but I think it added a lot to the final presentation even if it wasn't overly complicated.
Lighting and Rendering
My lighting setup was fairly simple. I used 4 point lights: 1 strong nearly white light towards the back left, 1 weak slightly orange light by Thrull's right hand to highlight some of the details on his body, 1 strong orange light positioned above Thrull to act as the main lighting source and then, finally, 1 very strong blue light to his far left (our right) for contrast. I had shadows activate don his main light source and the backligh tbut not the others. For rendering I just used Max's basic rendering settings. After I rendered Thrull at an angle that I liked, I saved it as a PNG and opened it up in Photoshop. I cleaned up any minor areas that there were (artifacts, for example) and saved it at the size that was requested.
This was a very fun character to work on as it is an extreme change from my day to day work. I hope that this article has been at least somewhat helpful and would like to hear any feedback you may have to help me in future characters and "Making Of" articles. I would also be up for discussing workflow and different techniques. Give me a shout!
To see more by Gavin Goulden, check out 3D Masterclass: The Swordmaster in 3ds Max and ZBrush