More of Dem Bones
by
Raf Anzovin
It's
often assumed that you need a high-end package such as Softimage
or Maya to construct CG characters with advanced articulation. A
classic example is the title creature in Godzilla, articulated
in Soft with a system that automated such actions as movement of
the tail and the body's reaction to the feet. In this article, we'll
show you how to create a sophisticated bone system in Hash Inc.'s
Animation:Master 99, a $199 program.
In
Part I of our Animation:Master 99 tutorial ("Dem Bones,"
3D Design magazine, p. 34, June 1999), we looked at the basic
bone and joint construction of Dennis the Dog, a cartoon character
I created (star of Java Noir, winner of the "Best 3D
Cartoon" category at 3D Design's 1998 Big Kahuna Design
& Animation Contest). This version of Dennis (whose Java
Noir incarnation was created in NewTek LightWave) was modeled
with an unusual goal in mind: to combine cartoon proportions with
semi-realistic anatomical structures. In Part II, we'll complete
the setup of Dennis by discussing more advanced aspects of boning,
including control bone systems, automatic center-of-gravity placement,
and a way to create a single bone structure that can quickly switch
between low-res and high-res skins.
These
systems are more complex than the ones we discussed in Part 1. We
recommend that you download the help files for this article, which
include the fully articulated Dennis bone
system and a low-res proxy skin that you can play with and pick
apart.
The
Control Bone System
In
Part I, we set up a basic bone structure for Dennis. But these are
not the bones we'll actually use to animate him. Instead, we'll
set up a system of control bones, completely abstracted from the
actual geometry, that provide a higher level of streamlined control
over the lower-level bone and constraint system. The control bones
work like a set of carefully calibrated levers and cranks connected
to the lower-level bones; the constraints make sure that the body
holds together and animates correctly. Employing a higher level
control system eliminates the need to worry over such low-level
issues as what directions the joints are bending in or whether the
arm animation will be thrown out of whack by a new movement in the
pelvis; all this is taken care of for the animator, who only needs
to manipulate a few well-placed controls. In practice, this allows
a quick and spontaneous animation workflow.
A control
bone is the same class of object as any other Animation:Master 99
bone, with the same constrainability, but there are two important
differences. Lower-level bones (which we'll call geometry bones
for purposes of this article) are attached to geometry, while the
control bones are not. Also, control bones can be placed wherever
they are easiest to grab and movemeaning they can perform the
same function as nulls do in other programs. (Animation:Master 99
also has null objects, if you need them.)
To
begin, consider the model discussed in Part I. This is a fully articulated
creature with fully working joints. However, posing and animating
with the bones as they are currently designed is difficultthere
are too many bones, and they aren't easy to manipulate. That's why
a control bone system is needed.
Take
a look at Figure 1, which shows Dennis's complete control bone system.
This can be quickly roughed out (but not connected or constrained)
using the bone creation and placement techniques outlined in Part
I. Let's briefly tour some of its important features.
Figure
1. Dennis's control bone system. Note that control bones do
not have to be attached to any geometry, but can be placed
where it is most convenient to manipulate them.
|
The
overriding goal of this system is to give maximum control with the
fewest bones possible. For example, the spine is controlled by only
two control bones: the pelvis control bone and the torso control
bone. Similarly, there are no control bones at all for the legs;
control bones for foot placement take care of all the leg control.
Unlike
the legs, there are control bones in the arms themselves.
This is because the arms, with their more complex motions, will
need to be manipulated with forward kinematics (FK) as often as
with inverse kinematics (IK). Note that the arm control bones are
not parented to the Torso control bone or to any other bone,
as they would be in an ordinary hierarchy. The arm control bones
float freely, which allows them to be used as IK handles that will
stick in place as the body moves. The control bones themselves are
capable of FK, but can also be manipulated via IK by moving the
whole control-bone chain of the arm.
Note
also that there is one main foot target, placed down at the ball
of the foot, and that there are three others parented to the main
foot target, one at the toe and two at the heel. This is so the
whole foot can be moved as one, while still retaining separate controls
for toe-raising, heel-raising, and heel rotation.
With
many character setups, if you try animating the head first to fit
with a certain attitude, any animation subsequently applied to the
torso changes that head movement, since the head is parented to
the torso and inherits its rotation. With Dennis's constraint system,
however, any part of the body can be animated at any time, independently
of the others, and still retain its rotation and attitude even when
its parent is animated. This system allows movementbut not rotationto
travel up the hierarchy. You can pose, say, the torso in any way
you please, and rotating the pelvis does not effect it at all, except
to reposition the chain slightly. The shoulders continue to point
in the same direction no matter what is done to the Pelvis. We'll
see how this works as we continue setting up the control bones system.
Abstracting
and Attaching the Control Bones
Once
the control bones have been created inside the original Dennis model,
they must be moved out. Since we're going to make them completely
abstract from the actual Dennis geometry, they can't be in the same
model or have any permanent relationship to the underlying geometry
bones.
Create
a new model, which we'll call the Dennis Control Bones model. It
will appear below the Dennis model in the Project Workspace. Copy
the control bones from the Dennis model to the Dennis Control Bones
model by dragging them from one to the other. Note that grabbing
a bone at the top of the chain brings all its child bones with it.
Once all the control bones have been copied, delete them in the
original model.
Now
create an Action for the Dennis Control Bones model. We'll call
this the Dennis Full Action, since it contains the full Dennis geometry
(in contrast to the Dennis Proxy Action, a substitute skin with
much reduced geometry, which we'll discuss later). Next, create
an Action Object for the original Dennis model. An Action Object
is an object whose geometry can be temporarily embedded within an
Action. This allows you to easily add and remove geometry from your
character, just as motion can be added or removed by applying an
Action. All of Dennis's geometry is being added by Action Object
so that it can be removed and swapped for other geometry at any
time.
Drag
the original Dennis model onto the Dennis Full Action. It will appear
in the Action as an Action Object (see Figure 2), which will be
added temporarily to whatever object the Action is applied to.
Figure
2. The Dennis geometry is embedded in an Action as an Action
Object.
|
Now
attach the geometry bones in the Action Object to the control bones
in the Dennis Control Bones model. We'll begin with the spine and
progress to the rest of the bone assemblies.
In
the Dennis Control Bones model, hide everything but the Torso and
Pelvis control bones. In the Dennis model, hide everything except
the five spine bones. Drag the Dennis model Action Object to the
side so that the spine bones are next to the spine control bones,
but not on top of them, as in Figure 3. Now we're ready to apply
constraints.
Figure
3. Diagram of the spine control bones setup. The blue arrows
represent the Orient Like constraints attaching the spine
to the Torso and Pelvis control bones.
|
We
want the upper spine geometry bone to inherit the rotation of the
Torso control bone. The geometry bones in the middle of the spine
need to blend smoothly into this rotation. This is best accomplished
using constraint influence values. We can orient all the spine geometry
bones (except the bottom one) like the Torso control bone with Orient
Like constraints, using diminishing influence values (as discussed
in Part I). The second spine geometry bone gets a value of 75%,
the next below it 50%, and so on. Finally, the bottommost spine
geometry bone should be oriented like the Pelvis control bone, at
full intensity. This will produce a spine that always blends smoothly
between the values of the two control bones. Since the control bones
themselves are not attached to each other in any way, it's easy
to manipulate, say, the torso first without worrying about the pelvis
rotation, which can be added later without disturbing the first
motion. The underlying geometry bones will still hang together.
The head/neck and tail control bones are attached in exactly the
same way.
Next,
we'll attach the leg control bones, but first we'll need to know
a few things about the way Animation:Master 99's IK constraints
works. Most programs with good IK tools have controls like Pole
Vectors and single-plane IK systems, which allow IK chains to be
set up so that they always bend as expected.
Animation:Master
99 has similar controls, but they are handled differently. The key
to controlling a kinematic constraint is to know that Aim At and
Aim Roll At constraints can be added to any bone in the middle of
the chain and that these constraints will affect how the whole chain
bends. For instance, in a two-bone chain the second bone would be
kinematically constrained to a IK target bone, and an Aim At constraint
would be used to constrain the first bone to another target. The
joint in the middle would always predictably point at that target.
Since the Aim At target can be parented to the IK target bone, it's
easy to construct a very intuitive IK manipulator out of a few bones.
Add in an Aim Roll At constraint to the Aim At target, and you have
a chain limited to 180 degrees on one axisin other words, a single-plane
chain. This kind of chain is perfect for elbows and knees, which
essentially bend along only one axis.
Figure
4 shows the leg constraints. The assembly includes some additional
target bones to keep the legs and feet in line, which are added
around the control bones and then hidden.
Combining
IK and FK
Rather
than using simple IK, the arms use a combined system in which IK
positional keyframes and FK rotational keyframes can be used simultaneously,
by either rotating the arm bones (for FK) or grabbing them and moving
them around (for IK). Under this combined system, the arm rotation
can be made independent of the rotation of other bones in much the
same way as the torso's rotation was isolated from the rotation
of the head, and the elbow can be made to point in an anatomically
correct direction at all times, whatever is done to the arm bones.
Figure
4. Diagram of the leg constraints. The pink arrow represents
a Kinematic constraint, the green arrows Aim At constraints,
and the orange arrows Aim Roll At constraints.
|
With
the arms, we want to keep the ability to use FK and IK simultaneously,
so it's necessary to have a full set of arm control bones (Figure
5) instead of just an IK target at the end. However, since the chain
is free-floating, it can simply be picked up by the elbow and dragged
away, acting as an IK target.
Figure
5. Diagram of the arm control bones constraints.
|
In
this case, the hand is the actual target, and the position of the
Aim At target is derived, by means of a complex constraint system
shown in Figure 6, from the shape of the arm control bones curve.
This has the added benefit of making it possible for the arm geometry
bones to be pulled around in any way in FK, but never break the
elbow. Since the target for the arm geometry bones is always in
exactly the place the elbow is pointing, the elbow always points
in an anatomically correct direction no matter what shape is formed
by the arms. This assembly forces the roll of the upper arm geometry
bone to constantly point in the same direction as the curve of the
elbow joint. This constrains the elbow joint to rotate 180 degrees
in a single axis, even as the shoulder joint is forced to twist
to keep the hand in the appropriate place. The result is an anatomically
realistic elbow joint, no matter how the arm control bones are bent.
The red arrows represent Translate To constraints. The gray arrows
represent parenting relationships.
Ordinarily,
when switching from FK to IK and back, the many internal changes
in the hierarchy would force the animator to wade into the complexity
of the underlying control and constraint system. We'll create a
set of Pose Sliders that reaches into the guts of the system and
changes specific elements, without requiring you to address low-level
issues.
Figure
6. Elbow control bones assembly. Note the elbow target near
the top of the screen.
Figure
7. Arm Pose Sliders for IK. Sliding these back and forth varies
the arm constraints, so that you can combine IK and FK motion.
|
Sometimes
you'll want the arms to move with the body, and sometimes you'll
want them to float freely (when, for example, the hand needs to
maintain a specific rotation). This can be easily achieved by applying
a Translate To constraint to the shoulder control bones in a Pose
Slider (see Figure 7). At 0%, the arm sticks where it is when you
move the shoulder; at 100%, the arm follows along with the shoulder.
Similarly,
you may want the arms to move exactly like a normal parented FK
hierarchy without any other kind of behavior. A combination of Translate
To and Orient Like constraints contained in a Pose Slider makes
this possible, and it can be turned on and off at any time.
Creating
Facial Controls
As
the final step in attaching the geometry, we need to complete the
facial controls. In Part I of this article, facial controls were
created using bones and Smart Skin, without the use of Pose Sliders.
One important reason for this was to ensure that the facial geometry
bone rotation values could be transferred from the Dennis Control
Bones model to the Dennis Full Action Object.
To
do this, we need to copy all the facial bones from the Dennis model
to the control bones model and create Orient Like and Translate
To constraints that connect the facial geometry bones directly to
their counterparts in the control bones model. This can be accomplished
using the bone duplication method discussed above. When all the
geometry bones are attached to their respective control bones as
shown in Figure 8, the last step is to construct a Pose Slider that
moves the facial control bones. Then the control bones can be hidden.
The end result is a simple Pose Slider interface that can influence
the facial expression of any skin popped into the control bone setup
(Figure 9).
Figure
8. The arm in action.
|
Figure
9. Facial expressions controlled by Pose Sliders.
|
Swappable
skins
At
this point, we can see how the separation of control bones and geometry
bones works. First, hide all the bones in the original Dennis model.
Open a new Choreography and drag the Dennis Control Bone model into
the window. It appears as a completely empty model. Now apply the
Dennis Full Action to the model. Instantly, the Dennis geometry
will appear. Go into Skeletal Mode and play with the control bones.
Move them around in any way you want: the geometry will mimic their
movement exactly. Deleting the Action and the Action Objects entry
makes the geometry disappear. Applying it again will make it reappear,
in the position dictated by the control bones. Other "skin"
Actionsfor example, a low-res "proxy" skin or a skin
with different surfacescan be swapped in or even layered with
the same ease.
In
high-end programs, when animators need to manipulate very complex
characters with real-time feedback, a low-resolution "proxy"
model is often used for animation, then a full-res version is swapped
in for the final tweaking and rendering. In Animation:Master 99,
we can switch between a proxy and a full resolution Dennis model
simply by dragging and dropping an Action. Figure 10 shows Dennis
fully posed with control bones.
Figure
10. Dennis fully posed with control bones.
|
Figure
11 shows the swapped-in proxy skin. It retains the basic Dennis
shape, yet, because it contains only about 400 patches (in contrast
to the full Dennis model's 2000 patches), it is much more responsive
to animate.
Figure
11. Dennis after the full geometry has been swapped for the
proxy.
|
Creating
a Smart Auto-Center-of-Gravity System
Now
we have a working Dennis setup that can be used in a Choreography
with either the proxy version or the full skin. All that's left
is to add an uppermost layer of "smart" control bones
that can act automatically when necessary. We'll concentrate on
Dennis's most complex "smart" assembly, the auto center-of-gravity
(AutoCG) system.
It's
standard practice to set up a character so that the feet are anchored
through kinematic constraints by extra bones or nulls not parented
to the root of the hierarchy. This enables the animator to move
the body around and shift the character's weight without worrying
about where the feet arethey'll always stay anchored in the same
place unless pulled off the ground.
With
Dennis's AutoCG system, we'll create a whole level of control above
this one. The foot-anchors not only anchor the feet, they also interact
with and control the position of the body. Pulling the foot forward
under this system automatically pulls the body forward to maintain
Dennis's center of gravity. If pulled far enough, the heel of his
back foot starts to lift off the ground, bending the toes in the
same way that toes bend in a walk cycle before the "kick off"
position when a foot is raised off the ground. The bobbing-up-and-down
movement of the body created by a walk is automatically added here,
since the body always tries to keep itself at a height where both
feet have just enough room to reach the ground.
The
AutoCG system can be turned on and off at any time, and the internal
functioning of the system can be adjusted easily with controls for
Leg Stiffness and Ground Height, among others. None of these automatic
functions takes control away from the animator, because the animator
can override or adjust the automatic placement at any time. However,
they do make most animation jobs considerably easier.
We'll
create all the bones used in the AutoCG system in a new model and
bring them in by Action Object, just as with the two Dennis skins.
This will keep them separated from the control bones we made before.
Basically,
the AutoCG system consists of a two-bone "stride measuring"
chain, which is stretched between two "stride" control
bones by a kinematic constraint. The two stride control bones must
form a pyramid, the top of which is at the pelvis of the character.
The whole thing is kept pointing upright by a "center of gravity"
control bone, which is put immediately between the two stride bones
by means of Translate To constraint to each of them. The center
of gravity control bone has a child bone, way up above the setup,
to which the stride measuring chain is pointing. This keeps the
chain upright at all times.
In
a simple application of the CG system, the two stride control bones
would Translate To the foot targets and then Translate To the Upper
Body control bone right at the top of the pyramid. This would produce
a satisfactory result when moving the feet around on the X and Z
axesthat is, across the groundwithout being lifted. The body
would always place itself right between the positions of the feet,
and would adjust its height so that the feet would have just enough
room to touch the ground. Try this by bringing the AutoCG model
into the Dennis Proxy action as an Action Object and applying these
constraints. Pull the foot control bones around and see the result.
This simple setup, however, causes trouble when the foot targets
are moved up on the Y axis (Figure 12).
Figure
12. The basic stride measuring setup has a problem when the
feet are lifted above the ground.
|
Because
the setup always maintains the same distance between the foot targets
and the body, the knees can never bend at all. The legs always remain
stiff, and the body is pushed off center. Try pulling the feet up
and observe this effect.
To
solve this problem, apply a Translate Limits constraint to the stride
control bones. This type of constraint allows the movement of any
object to be limited easily. In this case, reduce the Y axis limits
to 0,0. This will prevent the stride bones from moving above the
ground plane.
Now
move the feet around. The stride control bones follow the feet on
the X and Z axes but not the Y. This produces a much more realistic
body movement, since the body is not influenced at all by the Y
axis foot movement. (Figure 13.)
Figure
13. Stride measuring setup with Translate Limits constraint.
The improved system works better, but produces robotically
smooth movement.
|
However,
the body is still not moving in a naturalistic way. What's missing
is the movement that the body does have to make to respond
to the movement of the foot on the Y axis. Stand up and lift your
own footyou have to shift your center of gravity to keep from
falling. We'll create an automatic system that takes into account
the Y-axis foot movement and allows the animator to control the
amount of influence it has over the body by using both constraint
systems discussed above at once, and blending between them with
a Pose Slider.
Figure
14 is a diagram of the full AutoCG control bones assembly showing
the two "stride measuring pyramid" systems right next
to each other. The "stiff knee" system has its stride
control bones Translated To the foot control bones, and the "flex
knee" system has its stride control bones Translated To the
stride control bones of the "stiff knee" system, but with
a Translate Offset applied. Two extra control bones are used as
intermediaries to allow the Upper Body control bone to be attached
and unattached from the system by Pose Sliders.
Figure
14. Complete AutoCG Assembly diagram. The two triangular bone
assemblies are the stride-measuring systems. The assembly
on the right is the "flex knee" system, and the
assembly on the left is the "stiff knee" system.
The broken red arrows represent Translate To constraints to
which Translate Limits has been applied. The hollow red arrows
represent Translate To constraints constrained within a Pose
Slider.
|
We
also need two Pose Sliders containing Translate To constraints (Figure
15). The first attaches the Upper Body control bone to the "flex
knee" system and is used to turn the whole system's influence
up or down. The second Pose Slider translates the "flex knee"
system's extra control bone to the "rigid knee" system.
Turning this slider's influence up just a little adds a lot of life
to what otherwise would be rather mechanical motion.
Figure
15. Pose Sliders for the AutoCG system.
|
As
the final touch, we'll add a control to set the height that the
Translate Limits constraint sees as ground level. This is useful
for making Dennis walk up stairs or stand on raised platforms. To
create the "ground level" control, create a null or bone
behind Dennis named "Ground Level." In the Dennis Proxy
and Dennis Full Actions, create a Translate To constraint for the
AutoCG bones Action Object itself to the "ground level"
null or bone. Figure 16 shows a pose that employs all the capabilities
of the full AutoCG system.
Figure
16. Fully articulated Dennis model with AutoCG system in a
pose.
|
Lastly,
Figure 17 provides a color key to constraint types.
Figure
17. Color Key to Constraint Types.
|
Conclusion
This
article has merely scratched the surface of what can be done with
boning in Animation:Master 99. Note that the techniques we used
in this tutorial aren't limited to this particular character or
character design; you can apply the basic jointing, constraining,
and control-bone methods described here to any bipedal characteror
adapt them to quadrapeds and other more exotic body designs. In
fact, there are as many ways to bone a character as there are characters;
the creative boning techniques possible in Animation:Master 99 can
help you animate all of them.
Animation:Master
99 (Version 7.0), $199; network version $699
Hash Inc.
360-750-0042
www.hash.com
Raf
Anzovin is an independent 3D character animator. His animation Java
Noir won the 1998 3D Design Big Kahuna award for best 3D cartoon.
Contact Raf at [email protected].
|