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.
However, although I have enjoyed the benefits of NURBS modeling and have
had a fair amount of success with NURBS-based character design, I would
argue that modeling with subdivision emulation (or even better, actual
subdivision surfaces) can offer all of the benefits of NURBS modeling
along with a dramatically simpler production process. In this tutorial,
I will explore the process of modeling a 3D character head through the
use of subdivision emulation in Maya 3.0 Complete. In subsequent tutorials
(to be posted soon), I will address the issues associated with texturing
the resulting smooth surface, animating the facial expressions through
the use of blend shapes, and adding eyebrows and hair using Maya's Paint
Effects tools.
Of course, the first step to modeling any character is generally to create
a series of character sketches so that one has a clear vision of exactly
what the character model should look like. Although it is always nice
to have a reference on hand when creating 3D models, I believe that the
use of character sheets is particularly important when one is creating
original 3D characters; too often 3D models tend to be constrained by
the toolset, and end up looking surprisingly inorganic or (perhaps even
worse) inappropriately hyper-realistic. Before I began modeling the character
featured in this tutorial, I spent several hours sketching and revising
the character's proportions on paper.
Once these character sketches are complete, the next step is to start
creating the 3D model. For the purpose of simplicity, I always start by
creating a polygonal cube (
Create>Polygon Primitives>Cube)
which I will then sculpt into the desired form.

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. Typically, mel scripts are placed in the following
directory:
[root]:\WINNTProfiles[user]mayascripts
Once installed, the user can generally run a mel script by entering the
name of the script in the command line (in the lower-left corner of the
screen) followed by a semi-colon. Because Dirk Bialluch's Connect Poly
Shape script has multiple components (including shelf icons and help files),
installation of his script is a bit different and is detailed on his website
and in the readme.txt file included in the zipped download. Smoothed,
high-poly 3D characters can be created without this sort of mel script,
however the artist will continually need to deactivate then reapply smoothing
as the model is constructed.
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.
Note: I could have automated much of this mirroring process early on
using the mirror and stitch settings in the Connect Poly Shape options
window. However, in this exercise I have opted to mirror the smoothed
geometry manually for clarity.

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.
A couple hours into the modeling process, I generally add eyes to the
character (in this case, they are simply NURBS spheres), so that I can
get the shape of the eyebrows and eyelids correct.

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.
Once the refinement process is finished, I generally delete the smoothed
duplicate geometry in order to simplify my scene for the skinning and
animating stage. I am left with a finished, low-poly half face which I
mirror and merge using the Polygons>Mirror Geometry>Options
tool, as shown:

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