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.

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.

[Image]

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 directory:

[root]:\\WINNT\Profiles\[user]\maya\scripts

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.

[Image]

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."

[Image]

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."

[Image]

Next, using the insert key, I move the pivot point of the smoothed cube back to the origin (X=0)

[Image]

Then, I select and delete the interior face of the low-poly cube.

[Image] [Image]

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:

[Image]

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.

[Image]

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.

[Image]

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.

[Image]

I delete these new interior faces so that I may modify the profile of the face as desired.

[Image]

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.

[Image]

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.

[Image]

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:

[Image]

This final, low-poly head can now bound to a skeleton and animated, then smoothed using Edit Polygons>Smooth.

[Image]

In my next tutorial, I will discuss how to texture a model created using subdivision emulation