MODELING A HEAD IN MAYA WITH SUBDIVISION EMULATION
Perhaps I should preface this tutorial by acknowledging that
many different methods exist for creating 3D characters for broadcast.
To date, probably the most popular method has, in my estimation, also
been the most complex one - that is, modeling with the use of NURBS surfaces.
In the past, NURBS modeling was generally credited with many distinct
advantages over polygonal modeling. Specifically, its advocates appreciate
the excellent performance of NURBS geometry in wireframe mode, the ability
to easily modify organic shapes with a minimal number of CVs while retaining
a smooth surface continuity, a virtually infinite degree of control over
the tessellation of the model at rendering time, the ability to easily
add detail to a NURBS surface without changing the topology of the piece
(through the insertion of isoparms at specified locations), and in some
cases an added level of control over texture application because of the
inherent UV directionality that is associated with NURBS and patch surfaces.
Using the Polygons>Smooth tool, I could immediately
convert this cube into a very rounded, organic shape. However, once the
smooth tool had been invoked, the mesh would become too dense to modify
in any controllable way (unless I were to de-activate the smoothing node
in the object's history, modify the cube shape, and then apply a new smooth
effect). Fortunately, on page 217 of the Maya Polygonal Modeling manual,
Alias/Wavefront provides Maya users with a very handy mel script which
allows artists to modify a low-poly mesh while a duplicate, smoothed version
interactively updates. Dirk Bialluch has elaborated on this concept, with
a very complete and elegant mel script named Connect Poly Shape, which
can be downloaded from his website. Typically, mel scripts are placed in the following
Once the Connect Poly Shape mel script has been invoked, an options window will appear that allows the artist to specify smoothing parameters, designate whether the smoothed duplicate will inherit the transforms of the original low-poly mesh, disable the shading of the low-poly mesh, assign the low poly cage and smoothed geometry to different display layers, and even mirror and merge the geometry. Typically, I toggle the Keep Border option off. I also prefer to make the layer containing the smoothed geometry a "reference" layer, so that I can more easily select points on the low-poly cage without inadvertently selecting the smoothed mesh. Simply toggle the Disable Selection option on and the resulting smoothed geometry will be assigned to a non-editable display layer. I may also choose to modify the divisions attribute to either increase or decrease smoothness. Generally, however, it is a good idea to keep the number of divisions to an absolute minimum until it comes time to apply textures or render the scene.
Pressing the Connect Poly Shape button in the options window creates a smoothed duplicate which will update as the low-poly model is manipulated, allowing the artist to create a very smooth, highly tessellated model by modifying only the simple, low-poly "cage."
Since heads are generally symmetrical, I like to create a mirrored instance of the shape (scaled to -1 in the X axis) so that I can work on just one half of the face, while the other half is simultaneously created. Since my original cube was 1 unit large, I translate both the smoothed and low-poly models to the right (positive X) .5 units, so that one side of the models sit along the Z axis at "X=0."
Next, using the insert key, I move the pivot point of the smoothed cube back to the origin (X=0)
Then, I select and delete the interior face of the low-poly cube.
I am now ready to create the mirrored instance copy of the smoothed half, using a negative X scaling. Since the smoothed version of my model was automatically assigned to a reference layer, I will need to click on the layer containing the smoothed geometry (named cpsResult) and select Standard from the drop down menu so that the object can be selected from a camera view. I then duplicate the smoothed model with Edit>Duplicate>Options set as follows:
The result will be a full, shaded, smoothed shape which will update as
I manipulate the low-poly cage.
Now, the actual character modeling process begins. Maya offers a wide range of polygonal modeling tools, but with this setup, I generally use only three tools: namely, the Split Polygon Tool, the Extrude Face tool, and occasionally the Append to Polygon Tool. Although the low-poly mesh will always be quite manageable in wireframe mode, I want to add detail only where it is absolutely necessary to define the shape of the character (which is why I always start building my characters with a cube). It is important to remember that this low-poly mesh will eventually be used to create a wide range of different facial expressions for this character, so keeping the number of points to a minimum will simplify the process of creating these facial variations. Additionally, each new polygon on this low-poly cage results in a significant number of polygons on the smoothed duplicate, so for the sake of performance during the modeling phase, and also later when it comes time to render, it is important to add detail sparingly.
Beginning with the Edit Polygons>Split Polygon Tool tool, I begin adding detail and moving vertices into position.
Using the Edit Polygons>Extrude Face tool, I add detail to protruding and recessed areas (like the nose, eyes, and mouth). You will notice that faces extruded along the interior border edge result in the creation of new interior faces.
I delete these new interior faces so that I may modify the profile of the face as desired.
I continue adding detail using the Extrude Face and Split Polygon tools until I have enough detail to begin refining areas of the model, pushing and pulling the vertices into the right position.
As the modeling process continues, I may notice that my wireframe performance is becoming very sluggish. In part, this is simply due to the large number of polygons being drawn on the smoothed model. However, the more substantial performance hit is actually the result of the extensive INPUT history which accumulates as the low-poly model is being created. To improve performance, select the low-poly cage, then select Edit>Delete by Type>History. The history of the low-poly object will be deleted, but its connection to the smoothed duplicate will remain intact.
From this point forward, the modeling process should be fairly intuitive.
A couple tips to keep in mind: 1) try to avoid creating polygons on the
low-poly cage that have more than four sides (otherwise, the smoothed
results will be less predictable), and 2) be sure to keep all interior
edge vertices of the character head at X=0 so that an open seam does not
appear between the two halves of the head.
Most of the process is really just a matter of refinement. This stage
can be very time consuming (it took me about six hours to get to a point
where I felt this model was true to my original sketches), but in many
ways it is the most gratifying step.
This final, low-poly head can now bound to a skeleton and animated, then smoothed using Edit Polygons>Smooth.
In my next tutorial, I will discuss how to texture a model created using subdivision emulation