During this phase, and indeed throughout the iterative process of tweaking maps, I needed to deal with the issue of updating UVs in ZBrush by way of 3ds Max. In theory, the workflow is to export an .obj from ZBrush, cut the UVs, save the new .obj, and then import that .obj back into ZBrush, effectively replacing the base mesh with a new one that then has the correct UVs. This is done for each SubTool. For my purposes, I was using Roadkill as my UV un-wrapper – because it's awesome and free! But a huge problem arose when I needed to further edit UVs in Max after unwrapping in Roadkill – the end result would not import back to ZBrush, no matter what. When I took it in and replaced the base mesh, the faces would go berserk! This was using 3ds Max 2009, but I knew full well the process worked with 3ds Max 9. So that was my solution: to get .objs with edited UVs back into ZBrush I had to go back to 3ds Max 9. I never found a solution involving 3ds Max 2009. This problem is illustrated in Fig.03.
I wanted this rigged before I tackled the materials. This would facilitate poses and such that would help me see my materials better when I rendered. This rig was nothing fancy, just bones and controller objects. However, by adding in animation controllers I was able to create muscle systems for the eyes and antennae, which I thought would be handy if I chose to use this in an animation later (Fig.04). The skinning probably took the most time during rigging. I hate 3ds Max's envelopes and much prefer to assign specific, normalised weight values to the vertices. I find I get much more control that way, and with this situation I had meshes featuring rigid and flexible surfaces all at once, as seen in Fig.05. The muscular areas of the crab bend with a very realistic motion as a result. One big thing to note here is that if you're not modelling using edge-loops, it can be much more difficult to take advantage of this vertex weighting approach because the selection tools are set up to let you select loops and rings, and the selection sets are not connected to any other sub-object selection sets in Max.
Materials & Lighting
The materials were another challenging area for me, as I was pretty new to SSS in general. There are some Gnomon tutorials out there that I found essential to learning this skill (they're for Maya, but it's all Mental Ray anyway). Once I had decided on the Mental Ray – SSS Fast Skin with Displacement, I began the iterative process mentioned earlier of moving between Max and ZBrush as needed, to develop the maps. I found the SSS weight map to be incredibly sensitive, such that just a shade or two of difference in the grey causes wildly varying results in the degree of light allowed through the material. I found that it was useful to tweak my output curves for my weight maps in the same way that one must for the displacement map with Mental Ray. This allowed for more flexibility of these SSS maps inside Max, without having to run back to ZBrush or Photoshop every time an area was too dark or too light.
Otherwise, a variety of other issues arose with the materials. One was that the Mental Ray – SSS Fast Skin with Displacement takes forever to render – with or without a displacement map in it – because the shader always tries to displace. The obvious solution was that, for test renders, I used a regular Mental Ray – SSS Fast Skin. I wrote a quick Maxscript that would convert a given material from Mental Ray – SSS Fast Skin with Displacement to Mental Ray – SSS Fast Skin and back again on-the-fly, so that I didn't have to copy my settings each time I made big changes and wanted to render again.
The last challenge here was that, as I was creating materials, I needed my test renders to be from many angles, but for SSS that required moving the lights to get better back-surface lighting. I could have done batch rendering, but that doesn't let me move the lights, so I wrote another Maxscript for this issue. This Maxscript would basically select the render camera, move the lights as needed for that camera, render and save, and then do it again for the next camera. For the sake of simplicity, I rigged the lights as well, so they rotated position via a single controller object. I had about ten shots every time, so this allowed me to run the script and leave it be for a bit without needing to intervene. The results of this script can be seen in Fig.06. The script itself is shown in Fig.07.
The final lighting was determined by the scene, but it was always very similar. I used a simple Mental Ray work flow, where foremost all objects are created at real-world scale. Then I set up direct light, normally in a three-point lighting system. I toyed with using indirect lighting but decided that a fill light would do, and that Final Gather and GI were unnecessary. Things were taking long enough as it was!
My direct lighting workflow is very straightforward. I place a light, be it a point, directional or spot. Then I adjust value for brightness; I try not to touch the multiplier unless I have to. I take the shadow density down a bit. Then I soften shadows by adjusting the radius with respect to the size of the objects to be lit, and the distance of the light from the objects. That's mostly it for direct lighting. For indirect lighting, the workflow is more iterative and since I didn't use it here, I'll not detail that now.