Game Development Reference

In-Depth Information

13.2.3 Creating a Deformation Stack

A chain of deformers (or a stack) is a powerful thing. With it, artists are free

to create a flexible combination of deformations to achieve almost any desired

effect. This simple approach is what has enabled the amazing advances in offline

character deformations we see in films and television.

There are two hurdles that prevent this paradigm from being adopted into

real-time graphics architectures. First is the problem of finding the extra compute

cycles needed by per-point calculations on high-resolution meshes. Due to the

rapid advancement of many-core processors, this limitation should soon vanish.

The second impediment comes from a lack of understanding exactly how to

construct such a system and what advantages this system might provide to a mod-

ern animation pipeline. The remainder of this article is an attempt to demys-

tify these algorithms for programmers who would like to transition from simple

smooth skinning, to more advanced filmlike creature effects.

13.3 Smooth Skinning

Smooth skinning (sometimes called
matrix palette
skinning,
enveloping
,
skele-

tal subspace
deformation, or simply
skinning
) is a staple algorithm in computer

graphics. It is in use in almost every contemporary real-time graphics environ-

ment. As a means of articulating models with skeletal animation, skinning is

unrivaled in its simplicity and, subsequently, its adoption. What follows is a re-

view of the algorithm, its limitations, and suggestions for improvements. For a

more in-depth discussion of the classical skinning algorithm, see [LAR01].

13.3.1 The Algorithm

We take as input a point cloud (skinning has no use for edge data)
M
with vertices

v ∈{
1
,...i}

, a set of joints in a reference pose
R ∈{
1
,...j}

, and a set of

joints in the current pose
P ∈{
1
,...j}

. The goal of the skinning algorithm is to

compute new vertex positions
v
∈{

, given a matrix of weights
W
,where

the
ij
th entry in
W
represents the amount of influence from the
j
th joint on the

i
th vertex.

There are a few typical conventions with regards to how the input data are for-

matted. Most importantly, the weights in
W
are normalized in the sense that the

sum of the weights
W
ij
for all
j
will always equal one for any vertex
i
. The input

joints
R
and
P
are typically represented as four-by-four matrices. Consequently,

the input points
v
are put in homogeneous form so they can be multiplied directly.

1
,...i

}