Modeling 2D characters using XSI
For the past couple of years now, my company has specialized in using 3D
software to recreate the look of 2D animated characters. Even though there
are a lot of toon shading type solutions out on the market, our approach has
always been to create the character as flat animated characters and use the
2D medium to its fullest advantage. If you look at old Hanna Barbera cartoons,
the 2D characters exist in such a way, that they could never be constructed
in 3D without losing something in the conversion. It is impossible to stay
on model with 3D representations of these characters, because the artists
take many liberties when creating the variety of poses and angles the characters
are viewed at. Many artistic cheats are employed to make the characters work
from situation to situation. If you look at many of the limited animation
type characters of 60's and 70's prime time fame, you notice that they tend
to be shown from one or two angles. A ¾ left or right is usually chosen for
composition purposes, as is a profile or front on view. The creator of these
characters, never intended them to be viewed from any other angle. They simply
wouldn't be recognizable from a top view or rear view. In the following tutorial,
we will create a 2D flat character.

Tim
is a character that was created by the folks at
Honkworm
International He is a part of their popular Siliconites series, a Flash
based cartoon that is kind of Seinfeldish in nature. These types of characters
are very versatile, and utilize many of the traditional tricks that have made
2D animated characters vivid and appealing for so many years now. We will not
be using any toon shading, as it doesn't allow for the precise control of the
ink line that is needed for these types of characters. Our methods will be simple
and effective, and offer far more in the way performance than other automated
solutions.
Part 1 - templating the reference image(s)
Drag and drop the following image into an XSI viewport to download the reference
drawing.
When
you are done, open up the front rotoscope view, and load the image into your
rotoscope. Before you begin rotoscoping, use the Z key to zoom the grid
out a little so that the image is a little larger in relation to the grid spacing.
When
you are satisfied with your image to grid ratio, lock the relationship by clicking
once on the magnifying glass icon in the front viewport.
The
first thing I usually do when importing an image for rotoscoping is to trace
off all of the curves of the character using Create>Curve>Draw CV Nurbs.
I trace all of the features using Nurbs curves, until I have recreated the entire
character in the 3D program.
When
you have finished tracing all of the various parts, multi select each of the
curves, and make them into a group by clicking the group button under the edit
menu. Name the group CHARACTER TEMPLATE. In an explorer, click on the
icon to the left of the group to bring up the property page for the group. In
the pull down menu for the selectability option, make the group unselectable
by choosing 'do not allow selecting members'
Turn
off the rotoscope view, by clicking on the eyeball icon in your front view and
unchecking the rotoscope option. You should now only see the greyed out splines
in your viewport. This step of templating splines isn't absolutely necessary,
but I find that interaction is much quicker when I use the templates to build
surfaces as opposed to the roto image.
Part 2 - constructing the character
Next, you need to determine whether to use Polygons, or NURBS. If your character
has parts that will not need to deform, I recommend using Polygon Meshes,
as you can make some complex forms in a relatively short period of time. If
you are building deformation areas, like legs, torsos, heads, and arms, I
would stick with NURBS surfaces as they almost always envelope more reliably.
I've always found that I require less tweaking to get the look I need with
NURBS. As far as constructing your characters parts go, I like to stick with
open ended lofted surfaces. If you have your construction curves converge
in the U or V direction, you'll end up with CV bunching at the poles, a nightmare
to deal with when you're trying to get your surface looking just right

Start
off building the torso of the sample character by drawing a CV NURBS curve along
one side of the character. Make sure you place the points in important areas
where you need flexing. Use the templates as a guide for your curve. Don't be
too stingy with your points either. Since you're dealing with flat 2D surfaces,
your characters will end up being much lighter in terms of an end poly count.
When you've finished drawing the first curve, duplicate it (Ctrl D) and
use your M hotkey to move the duplicate curves points to create the curve for
the other side of the torso.

When
you've finished, loft the 2 curves together using create>surface>loft.
Select each of the curves in turn, and then right click to loft them together.
In the pop up box, add subdivisions to your torso in the U or V direction to
fill out the interior of the surface. If you are only using the two guide curves
as your torso, you definitely won't have the control over your patch that will
be needed when adding the skeleton later. After you've added enough interior
rows of points, sculpt them to follow some sort of body contour, just as you
would do for a 3D character. This won't effect the look of the surface, but
will allow for better skeleton deformation at the enveloping stage. Pull and
push the points at the top and bottom of the open ended loft to create the contours
for the neck and bottom of the characters shirt. Once you are satisfied with
your surface, freeze the operator stack, by clicking 'freeze' found under the
edit menu. Points can be added later if necessary. Build the rest of the body
parts in this manner, lofting and adding rows of points into the form. Every
object on the body can be built in this way. When all of the pieces are complete,
remember to freeze the operator stack. After that, you can delete your construction
curves or group them and hide them using the groups property page options.

Part 3 - Cel Levels
Just like in limited 2D animation, your characters different parts will be
animated on separate levels. The head may be on a lower level, while the mouth,
eyes, and facial features may be on levels above the head. Levels became common
place in 2D animation in the 60's when budgetary constraints limited the quality
of cartoon shows being created. If a character comes to a held cel in a pose
of fright, some of the body parts may be frozen holds, while others still
move. The head level may be a hold, but the eyes, may still be blinking, or
moving around, and the mouth may be gaping like a guppy. Held levels, mean
less drawings for the animator, which ultimately brings down costs in production.
The other benefit to held cels was that there was no jittering in the quality
of a line as it is played back on film. If an animator had to redraw the same
held pose, imperfections would become readily apparent when played back.
In 3D, we take the essence of the cel level, and utilize it in much the
same way to save time and money in production. Unlike full 3D animation, flat
2D characters can have dead holds, without breaking the illusion that your
character is a living, breathing entity. My guess is that it is the lack of
depth in the characters that allows for this to work. The Animation Mixer
in XSI, gives us a great deal of flexibility when working with levels, more
on that later.
To place the various parts of your character onto separate levels, decide
which body part is going to be the base level from which you offset the rest
of the character. I usually designate the torso as the basis for offsetting.
Since all of your characters parts were built in the front view, they should
all be lying at translation values of 0 on the Z axis. Have your torso remain
at 0 on the Z axis and move the remaining body parts forwards or backwards
along the Z axis to create the different cel levels. At this stage, be careful
that you don't move a layer too far forwards or backwards in Z as this may
cause problems when animating later on. Separating each level by a value of
0.3 in Z works well for me

Because
the needs of your characters will differ with each scene, I am hesitant to list
which body part should be in the front and which body part should lie behind,
but generally I follow the following model:.
From Top Level to Bottom Level
Lips, BrowsNose, Eyes, Teeth, Hair (bangs,front hanging strands)
Tongue
Mouth hole
Head shape
Ears
Hair (rear strands, ponytails, locks, etc…)
Neck
Shirts, Tops
Arms
Hands
Fingers
Torso (can be interchanged with arm parts if the character clasps its
hands behind its back, alternatively, you may choose to place arms on either
side of the torso level if the character is walking in ¾ or profile.
Pants
Legs
Feet
Toes At any time, the preceding levels can be interchanged, by no means
is this a list that is set in stone.
Part 4 - Adding Ink Lines
So far, you've created the general shape of the character, albeit gray and
drab looking. The next step is to give the character the weight and finalform
it needs by adding the ink lines. In XSI, you would apply this effect to full
3D characters by using a combination of the toon material shader as well as
the toon lens shader. With 2D characters, however, the solution is much simpler.
Select and duplicate your torso object. Move the duplicate object .05 of a
unit in Z behind the original. To create your ink effect, use the M key to
pull the points of the duplicate object, out from the original. You should
end up with a surface that is slightly larger in size than the original torso


The
trick to creating a good ink line is to determine where the lines weight or
thickness should be allocated. I prefer to vary the thickness of the ink line
around the silhouette of the character, sometimes giving thickness in rounded
areas, and thinning the line along hard edges. It all depends on the needs of
your shot, but the beauty of this is, that you have full control of this oft
looked over effect. In areas where body parts attach, such as in the arms to
the torso, or the ears to the head, you can tuck the ink line into its parent
surface to create seamless attachment points. Its all quite versatile. Later
on when you envelope the character, you'll find that the line will actually
animate in thickness as the character hits new poses. It comes quite close to
replicating the process that goes into traditional 2D inking. Go ahead and create
the rest of the ink lines for your character, just remember to offset them back
from the original parent object, or you'll wind up with artifacts where the
two surfaces intersect. Use a small offset, so that the ink lines don't intersect
with any of the other levels.
When
you're happy with your ink line modeling, multi select all of the ink lines,
and create a group called INK_LINES. Select the group in an explorer
and apply a material to the group by clicking Get>Material>Simple Phong.
I use a simple phong material, because I don't need to worry about having transparencies,
reflections, or refractions on the ink line objects. For now, make your materials
diffuse Black, and turn your specular RGB values down to 0.
I would also disable the ambient effect on the material, by turning the scenes
ambience to RGB values of 0,0,0. Do this by switching over to the render module,
and clicking modify>ambience. Drag all of the sliders values to 0, by
holding down Ctrl and dragging a single slider.
Preview
your character.There is still much work to be done. Paint, Texturing, skeletons,
and rigging have yet to be applied, but Tim is starting to come together. To
complete the modeling stage, give the main pieces, such as clothing, skin, and
shoes, simple Phong materials.
In
the next couple of tutorials, I will cover enveloping, rigging and animating
the 2D character. We will pay special attention to the different kinds of techniques
needed to make these types of characters work. We will discuss replacement animation,
custom parameters, shape animation and linking, specific limited animation techniques
and conversion to Flash format
Modeling
2D characters using XSI was written by Adam Sale. Adam is a Technical Director
and co-founder of Joncrow Entertainment. He can be reached at
adam@joncrow.com