Continuing our excerpts from the Inspired 3D series, Tom Capizzi presents an in-depth character modeling tutorial.
This excerpt is the next in a number of adaptations from the new Inspired 3D series published by Premier Press. Comprised of four titles and edited by Kyle Clark and Michael Ford, these books are designed to provide animators and curious moviegoers with tips and tricks from Hollywood veterans. The following is excerpted from Modeling & Texture Mapping.
In this tutorial, the model is the character Dino from Flintstones in Viva Rock Vegas. Most production facilities use maquettes. If the model will be produced using model sheets or orthographic views, a maquette built in an action pose is created before the model sheets are drawn up. Building a sculpture in real life 3D ensures that the proportions of the model will appear correctly in the virtual 3D world in the computer. When a production facility has millions of dollars invested in the success of a 3D character, building a maquette is a small price to pay to make sure it looks good before it is built.
The CG character used in this tutorial was intended to seamlessly integrate into shots where the animatronic puppet was used. This animatronic Dino was created by Jim Hensons Creature Shop. Rhythm & Hues provided a model fabricated from urethane foam that was used for reference. The foam maquette was poured from the exact mold that was used to make the puppet. The model that was constructed from this reference maquette was supposed to match the foam property exactly.
[Figures 1 & 2] The maquette (left) supplied by Jim Hensons Creature Shop and the model sheet (right) used for modeling the final 3D model.
These drawings are normally used to define the look of the character in orthographic views used for modeling. Because the model had to be animated using digital character controls, the legs had to be straightened and spread apart. The face was changed a little bit to allow for nostril animation and easier eye animation.
The foam prop was digitized using a 3D digitizer, resulting in data that was not as accurate as data that is digitized from a maquette constructed from sturdier materials. The actual model was available for reference, and the puppet maquette data had to be changed to accommodate the requirements for animation setup. Digitizing provided only enough data to begin modeling; looking at the actual 3D sculpture provided the information that was required for the final model.
The network for the construction curves is conceived before the digitizing begins. The way the surfaces will flow along the curvature of the eyes, mouth, and nostrils are all laid out on the face. The difficult transitions where the arms attach to the body and the legs attach to the hips are planned out at this time as well. Two important aspects of patch layout for modeling are explained. The first aspect is to enable the easy and efficient layout for surfaces on a model. The second, more important reason, is to lay out surfaces so that the final geometry will move along the surface the same way that skin moves when muscles move beneath the skin. The radial sections around the eyes, mouth, nostrils, arm intersections and leg transitions, allow the geometry to move the way the actual parts of the body move. The muscles around the mouth move in directions that flow along the perimeter of the mouth. The muscles that lie beneath the lips travel radially around the mouth. The muscles around the eye that open and shut the eyelids are also laid out radially around the eye socket. These surfaces, if laid out in the way shown here, will move in a realistic manner because they match the musculature of the face.
Use as few surfaces as possible. When you are texture mapping a model, you will have to deal with each surface as a separate map. Keep all the surfaces close to the same size as the other surfaces. This enables you to maintain equal texture map sizes between surfaces, as well as maintain uniform distribution of geometry for animation and rendering purposes.
[Figures 3-6] Improper surfacing strategy diagram (far left). Surfacing strategy diagram for transitioning round objects into larger, smooth areas (center left). The five-cornered intersection (center right). Do not add patch boundaries in small tight areas (far right).
Never create a triangle. In nature, there are many places where the natural flow lines of the contours of the face seem to come to a point. Figure 3 shows improper surfacing strategies. The triangular region in the corner of the eye will never surface correctly. The detailed areas at the corner of the eye are bad places to try to maintain tangency between surfaces.
Try to keep exactly four surfaces at each intersection between surfaces, which allows for simple stitching of surfaces to be applied, keeping all surfaces tangent all the time throughout the animation. When it is impossible to maintain four surfaces at each surface intersection, use five-cornered intersections. The surfacing pattern shown in this eye diagram can be used at eye, arm, hip, mouth and any other locations.
The intersection shown in Figure 4 has five surfaces coming together at one point. Using this technique allows multiple surfaces to be introduced into a regular grid of surfaces without introducing triangular patches. When you align surfaces later, you will need to use special techniques to maintain tangency across this special condition.
Do not introduce patch boundaries in areas of detail. When you are trying to maintain tangency across surfaces in areas of detail, you do not have as much control as you need to keep detail and maintain tangency. Try to create detail from the surface and introduce patch boundaries across areas of the least detail Detail can be added by adjusting CVs or by increasing isoparms, if necessary.
The lines that were digitized are set up so the lines can easily be used to create surfaces. Note how the lines radiate from the eyes and mouth so they can create radial surfaces around those parts of the face. Whenever possible, try to determine ahead of time how the surfaces will be built, then digitize accordingly. The lines shown on Figure 7 indicate the construction of the final surfaces.
[Figures 7 & 8] The foam sculpture (left) was digitized using lines used in the construction of the actual surfaces. Convert degree-1 curves into degree-3 curves using Fit B-Spline (right).
The data can be imported as .obj or .dxf if you have polyline data to start with. Maya does not actually support polylines. When the data is imported into Maya, the polylines are converted into degree-1 NURBS curves.
Convert the lines into B-splines. If you digitized NURBS curves from inside Maya or imported B-spline digitized data, this next step is not necessary. Select the degree-1 NURBS curves in the file. When all of the lines are highlighted, use Object, Edit, Fit B-Spline to create degree-3 NURBS splines where the original digitized lines were.
Drawing the Curves
Starting with the lines created in the previous steps, new curves are constructed. These curves can be created by manipulating, detaching, attaching and rebuilding the converted B-splines that were created earlier or by tracing over existing curves. The first step is to create flow lines that go across the entire head. Starting from the mouth and eyes, draw NURBS curves from the edges of the radial mouth and eye regions toward the back of the head. These lines will be used later during the construction of the initial surfaces. In Figure 9, the curves shown in red were created by tracing over the existing data. These lines were constructed as long, continuous curves to create large surfaces over the head.
Here are some additional tips on creating usable splines for a curve network:
- Use edit points to draw splines wherever possible. While you draw splines across other splines, you will need to connect splines to each other. Only edit points can guarantee that the splines will intersect.
- Draw continuous splines across the entire model whenever possible so that you can visualize the changes in the surface while maintaining smoothness across the model. If you create short splines that meet in the middle of the model, there will be a break in the continuity of the surfaces.
- Next, create radial curves to define surface boundaries. Using the flow lines created in the previous step, radial lines are created that begin to define the areas that are to be turned into individual patches. Edit point curves were used to create the radial curves. The points where the curves come together are certain to intersect. In Figure10, radial curves around the mouth, eye and nostrils allow surfaces to be constructed correctly.
[Figures 10 & 11] Use radial curves around the eyes, nose, and mouth (left)to define surface boundaries. Initial surfaces across the head (right).
Patch Modeling Head
Surfaces for this model were created in two steps. The first step was creating surfaces that cover the head. I called these initial surfaces. The last surfaces are called final surfaces, which are the initial surfaces broken up into surfaces that have all of the isoparms aligned. The term patch modeling was derived from these smaller surfaces. The smaller surfaces are all stitched together in a patchwork of surfaces that make up the 3D character.
The head is the focus of the first part of the tutorial because the face has the hardest transitions for modeling. No effort was made to get the initial surfaces to have isoparms that align; the plan was to do this later. The most important focus of the initial surfacing phase was to have the surfaces have tangential continuity and smoothness.
Bi-rail surfaces were used almost exclusively to create the surfaces on the side of the head because they allowed me to make large patches that covered the majority of the head quickly. The larger surfaces would be broken up into smaller regions later. Using smooth curves that sweep across the entire face create a smooth surface network without using tangency tools. These initial surfaces of the head are constructed so the surfaces are smooth, but the alignment of isoparms is not considered until later.
Initial Surface Alignment Tools
The alignment tools discussed here were used to create the initial surfaces. These tools take advantage of curve construction to create and maintain tangency when building surfaces from curves.
Align curve can be used to make existing curves have common end points, and have the end of the curves have continuity. The continuity options include positional, tangential or curvature continuity.
Use project tangent to create smooth curve transitions where curves meet existing surfaces. Project tangent creates a tangency condition at the point where a curve coincides with the edge of a surface. First select a curve then the isoparm on the adjacent surface that you want the curve to line up with. Project tangent will also line up a curve with two adjacent curves to create a tangency condition. You cannot use project tangent to align a single curve to a single curve. The Align tool, which will be discussed later, will work for this.
Surface Tangency Options
The square surface and the bi-rail surface provide options for tangency between surfaces that have been built and surfaces that are being built. These options operate on the surface boundaries. The square surface simply has one option that turns tangency construction on for all boundaries. The bi-rail surface has options that turn tangency on for the first profile, the last profile or both first and last profiles.
Separate Initial Surfaces into Patches
The surfaces that you created in the initial surfaces step were only partially ready to be aligned. In order to have a surface network that is ready to create a uniform mesh from, you need to detach the surfaces that were created across the boundaries or adjoining surfaces.
The initial surfaces have to be separated into smaller regions that allow the boundaries of the adjacent surfaces to line up with each other.
When a model made of different patches has uniform meshes, all surfaces have the same number and placement of isoparms as the surfaces next to them. If one surface has four subdivisions that are equally spaced throughout the surface, the adjacent surface has to have four subdivisions that are equally spaced throughout the surface. Figure 12 shows initial surfaces broken into smaller patch surfaces that have common boundaries with the adjacent patches. The surfaces have been rebuilt so all the surfaces have the same number of spans, and the isoparms all align.
[Figures 13 & 14] A simple texture map (top), shows the direction of the surfaces on a patch model (bottom).
By using a file-based texture map that defines the direction of UV parameterization, the surfaces that have been created can be reoriented so the UV coordinate space matches all surfaces, and the surfaces are facing the correct direction. Figure 13 shows a texture map that can be used to identify the direction of UV coordinates in a patch model. Figure 14 shows the surfaces of the model after the map has been applied. The goal is to get all of the surfaces to line up in a similar way and have the surface normals facing away from the model. This kind of texture map will show reversed surfaces quickly because the text will appear reversed. The U and V directions can also be quickly detected because the colors of the arrows indicate if the directions align between surfaces.
Patch Surface Alignment Tools
Certain tools in Maya and other modeling packages as well, are specifically designed to assist in creating and maintaining tangency between surfaces after the surfaces have been built. These tools are used after the initial surfaces have been setup and separated into smaller patches.
The purpose of the align surface tool is to modify two existing surfaces by creating positional, tangential or curvature continuity between them. Try to tweak the values in the option boxes before you finish the align operation. At first pass, the results given from the align surface tool can seem somewhat disappointing. But by adjusting the different values, you can get different results for the align operation.
Stitch edge aligns two adjacent surfaces and works much like align surface, but stitch edges allow the user to stitch partial surface edges to adjacent surfaces using a control along the stitched edge that adjusts the amount of the surface that aligns along the edge.
Global stitch works very differently than align surface. The process is very simple. Pick all of the surfaces you want to have aligned, then use global stitch. The problem with global stitch is that the surfaces do not behave the way they should all of the time. Global stitch does not maintain tangency between surfaces during animation setup and animation. If the settings are working, this tool will do a great job of keeping the surfaces tangent throughout production. Getting the tool applied correctly, however, can be tricky. Following are some rules for using global stitch:
- Always save before using global stitch. Maya allows for undo operations, but saving is still a good idea. Initial results appear satisfactory, but sometimes problems are discovered after it is too late to undo the operation.
- Use global stitch with the Keep Originals button off.
- Use global stitch only after the majority of the surfaces have been aligned using other alignment tools. Global stitch is the glue that holds the model together after it is animated. It is not the best tool for getting the surfaces to become tangent.
[Figures 1518] Attaching and detaching the four borders surrounding a surface.
Attach and Detach
When you have four adjacent surfaces that have been rebuilt to the proper subdivisions, you may have a condition where they cannot be easily aligned using the align or stitch tools. A simple solution is to use the attach tool to align the surface. The technique used here is to find a place where four surfaces come together, attach two adjacent surfaces (on the U side of the surface, for example), then detach at the isoparm where the surfaces attached, attach the surface on the other side (on the V side), then detach. Continue until you have attached and detached all four surfaces on all four borders. Figures 15 through.18 show the progression of attach and detach around a surface.
Attach-sculpt surface-detach is a variation of attach and detach. Often when you attach a surface, a ridge occurs where the surfaces come together. One way to get rid of this ridge is to smooth the surfaces that are attached before detaching them. The easiest way to edit these surfaces is to use the sculpt surface tool. This tool has a NURBS smoothing option that averages out the values of the CVs in the current selection.
Individual surfaces can be selected for editing with the sculpt surface tool, or individual vertices can be edited as well, using the Mask Unselected Vertices option before editing. The area that needs smoothing can be edited using the sculpt surface interactive brush, or an overall value can be set in the Max Displacement option box. Alternatively, the area can be smoothed using the Flood button. When you finish smoothing the points, detach the surface to restore the even surface layout.
Until now, the major reason for having a grid of surfaces that align has not been obvious. When you manipulate points on a surface to align with other points on adjacent surfaces, you can see why I use this approach.
The only points on a NURBS surface where you have direct control on the position of the surface is at the edges. Any other place on the surface will have CVs and hulls that pull away from the surface. You can easily change the shape of a surface in the middle of a surface by pulling points. But, unlike the vertices at the edges, pulling points in the middle of the surface provides less direct control of where exactly the surface will fall in 3D space.
An additional row of hulls are inside the boundaries of each NURBS surface. If you look at a NURBS surface, you can determine the number of hulls by counting the number of spans in the surface, and adding 2. Because I am creating a grid where edges of surfaces line up with the adjacent edges of surfaces, I can snap points from one surface exactly to points of the adjacent surface.
The alignment tools do not completely fix alignment on a five-cornered intersection. Attach-detach provides most of the alignment along the surface edges, but to get the last little bit, you just gotta pull points.
[Figures 1921] Snapping points together at a five-corner intersection.
In Figure 19, a five-corner intersection is shown where the vertices have to come together. By using a mel script, these vertices can be selected and snapped to their common center point (Figure 20). Further point snapping of points next to the corner points and simple point pulling results in a five-corner intersection with the surfaces that align (Figure 21). (The script used to snap these points is called JSnapCVsToCentre, written by Julian Mann, 1999, and can be downloaded from http://www.highend3d.com/maya/mel/.)
Modeling the Body
The head of this model required strict adherence to digitized reference because it had to match a puppet exactly from shot to shot. The body had to be modeled differently from the puppet to accommodate animation requirements, and the body did not have to look exactly like the puppet because the body of the puppet was not shown very often in the movie. Rhythm & Hues was commissioned to do the character because the film needed a digital version of Dino for shots that showed the body. Therefore, a more natural approach to modeling the body was taken. The steps that were used to model the body are similar to the steps used to model the head, but an important difference is the way the model was started. The digitized reference was used in a much looser way for the body than the head, as outlined in the following steps.
[Figures 22 & 23] The digitized reference data (left). NURBS primitive cylinders (right) were used to approximate the shapes.
- 1. The digitized reference data was used as a starting point (Figure 22).
2. Instead of copying and rebuilding curves from digitized data, rough NURBS primitives were used to approximate the position and layout of the reference data (Figure 23). NURBS sculpting of the primitive as a free-form shape was used to get the shapes of the legs and body. The transitions between the body and legs were also roughed-in. Using this technique, the NURBS primitives became the initial surfaces in the patch modeling process.
[Figures 24 & 25] The cylinder surfaces (left) were rebuilt to have matching span sizes. The surfaces (right) were modified to match isoparm direction.
- 3. Once the surfaces were the correct size and shape, the surfaces were rebuilt to get an approximate alignment between isoparms for the legs and body. The intent was to get the spans in the legs and body to be about the same size, not to get the isoparms lined up (Figure 24).
4. The surfaces were modified to get the isoparms to flow in the same direction. The majority of the work was done on the body to get the flow of the isoparms to go around the shoulders and hips of the character (Figure 25).
[Figures 26 & 27] The surfaces were detached (left) to create a network. The final surfaces (right) were created from the patch network.
- 5. Once the surfaces had the approximate flow of geometry going in the right direction and position, the surfaces were detached to create a network of surfaces (Figure 26). From this point, the model can be approached as a patch model.
6. Patch surface alignment tools and techniques were used to get the surface network created in the previous step to become the final surfaces shown in Figure 27. To create and maintain isoparm alignment and tangency, attach, detach and rebuild surface tools were used extensively. While this part of the process is taking place, it is important to keep looking at the reference material. While using attach and detach, it is very easy to stray away from the actual shape of the reference material.
[Figures 28 & 29] The surfaces (left) were cleaned up. The final body model (right) for Dino.
- 7. The surfaces were aligned and smoothed. Any gaps between surfaces, and non-tangent conditions were cleaned up (Figure 28). Detail in the hips and shoulders were added to match the detail in the maquette.
8. The final surfaces for the body, shown in Figure 29, show the addition of the feet. The detail in the hips and shoulders was smoothed out due to issues that arose during animation setup. These wrinkles were added later during animation when the scene called for wrinkles.
Because we have used surfaces that align on all sides, and have all of the isoparms that align, the surface to polygon conversion is very straightforward. You should, however, make all the surfaces single-sided, and make sure all of the surfaces are facing the right direction.
Low-Resolution Polygon Settings
There are two ways to control polygon conversion for creating polygon models from NURBS surfaces. One is to modify the settings in the Convert NURBS to Polygon option box. Start with General settings and select the Per Span # of Isoparams in 3D option. For a low-resolution model, the best setting would be one polygon per span. A mesh this low can be used for a wrap deformer as well.
Another way to control the resolution of a low polygon mesh created from a NURBS model is to copy all of the surfaces into another group, then rebuild all of the new surfaces to a lower resolution. Once this new lower resolution model is created, the same NURBS to Polygon settings described above can be used to create an even lower resolution mesh.
Sometimes NURBS models are used to create low-resolution proxy models that are later turned into subdivision models. The process to create a detailed character using this process for subdivision modeling is described in Chapter 13. These settings could also be used to create a low-resolution model for animation and to create a wrap deformer.
[Figures 30 & 31] The low-resolution model (left) created from the NURBS surfaces. The final high-resolution polygonal model (right) used for rendering.
It is common practice in all 3D animation production to create a low-resolution model that accurately represents the high-resolution model. These models are used for creating fast animation. The manipulation speed is really quick and the playback speed is must faster too. Figure 30 shows a low-resolution model created from the NURBS surfaces that could be used for animation.
A wrap deformer is commonly used for complex character setup for animation. A model created for this kind of deformer is a low-resolution polygonal mesh or a low-resolution NURBS shape that accurately describes the high-resolution model. The common practice is to bind the skeleton of the character to the wrap deformer, and then bind the high-resolution mesh to the wrap deformer. The wrap deformer can be weighted easily, so the binding to the skeleton is efficient and accurate. Because the wrap deformer is created from the surfaces of the high resolution mesh, the points along the adjacent surfaces where the mesh usually falls apart is bound by a common series of points that fall precisely where the points on the surface meet, ensuring that the mesh stays together at the correct places.
High-Resolution Polygon Settings
Using the exact setting options described previously, but filling in the number of subdivisions per span to a higher number, such as 3 or 4, creates a high density mesh for rendering as polygons. This is the process that was used to render this model, because the rendering pipeline at Rhythm & Hues only supports polygons, not NURBS surfaces.
The NURBS surface construction allowed for the proper placement of polygonal geometry for animation, texturing and setup. The resultant model was extremely clean and was fast to build because, of the NURBS controls. Figure 31 shows a shaded view of the final model.
When rendering using Maya, pay careful attention to tessellation settings. The best way to adjust settings is to use the Attribute Spread Sheet.
The settings that work best for patch models is the explicit tessellation option, which sets a specific number of tessellated polygons to be generated at render time based on the spans in the surface being rendered. When the spread sheet is opened, the column under explicit tessellation attributes should be highlighted then turned to on. It will then be necessary to scroll over the Number Per Span U column and Number Per Span V column and adjust the explicit settings to appropriate values for that scene.
For models that are not built with patch modeling techniques, adjusting the tessellation parameters for the entire model is a bad idea. However, surfaces in patch models usually have spans that are relatively equal in size across the model, which allows the tessellation settings to be set using the Number Per Span options for the entire model. It may be necessary to adjust the tessellation settings differently for different surfaces if the spans for those surfaces get unusually large or small compared to the rest of the model.
To learn more about character modeling and other topics of interest to animators, check out Inspired 3D Modeling and Texture Mapping by David Parrish; series edited by Kyle Clark and Michael Ford: Premier Press, 2002. 266 pages with illustrations. ISBN 1-931841-49-7. ($59.99) Read more about all four titles in the Inspired series and check back to VFXWorld frequently to read new excerpts.
Tom Capizzi (left), Kyle Clark (center) and Mike Ford (right).
Tom Capizzi is a technical director at Rhythm & Hues Studios. He has teaching experience at such respected schools as Center for Creative Studies in Detroit, Academy of Art in San Francisco and Art Center College of Design in Pasadena. He has been in film production in L.A. as a modeling and lighting technical director on many feature productions including Dr. Doolittle 2, The Flintstones: Viva Rock Vegas, Stuart Little, Mystery Men, Babe 2: Pig in the City and Mouse Hunt.
Series editor Kyle Clark is a lead animator at Microsoft's Digital Anvil Studios and co-founder of Animation Foundation. He majored in film, video and computer animation at USC and has since worked on a number of feature, commercial and game projects. He has also taught at various schools, including San Francisco Academy of Art College, San Francisco State University, UCLA School of Design and Texas A&M University.
Michael Ford, series editor, is a senior technical animator at Sony Pictures Imageworks and co-founder of Animation Foundation. A graduate of UCLAs School of Design, he has since worked on numerous feature and commercial projects at ILM, Centropolis FX and Digital Magic. He has lectured at the UCLA School of Design, USC, DeAnza College and San Francisco Academy of Art College.