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-
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
}