The UVs were quickly done in Unfold3D and refined in Maya. For me, I prefer to spend less time on making perfect UVs and focus more on painting good textures. For this project I wanted to try painting all the textures by hand - there was minimal photo texturing used. For the sake of time I'll just walk through painting the face textures (Fig.06).
I generated a Cavity Map and Normal Map out of ZBrush, as well as an Ambient Occlusion Map out of Maya to use as guides for texture painting as well as easy ways to add details to your textures that match the sculpt perfectly. The cavity map was great for painting dirt into the little creases and pores in the sculpt. I used ambient occlusion map to darken certain areas in multiply mode. Everything else was painted using a lot of layering and a speckled brush at a low opacity and flow. The map was painted at 4k and later scaled down, even though the final textures were only 1k. It's always better to have more resolution than you need and scale down than to have too little and try to scale up. For this project I painted quite a bit more textures than usual for the skin as I was experimenting with putting different details on different layers of the skin to see how they would blend together in the final render.
Next, I started adjusting the texture to fit the different layers of the skin, using Hue/Saturation adjustment layers to create the Epidermal, Subdermal, and Diffuse textures. I also added specific veins into the Subdermal and Epidermal layers as well as a vein map for the ears in the backscatter map so that veins in the ear could be seen when light was shined through them. I put dirt and stubble into the Overall map since it wouldn't be scattered. Next I painted the Specular/Reflection map - again using the cavity map to darken areas which were recessed. Finally I painted an SSS Scatter map to control the amount of SSS scatter effect, because it wasn't even throughout the face. Places which have bone directly underneath will scatter less than 'meaty' areas.
Now, as you'll notice, I have a big seam running up the middle of the face in the UVs - I did this to minimize texture stretching in the middle of the face. Thankfully, now with programmes such as ZBrush and BodyPaint, seams are easy to fix. Once I was happy with the textures I used ZBrush to quickly fix the texture seams and then converted the textures to .map files for quicker rendering. Since the UV layout has very little stretching it allowed me to use a lot smaller texture sizes which use up less memory.
Shading & Lighting
The skin shader was a pretty simple setup. I made sure that the model was about equal to what it would be in the real world as it was in Maya. Once that scale is set I find it makes setting up the Fast SSS Skin shader a lot easier since it is scale dependant. The lighting setup was very simple, as shown in Fig.07.
The skin shader was first setup without any textures - pretty much using default values with little tweaks to the weight. Once I got a result that resembled skin, I started plugging in the textures and doing some render tests.
I use a lot of utility nodes to do adjustments on the fly inside of the hypershade instead of going back to Photoshop (Fig.08 - click to enlarge). This gives you a lot of fine control without having to go back and forth between programmes. Also the Set Range node is quite handy for remapping values from specular maps and other sorts of maps which control values. It's a good trick to change the range of a map for use to control different parameters.
Fig. 08 - Click to Enlarge
For the cloth shader for the shirt I used the facing ratio from the Sampler node to create an iridescent effect on the purple cloth. I also added a little ambience via the facing ratio on the edges of the cloth which helped to give that 'peach fuzz' effect. The rest of the shaders were a pretty straight forward setup with regular Blinns, lamberts and Phongs.
The lighting was first done with simple lights and no Global Illumination (GI) or Final Gather (FG) for the early test renders of the textures. Afterwards I started playing with GI and FG for the final look of the lighting. In the end, rendering FG turned out to be too costly to render for the minimal effect it was giving, so the final sequence was rendered just with GI. I used an Area light for the main key light and a couple of spotlights for fills. Here is one of the test renders for the textures (Fig.09 - click for movie).
Fig. 09 - Click to Download Movie
I used Shave & Haircut to do the hair. It was a pretty simple setup as I don't really like doing hair in CG, and so I designed the character with minimal hair to avoid a complicated setup. Because of the low hair count I rendered the hair as geometry and as a separate pass to be composited in. Hair also requires higher sampling to avoid flickering issues.
Rigging & Face Shapes
I knew that to make this character believable I'd have to make the eyes seem alive, so a lot of time went into setting up the eyes to move correctly. There's a lot of subtle motion that goes on around the eyes as they move around, and I did a sort of 'fleshy eye' setup to simulate those, as seen in the Hyper-Real tutorial DVDs by Alias. I'll just briefly over-view the setup, but you can check out the DVDs for the full tutorial (Fig.10).
Firstly create a joint in the centre of the eyes and weight the skin around the eyes slightly to those joints, and parent the eye geometry to them. You'll use these joints to control the eye movements, and since they are weighted to the mesh the skin around the eye will move slightly with the eyes as the look around.
Next make blend shapes for the eyes at their extreme positions - open, closed, looking left and right. Link these to the eye movements using set driven keys. When the eyes look up and down, the eyelids should naturally follow them up and down.
Finally, make a sculpt deformer which pushes the face mesh and scale it to be about the same size as the iris. Bring this into position with the eyeball so that it pushes on the eyelid. Parent this to the movement of the eyes as well; this will simulate the slight bulge of the lens pushing on the eyelids as the eyes move, even when they are closed.
For the blend shapes I decided to model them in ZBrush so I could use all the sculpting tools, and also because the sculpt layers make it easy to store shapes and edit them easily. I used the 3rd subdivision from ZBrush as the final render mesh with a lower resolution mesh as the lighter animation mesh. Using the 3rd subdivision from ZBrush allowed me to also bypass using displacement as most of the details could be achieved via a normal map, which renders a lot faster! Also, having a mesh dense enough to hold all the details in the blend shapes, such as the changes in wrinkles and folds, helped to add to the realism.
All the blend shapes were modelled on both sides with asymmetry to add to believability. They were then separated to left and right side controls in Maya using a simple set of scripts.
For certain shapes, in-between blends were necessary to achieve a more non-linear motion, such as the smile which used 3 in-betweens. These ensured that the skin moved around the teeth and underlying bone structure, instead of through it. This was very important for some of the other shapes as well, to avoid linear movement of the points which ruin believability. Another such shape was the brows; since the skin moves at different times, starting to move first near to the eyebrows then the motion gradually tapers up the forehead. I planned out the animation first before creating the shapes so that I would know exactly what shapes needed to be made and avoid unnecessary work.
Here is a movie of the blend shapes, testing how they look with the textures and how they blend together. It was also testing the eye movement, skin deformations and corrective shapes (Fig.11 - click for movie).
Fig. 11 - Click to Download Movie
The model was then skinned and a master duplicate of the model was made with the face shapes, and skinned rig was applied to it as blend shapes. Keeping the different elements separate like this, instead of having the shapes and rig on one mesh, makes it easier to troubleshoot problems later on - especially if you have to change blend shapes or add corrective shapes.