Game Engine Programming 2 Week 6
Game Engine Programming 2 Week 6
OBJECTIVES:
Local and Global Pose Transformations: Recall from last time that, given a joint j
(not the root), its parent joint is denoted p(j). We assume that each joint j is
associated with two transformations, the local-pose transformation, denoted
T[p(j)←j], which converts a point in j’s coordinate system to its representation in its
parent’s coordinate system, and the inverse local-pose transformation, which
reverses this process. (These transformations may be represented explicitly, say, as
a ×4 4 matrix in homogeneous coordinates, or implicitly by given a translation
vector and a rotation, expressed, say as a quaternion.)
Week 6: SKELETAL ANIMATION AND SKINNING / PROCEDURAL / GENERATION
Motion Capture: For the common motion of humans and animals, the
easiest way to obtain animation data is to capture the motion from a
subject. Markers are placed on a subject, who is then asked to perform
certain actions (walking, running, jumping, etc.) By tracking the markers
using multiple cameras or other technologies, it is possible to reconstruct
the positions of the joints. From these, it is simple exercise in linear
algebra to determine the joint angles that gave rise to these motions.
Week 6: SKELETAL ANIMATION AND SKINNING / PROCEDURAL / GENERATION
Event triggers: These are discrete signals sent to other parts of the game
system. For example, you might want a certain sound playback to start with a
particular event (e.g., footstep sound), a display event (e.g., starting a particle
system that shows a cloud of dust rising from the footstep), or you may want
to trigger a game event (e.g., a non-playing character ducks to avoid a
punch).
Week 6: SKELETAL ANIMATION AND SKINNING / PROCEDURAL / GENERATION
Skinning and Vertex Binding: Now that we know how to specify the
movement of the skeleton over time, let us consider how to animate the
skin that will constitute the drawing of the character. The first question
is how to represent this skin.
Week 6: SKELETAL ANIMATION AND SKINNING / PROCEDURAL / GENERATION
Matrix palette: In order to blend every vertex of the model, we need only one vertex
for each joint of the skeleton, namely the skinning matrices Kj(t). Recall that a
skeleton will have perhaps tens of joints, while it may have hundreds of vertices.
Assuming that the joint are indexed by integers, the palette can be passed to the GPU
as an array of matrices.
Vertex information: Each vertex is associated with a small list of joint indices and
weights. In particular, we do not need to associate entire matrices with individual
vertices.
Week 6: SKELETAL ANIMATION AND SKINNING / PROCEDURAL / GENERATION
Frequency: The number of crests per unit distance, that is, the
reciprocal of the wavelength