Making Of 'Old Elf'
The making of the Elven Archer was quite an organic process. Unlike most of my modelling projects, I didn't start this one off with a set goal in mind. In fact, the model just started off as a doodle in ZBrush. I had no idea when I started that I would take it so far!
I was developing my own 'metamesh' of sorts - a concept that I picked up from Alex Huguet - which is basically a mesh topology that is generic and serves as a good base for quickly starting sculpting in ZBrush. I made a couple of head meshes and was doing a couple of quick head sculpts to test how flexible they were and how well they worked (Fig.01).
The elf started off just as a sculpt of an old man. I started off first gathering some quick references from the net on older men's faces and just pretty much went to town on the 'metamesh' base. I used the Clay Tubes brush to build up the base shapes and quickly lay down the major facial anatomy. Then I did a quick smooth pass - then more clay tubes and standard brush to start defining details in the face such as major wrinkles and creases.
Once I was happy with the overall look of the face - using the Move brush to make adjustments to proportions at lower subdivisions - I started tightening up details using the Standard, Smooth and Pinch brushes. You have to be careful with the Pinch brush though, since it redistributes your polygons unevenly, so it's best to use this last as a sort of final refine pass.
Also, a neat trick I discovered is to go back down about 2-3 levels from your highest subdivision where your polygons are more evenly distributed and hit the 'Reproject Higher Subdiv' button, which will more evenly distribute your polygons on the higher levels and project the details back onto the mesh. However, make sure to save a morph target or create a new layer when you do this - since sometimes it does mess up in some places.
At this point I looked at the model and a sort of story started emerging from the character; I saw him as being this veteran warrior - an archer maybe (Fig.02). He had seen his fair share of battles and had the scars and stories to match them. Although he had seen much hardship in his life, he still managed to remain positive and hopeful. I wanted to convey that through this project.
The next day I continued refining the sculpt, adding some asymmetry to the model - something which I think is very important to making believable CG characters - and adding some high frequency details, like pores, with some custom alphas I had.
Once I had the sculpt of the head pretty much done, I drew a quick concept sketch of what I had in mind for the character then imported it into XSI to build the base meshes for the rest of the character (Fig.03). It was here that I decided I wanted to put some life to him and animate him. I didn't want to do anything really drastic - just enough to convey the personality and make him seem believable. Knowing that I only wanted to do a medium shot of him, I didn't bother to model what would not be shown in the final animation, so I didn't model hands or legs.
Once the rest of the meshes were modelled in XSI, I exported them back to ZBrush to start detailing and sculpting. I used ZBrush's mesh extraction to produce some thickness to the cloth and using mainly the Standard and Smooth brushes I began to rough out the cloth folds and wrinkles. I painted some custom alphas in Photoshop for the design on the shirt and applied it via the UVs, and used Inflate to raise it a bit.
For the leather straps I did the fine engraving by using ZAppLink to project masks I painted in Photoshop onto the geometry then deforming in inward.
For the leaf shoulder armour (Fig.04):
- I started off with a plane and quickly sculpted some leaves onto it
- I then hid and deleted the excess polygons
- I retopologized the mesh and added thickness to it using Mesh Extract in the SubTools menu
- The holes were created by exporting the mesh to XSI and adding them in there; I then continued to refine and sculpt the leaves with the new topology
Here is the finished elf in ZBrush (Fig.05 - click to enlarge).
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.
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).
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).
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.
I wanted the final look to be something like old footage, perhaps from a handy cam that someone possibly found somewhere. So I wanted that amateur hand-held feel to the camera work. I asked my sister to stand in for the elf and took my digital camera and made a video of the camera move I wanted, and then imported the footage into Maya and used Maya Live to track the shot. I then cleaned it up and applied the tracked animation to the camera.
Once I had the camera move locked, I started animating the elf to the camera, acting it out and using myself as reference. I'm by no means a great animator so I apologize to professional animators out there for my shabby work. Here's one of the rough early animation tests (Fig.12 - click for movie).
After a couple of tests and revisions I did some quick polishing of the animation curves and moved onto rendering.
Rendering & Compositing
I split up the renders into different passes: Beauty, Depth, Hair, Occlusion and Background. The background was made from a series of photos I took at a nature reserve here in Trinidad and stitched together. I then projected it onto a cylinder behind the elf and rendered it out as a separate pass to be composited in.
I brought these into XSI's built in compositor to put together the final composite of the elf. Here's my render tree (Fig.13).
Once I had that done I took it into After Effects for some post effects, such as lens flares, scratches, flickers and dust on the footage, as well as some more camera shake and blur effects and some final colour correction. The background was also composited in After Effects.
Here's the final composited image that I created for print (Fig.14).
You can check out the final footage of the elf on my 2008 Demoreel or on my website: http://www.thechindian.com
I hope this tutorial has been helpful and not too boring for you. I am currently working as a freelance character artist - my contact details are on my site. Thanks for taking the time to view my tutorial and thanks to 3DTotal.com for the great opportunity!