Low Poly Modeling

This is where the second fun part begins! I really love building the low poly version of a model. It might look like an annoying process, but this is what your final model will be so it's got to be perfect.

When building the low poly though, I had to keep thinking about how he would deform when animated. Since he's fat and has lots of accessories, I had to really think about the polygons. This is actually the first time I decided to go over my limit of 12,000 - 15,000 triangle count. The model has 20,000 including the weapon and all the accessories.

I thought about how my computer would handle the high poly in Max and since the body alone was 3.7 million polys, I decided to import a lower subd in Max (one that has the big forms the same as the highest subd but doesn't have all the pores and skin detailing).

After importing it,3ds Max was a breeze. I could retopologize (with Wrapit) over the mesh in no time and have full control over the final look of the model. With this technique I managed to finish all the low poly within a day and then it was time to UV-map him (Fig.07).

Fig. 07

I decided to have a big map for the head, mostly for close up shots and whatnot. So I gave the model two 2048 x 2048 maps, one for body with clothing and some accessories,and one for the head with the rest of accessories and weapon. UV mapping was quick (it took less than a day). I didn't just use the traditional 3ds Max tool for UV mapping. Textools, a free script, helped me a lot with the scale of each element in the UV so they all took the needed space in the UV and no stretching was visible.

I did think about what part of the mesh could be mirrored in the UV, so it would take less UV space. Since the gloves are the same on both sides, and the legs don't need to be asymmetrical because they are mostly covered by cloth, I decided to mirror these and some other parts (chest bag, chest parts etc).

At the end I had a nice UV-mapped model, ready to bake all the details in (Fig.08).

Fig. 08

Baking Maps (3ds Max)

This is where the tricky part begins. I like to do my bakes within Max. It gives me a lot of control with the cage and I can set up extra bakes (polypainting, better occlusion etc).

Since I had the mid poly imported from ZBrush, I selected the low poly mesh that corresponded with that high poly part (for example, the head), applied the projection modifier and selected the mid poly already in the scene. The low poly model showed the cage which I edited to fit the mid poly perfectly, with no signs of intersections (usually they show up as red holes when you render). After the cage was set up, I created a new layer where I would import the final high poly meshes. I made it active and set Display As Box so it would not render and crash my computer when imported. Finally, I imported the highest subdivision model from ZBrush right into this layer. It took some time to import, but it showed as a box and I could continue working without worrying about the computer getting laggy. Back into the low poly I wanted to bake, I switched the Reference Geometry from the mid poly that I had before, to the high poly newly imported. Since their volume was the same (just smaller details like pores and skin were different), the old cage fitted the new high poly perfectly.

Then it was time to render. Since my high poly had UVs ready, when imported it already had all the polypainting I'd done in ZBrush, so first I rendered the high poly's Diffuse into the low poly's UV, then I rendered the Normal map and finally did a quick lighting setup for Ambient Occlusion (using Scanline renderer with Light Tracer on and only one Skylight in the viewport). The quick way is to setup a white background and give the high poly a white material.

I also baked some extra matcaps from ZBrush (using the same method as polypaintbaking.) These helped some materials pop out more.

Texturing

Before starting texturing, I assigned a directx shader to my character so that I could see how the texture worked with the Normals and Specular every time I switched back to Max. (I also set up a basic three point lighting to see how the specular wouldreact)

Using my polypaint Diffuse and Occlusion as a guide, I imported the rest of the bakes (matcaps). I also like to copy my nmap green channel, invert it and paste it over the Diffusefor extra volume information (there might be some seams so I always check it out) (Fig.09).

Fig. 09

For the color scheme, I already had it in my mockup concept in Photoshop, so it was just a matter of getting the texturing done. I used different blending options for the matcaps until I was happy with how they looked. Thanks to the big collection of textures I have created over the years, I was able to grab the needed details for each material and overlay them over the Diffuse. I also used a lot of hand-painting on the organic parts.

While the Diffuse was about 90% done, I duplicated the PSD and saved it as a Specular map,tweaking each layer in color, brightness and contrast. At the end I had a Diffuse done and a Specular that fitted the Diffuse perfectly. I decided to work on a quick Gloss map (this is usually plain black and white with high contrasting). The Gloss map really helps the Specular map and is highly recommended(Fig.10).

Fig. 10

To pop in some of the details, I flattened the Diffuse, applied a high pass filter, copied it and reverted back to the un-flattened version. Then I pasted it on top of all the layers and set it to Overlay. This sharpens the details without destroying the texture.

Sometimes I had to add details to the Normal map too (so it would fit with the Diffuse). I ran the extra details in Crazybump, imported as a Normal map into Photoshop, adjusted it's blue output level to 128 (it will show as yellow-greenish) and overlayed it over my character's Normal map. It works wonders as you can also control the volume with the opacity slider (Fig.11 -13).