Making Of 'Mechanurse'
Hey there! My name's Marco Plouffe or Splash if you feel artsy. In this tutorial, you'll learn about the workflow I used to create my newest lowpoly model called Mechanurse using 3ds Max, ZBrush, mental ray, Photoshop and Xnormal.
What you will see is a combination of many things I have learnt from experimentation, tutorials and from my teachers during my year at Campus Ubisoft (Cégep de Matane).
This was my last project before the end of school and my last chance to fill up my portfolio before the video-game companies' interviews. At that time, I didn't have much time to think about an original subject and concept, so I decided to focus on the technical aspect and therefore create a reasonably complex model with low polycount and low resolution maps. I aimed for a budget of 10 000 to 15 000 tris and ended up with approx 12100. Plus, I needed a mechanical piece and a female character, so I decided to mix both themes. Later, I saw my friend with a Manga nurse chick t-shirt and found it so cliché I had to use that idea! I was now ready to brainstorm the concept and start the modeling.
I took an old basemesh made from model sheets of an actual person to block the proportions. Fig.01 shows the basemesh. This basemesh is not the final mesh, it was only done to import into ZBrush and make the highres model of the anatomy. A really important thing when creating a basemesh for ZBrush is to have the faces almost the same size and smaller faces where you want more resolution: the smaller square will allow finer details. Another thing is to avoid triangular faces and, if possible, stars (vertices with five edges connected) since they will pinch and create artefacts when sculpting in ZBrush. If you feel comfortable with proportion, you might be better off starting with a way simpler basemesh (see Zack Petroc's tutorial). This way you can really easily avoid triangles and stars.
I didn't like the stance or the proportions of the basemesh, so I changed it in the first phase of the ZBrushing and added more curves (Fig.02).
Note: In the video game industry, riggers will probably ask you to keep the model as stiff as possible in its T-stance (like in Fig.01) since it's the easiest way to rig a model. But if you are doing it for yourself, you can take the liberty of putting the model in a more comfortable pose like I did - it's way nicer to work on a model that has a comfortable stance.
After that, I started sculpting the anatomy (Fig.03). I used many anatomy books and photo references because I feel both are useful: it is important to know where muscles are and how they look but you also need to know how the body will look when you add fat and skin over the muscles. It's better to use photo references of real people instead of other artist's models since they can often include mistakes with the anatomy... in other words: don't take mine!
I built the anatomy by making the most I could with the level of subdivision given. When I felt I couldn't define the shapes well enough with the current level of subdivision, I went one level above until I reached level five where I could really define the muscles. Finally, I split the mesh (using Polygroups and "grpsplit" in Layers) to get rid of the part that wasn't going to be showing on the model. I was then able to go a level higher (level six) without making ZBrush crash and work on some fine details like skin texture etc. This was mainly for fun and I didn't spend much time on it since the maps resolution I was going to use wouldn't be enough to capture the details. Keep in mind the goal was to be super low in budget with map resolutions and polycount. Sometimes during the process, I came back to the anatomy to fix some stuff on the body; this is why there is a big difference between level five and level six in Fig.03. I added eyeballs too, because she was getting freaky at that point!
Here is a little presentation I did where you can see the final anatomy with some skin texture done with some alphas and the Spray function of the standard brush (Fig.03a)
The main idea was to have armor with a kind of edgy backbone to shape the silhouette in a certain way. Here and there during the making of the anatomy, I opened my sketch book and drew some little sketches and silhouettes of what the armor could look like. When I was satisfied with the silhouette, I drew a really rough model sheet (Fig04). You can see that I conceptualized the syringe-rail-gun but never had the chance to model it unfortunately!
Because I work better in 3D than in 2D, I decided to make the biggest part of the conception in Max and ZBrush instead of Photoshop or my sketchpad. In ZBrush, I decimated the anatomy with Decimation Master and imported the OBJ file in 3ds Max. In Max, I modeled over the anatomy a basic mesh for blocking the shapes of the armor while helping myself with the model sheets (Fig.05).
I didn't care how the topology of the armor mesh looked like at that point since it was only to evaluate the overall silhouette of the character. Then I imported the mesh in ZBrush to continue the concept in finer details with the tools given. In ZBrush, if I wanted to add another module or shape, I just added a new primitive like a cube or a sphere instead of going back in 3ds Max and re-exporting another object.
Once I was satisfied with the complete armor concept, I decimated what I'd made in ZBrush, imported it in Max, put a semi-transparent material on it (like the X-ray mode) and built the highres armor over it.
I used basic techniques to build the highres mesh of the armor, but I didn't use the basemesh since it didn't have the topology I needed. I created a new plane and started extruding it until I had a solid basemesh. Then I activated the NURMS subdivision in "subdivision surface" to see what the model would look like in highres and I added edges and edge loops to make the highres result look sharp with nice fillets and chamfers (Fig.06). When doing small details, I tried using Bevel, Inset and other tools, instead of doing manual maneuvers, in order to keep the hardness and flow of the shapes.
Once the highres armor and the ZBrushed anatomy was finished, I used "Max retopo" (a free 3ds Max plug-in that snap the vertices of an object onto another object) to make the final lowres mesh. This is where I started counting the polys to make sure I could fit in the targeted budget of 10-15k.
Note: I didn't know about this software at that time, but now I strongly recommend trying Topogun for retopology!
You must never underestimate the power of the normal maps! While doing retopology, it's important to make some tests. Model complex and simple lowres meshes and bake them with the same highres model and you'll be surprised how much the normal map doesn't need to have a lot of poly to look good! The goal of the retopo should be to make sure the silhouette of the lowres model stays accurate with the highres model and let the normal map fake the details and the roundness of the shapes within the polys.
When I was finished with the retopo, my character was in many separate pieces: the hands, arms, backbone, helmet, legs, both legs joints, feet and anatomy were all different objects. I didn't attach them until I was done with the normal map baking process.
In Fig.06a you can see the complete highres armor rendered with a simple occlusion on the left and the wireframe/mesh of the final lowres model (12 100 polys) on the right.
UVs, smoothing groups and normal map baking
UVs should be pretty basic. Use the techniques you want. If you don't mind about symmetry you can even overlay your symmetrical chunks one above the other, but make sure you know how to mirror a normal map. See Eric Chadwick's page for more information click here.
I strongly recommend reading Chadwick's tutorial as it covers a lot of interesting aspects of normal maps. In there you can not only learn how to mirror a normal map but also how to get incredible results with any complex geometry and any narrow angles and much more. How well the normal map is going to show often depends on the distribution of the smoothing groups on the lowpoly mesh. The "Shaders and Seams" section of the tutorial was the most useful for me while modeling the lowres version of this character.
For my part, the UVs were not mirrored. It gave me more asymmetrical textures but lowered the resolution of the maps because I had to fit more chunks of UV unwrap into one map.
Once the retopo, the UVs and the smoothing groups were done, I brought each separated pieces into Xnormal under "low definition meshes" and brought the highres armor and the ZBrushed anatomy in "high definition meshes" and baked each pieces one by one. This gave me many normal maps, but you can merge them in Photoshop. I had to play with the ray distance in Xnormal until I'd removed every undesired projection since this often happens, especially in narrow places like between the fingers. I had to go back to 3ds Max and play with the smoothing groups a bit more until I got a clean normal map because sometimes angles of less than 90 degrees give weird results and therefore you'll need to add hard edges in the smoothing groups and create UV seams right on these hard edges.
With Xnormal, I also baked the Ambiance Occlusion map too since this really helps to create depth when combined with the normal map.
Textures & Materials
The character was rendered with mental ray only to be able to use the SSS shader to make better beauty shots of the model. The eyes were done with Arch and Design (there are many good tutorials for making eyes on the net) and the armor was done using a standard 3ds Max material with "Strauss" selected in the Shader Basic Parameters. The Strauss shading gives unsatisfying results at first but it can be tweaked to give a nice metal effect! Now the reason why I didn't use Arch and Design for the armor is simply because Arch and Design (not every mental ray shader) seems to have a problem with the smoothing groups when a normal map is applied above it. Probably some kind of tangent space incompatibility in 3ds Max. Since shaders are not really my specialty, I won't go in more details (Fig.07).
There is nothing really special about the maps. There are two different groups of maps: the maps for the armor, and the ones for the anatomy. For the armor, I got a normal map, a specular map, a diffuse map (Fig.08) and an extra opacity for the visor part. For the anatomy, I got a spec, a normal map, a grayscale map to control the weight of the SSS skin effect and the specular narrowness on the bikini part (Fig.09) and three maps for the SS skin shader: unscattered, epidermal, sub-scattered (Fig.10).
Note: I often use the same maps for different purposes: in 3ds Max: I just play with the output of the map in the material editor to change the map's grayscale value or color. That way I don't have to go in and out of Photoshop to make changes on my maps and I can use the same texture file for different purposes with my shaders.
Getting rid of seams
My teacher gave me a really cool trick to get rid of seams. It is a little time consuming and hard to explain, but I'll do my best.
Once you have a model (textured and everything) and want to get rid of the seams, clone the model or the part of the model you want to fix. On the clone, you'll need to create a new unwrap: add another Unwrap UV" modifier and use a different map channel than your first one so that your clone has two unwraps on two different map channels. On the second Unwrap UVW, you'll need to unwrap the model in a way that you won't have any seams where you had seams before. You don't even need to completely unwrap the model, only the faces around the area where you had seams before the first unwrap. When you are done with the second unwrap, make sure the cloned model is selected and go in Render to Texture (hotkey is 0). Click Add and choose Diffuse map in the Add Texture Element window. Then choose a location, a size and a format for the output file. Finally (the most important part) in the mapping coordinates, click Use Existing Channel and choose the channel of the second unwrap. You will end up with a diffuse map that has the same texture as the original model, but within the UVs of the second unwrap.
Now open this new texture in Photoshop and clean the texture where there were seams (they will no longer be on the borders of the unwrapped chunks because you moved the seams in the second unwrap). Once you've clean the new diffuse, you'll need to do the process backwards: so go back to 3ds Max, apply the new texture on the cloned model (you'll need to create a new material and change its bitmap map channel to two because you want it to be applied according to its second unwrap, the new one) and finally go to Render to Texture. But this time in the Use Existing Channel option use the first channel (the one of the original model). You will end up with a diffuse that looks like your original diffuse map, but the corrections you made in Photoshop will be there. The only thing left is to blend both diffuse map (the original and the newest one) using Photoshop and only keep what was corrected from the newest diffuse: that means not touching the pixel on the seams since they were recently corrected.
Note: The better your pixel ratio, the better the results in terms of getting rid of the seams.
Using parts from the Mechanurse, I modeled a podium to give her an action figure style. I put a biped in the lowres model, did a quick rigging and skinning and gave her a more interesting stance. Then I added a three point lighting set-up, nothing special. I enabled Final Gather and soft shadows and after a couple of tests came out with some renders. I saved my results as a PNG, opened the file in Photoshop and added in a background to give it a more illustrative look (Fig.11 - 12).
I hope this Making Of helps in the creation of your next lowres model. If you have other question or comments, don't hesitate to contact me at: . You can also check my website at : www.marcoplouffe.com
Have a good one!