554 11. Animation Systems
from the modifi ed local pose. Obviously, a post-processing operation
that does not require global pose information can be done between stag-
es 2 and 3, thus avoiding the need for global pose recalculation.
- Matrix palett e generation. Once the fi nal global pose has been generated,
each joint’s global pose matrix is multiplied by the corresponding in-
verse bind pose matrix. The output of this stage is a palett e of skinning
matrices suitable for input to the rendering engine.
A typical animation pipeline is depicted in Figure 11.44.
11.10.1. Data Structures
Every animation pipeline is architected diff erently, but most operate in terms
of data structures that are similar to the ones described in this section.
11.10.1.1. Shared Resource Data
As with all game engine systems, a strong distinction must be made between
shared resource data and per-instance state information. Each individual character
or object in the game has its own per-instance data structures, but characters
or objects of the same type typically share a single set of resource data. This
shared data typically includes the following:
- Skeleton. The skeleton describes the joint hierarchy and its bind pose.
- Skinned meshes. One or more meshes can be skinned to a single skeleton.
Each vertex within a skinned mesh contains the indices of one or more
Outputs
Inputs
Decompression
and
Pose Extraction
Blend
Specification
Pose
Blending
Skinning
Matrix
Calc.
Global
Pose Calc.
Local Pose
Rendering
Engine
Matrix
Palette
ProcessingPost -
Skeleton
Clip(s)
Local
Clock(s)
Global
Pose
Game Play
Systems
Figure 11.44. A typical animation pipeline.