Game Development Reference
Using multiple channels
If you want a character to say lines that synchronize to a soundtrack, then
you must first record the dialogue, then use a sound editor to analyse the
sound, calculating at what time the mouth must form the shapes that
apply to particular phrases. If you have carefully modelled the mouth
positions and are ready to create some breathtaking character animation,
then it will be frustrating to know that if you want to raise the character's
eyebrow or shut their eyes, you will have to model an entire set of heads
with the eyes shut and all the different mouth positions. Without this set
your model cannot both talk and blink at the same time. Not a very
satisfactory state of affairs. This is when groups come to the rescue.
If you move a set of points around the mouth but make no movement
at all to the eyes, then dealing with this set of targets independently of the
eyes will have no effect on the eye movement. Similarly, a set of targets
that move the vertex locations in the eyes and no other points can be
handled independently. One way to achieve this is to create a subset of
the mesh that includes point indices into the target mesh or pointers to
vertices in the target mesh along with the morph targets' vertex locations.
The vertex locations of the final mesh are a combination of the original
vertex locations and the deformations created from interpolating the key
positions for each group. This technique has much to commend it, since
it gives the animator a great deal of control in a very intuitive way without
any significant performance hit.
In this chapter we learned how to allow the animator to use carefully
modelled shape animation within a real-time engine. Using morph targets
allows animation at the vertex level in a highly controlled way and allows
for the repetition of regularly used shapes. It doesn't suffer from a great
performance hit, since we are dealing with transformations at the vertex
level rather than the pixel level. A 2000-polygon character rarely uses
more than 300 vertices in a face. The transformation of these 300 vertices
takes a small fraction of the time it takes to paint a 640
480 pixel display.
It is worth adding morph facilities to any character animation engine for no
other reason than to allow for the manipulation of faces and hands.