CMSC 425
Dave Mount & Roger Eastman
CMSC 425: Lecture 10
Skeletal Animation and Skinning
Reading:
Chapt 11 of Gregory,
Game Engine Architecture
.
Recap:
Last time we introduced the principal elements of skeletal models and discussed forward
kinematics. Recall that a skeletal model consists of a collection of joints, which have been
joined into a rooted tree structure. Each joint of the skeleton is associated with a
coordinate
frame
which specifies its position and orientation in space. Each joint can be rotated (subject
to sum constraints). The assignment of rotation angles (or generally rotation transformations)
to the individual joints defines the skeleton’s
pose
, that is, its geometrical configuration in
space. Joint rotations are defined relative to a default pose, called the
bind pose
(or
reference
pose
).
Last time, we showed how to determine the skeleton’s configuration from a set of joint angles.
This is called
forward kinematics
. (In contrast,
inverse kinematics
involves the question of
determining how to set the joint angles to achieve some desired configuration, such as grasping
a door knob.) Today we will discuss how animation clips are represented, how to cover these
skeletons with “skin” in order to form a realistic model, and how to move the skin smoothly
as part of the animation process.
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 repre-
sented 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.)
Recall that these transformations are defined relative to the bind pose. By chaining (that is,
multiplying) these matrices together in an appropriate manner, for any two joints
j
and
k
,
we can generally compute the transformation
T
[
k
←
j
]
that maps points in
j
’s coordinate frame
to their representation in
k
’s coordinate frame (again, with respect to the bind pose.)
Let
M
(for “
Model
”) denote the joint associated with the root of the model tree. We define
the
global pose transformation
, denoted
T
[
M
←
j
]
, to be the transformation that maps points
expressed locally relative to joint
j
’s coordinate frame to their representation relative to the
model’s global frame.
Clearly,
T
[
M
←
j
]
can be computed as the product of the local-pose
transformations from
j
up to the root of the tree.
Meta-Joints:
One complicating issue involving skeletal animation arises from the fact that dif-
ferent joints have different numbers of degrees of freedom. A clever trick that can be used
to store joints with multiple degrees of freedom (like a shoulder) is to break the into two or
more separate joints, one for each degree of freedom. These
meta-joints
