Making Of 'I Am Sam'
Sam is my second attempt at creating a realistic CG human head. My main reason for choosing to create an old man is that there are many more skin details on an older face than there are on a younger person. To me, that would mean "more for less" - by which I mean that because there are more details, it's less of an effort to achieve realism. Younger and smoother skin is a lot harder to create as the line between real and plastic is extremely fine. I think it's something I'd like to try in the future though, just to challenge myself, so hopefully I will be able to show my work to you again at some point.
The software that I used for creating Sam included Maya 7.0, which was the main software used for modelling, laying out UV and hair planting; Mental Ray for rendering; Bodypaint 3D for texturing and ZBrush for creating a displacement map.
I was fortunate to have hi-res photos that I could use as a reference point for this project. After importing the usual left and front reference photos into Maya, I began by modelling just half of the face with as little poly as possible, slowly adding more details along the way. I then mirrored the completed face model and spent some time refining the face to break up the symmetrical look. At this point I imported the quarter view photo into Maya and adjusted the face model to match the photo. It is important to match the model not only to the left and front views, but also to the quarter view because this view can sometimes provide the vital finishing touches to your model. To make the matching up process a little easier, try to remember to find out the focal length of the photo. Each eye ball has two layers: cornea for catching all highlights and actual eye model for shading. Poly cones were used for eye lashes (Fig01 and Fig02).
Texturing and Shading
A good UV (a non stretchy and overlapping UV) is usually the most important aspect when you're trying to create a realistic texture. In the good old days, a realistic UV meant long hours of moving, cutting and sewing UV points. Nowadays, there is a UV layout tool called 'RoadKill', which allows you to get excellent results in seconds. It can be downloaded for free at http://www.pullin-shapes.co.uk/page8.htm.
Once you've got a good UV, export the model in OBJ format to Bodypaint 3D for texturing. You can then project those hi-res reference photos onto the model; you can erase, clone, paint, mask and create more layers as and when necessary. Basically the work flow is very similar to Photoshop, but you need a bit more time to get used to the interface. Again, having those hi-res photos makes it a little easier to produce quality textures, although it's important to remove highlights on the photos before using them. You don't really want to include highlights within the textures; the highlights will be taken care of when assigning materials. Also, try making the texture as large as possible. It will certainly make a difference to the final result. I had my textures at 4096 x 4096 resolution (Fig03).
The face texture can now be used to create a displacement map within ZBrush. Convert the face texture into 16 bit greyscale (non RGB) within Photoshop and export it as PSD format into ZBrush to use it as a mask. Load the mask onto the face model within ZBrush and apply "Inflate Deformation" to the face model. Try inflating a few times with low values instead of trying to achieve the result with one go. When you are happy with the result, export the displacement map back into Maya.
I used the misss_fast_skin Mental Ray node to achieve a subsurface skin effect. I generated two other versions of the face texture for Epidermal Scatter Colour (a pale version for outer skin) and Subdermal Scatter Colour (a much saturated for the second inner layer). As for the Back Scatter Colour, I simply assigned a darker red colour to simulate the deepest skin layer. I also applied a mask to isolate the Back Scatter Colour to the ear and neck areas, which shows up nicely when you add a strong back light to the model.
Apply the displacement map to the model. Remember that ZBrush treats 0.5 black as a non displacement value and therefore you need to offset the value by applying an expression (file.alphaOffset = file.alphaGain/2) to the file node (Fig04 and Fig05).
Making hair used to be a difficult thing to do in CG. It isn't a lot easier with my methods, but it is certainly possible to achieve the look that you want and to render it within a reasonable time frame. Apply "Maya Hair" with the output of "Paint Effects" to the model. Select the hair, and display, and you will see the underlying curves that control the look of the hair. The trick here is to bend the curves in whatever way you want - it's very much like combing your hair. I have modified a script from the "Maya Bonus" tool, which turns a selected curve into joints. The script assigns whatever number of joints you wish to the selected curve and then smooths and binds the curves to the joints. That way, you can easily bend the hair without moving the curve CV's (Fig06).
Lighting and Rendering
The HDRI image was plugged into Mental Ray IBL node and served as the main environment lighting. I had one main spot light on the left, one bounce spot light on the right with lower intensity and one directional light as a back light. This enabled me to bring out the effects of sub surface scattering around the ear areas.
As for the render settings, I kept everything on their default settings, except for "Multi-pixel Filtering". I chose Lanczos with the value of 5 for both filter width and height because I found that this gave a sharper rendering output compared to other filter settings. Also, every time that you plug an image file into Maya, the default "Filter Type" is always set to "Quadratic", which means a certain amount of blur filtering is applied to the image. This may not always be a good thing, especially when it comes to the displacement map. Try rendering two images, with one using the default "Quadratic" filter and another one set to "Off". Compare the render results and you will see what I mean. I rendered the occlusion pass as another rendering pass to be composited at a later stage (Fig07).
I hope this "Making Of" has been clear and that I've explained it well enough. There are other finer details which I haven't covered here and if you have any questions please email me at . I would like to take this opportunity to thank those who have commented on my works and, last but not least, my wife who had supported me all the way.