Game Development Reference
authoring the necessary input data. I have implemented these algorithms in the
commercial animation software, Maya.
Maya uses a brush-based interface for painting per-vertexweight maps. Some-
times the accuracy obtained by manually assigning vertex weights is preferable,
but artists usually prefer the more natural brush-based interface. All common
three-dimensional software provides developers with methods of assigning vertex
values, but this remains an area ripe for improvements.
The algorithms presented in this article may be extended with many types of
per-vertex weighting schemes. For example, all of them can benefit from a master
weight, which simply scales the contribution of the deformation per vertex. For
the jiggle deformer, we may want to add per-vertex spring values to create local
regions of stiffer/floppier skin. Similarly, we may find the relaxation deformer
could benefit from push/pull strength weights. All of these additions would give
the artist more refined control, which can make a big difference in the quality of
the final deformation.
In addition to this, it is nice to have a method of copying weights between
characters both spatially and by vertex identity. In the interest of productivity,
these concerns should be given a high priority for any group seriously interested
in implementing a deformation system.
13.7.2 Optimization Issues
Aside from workflow and interface issues, there is always the issue of runtime
speed and optimization. Because most of these algorithms operate on vertices
(the same way a shader operates on pixels), parallelism is a natural fit.
This deformation framework is easily optimized further by employing a sim-
ple distance-based level-of-detail (LOD) scheme where all but the basic skinning
passes are skipped when the mesh is sufficiently far from the screen. It may be
useful to add an LOD parameter to the base deformer class so that the artist can
assign a range outside of which the computation is skipped.
I have worked as both a tools programmer and character rigger in both film and
video games. I am always amazed by the imagery that video game artists and
engineers are capable of producing within the constraints of real-time environ-
ments. But there is no doubt that the computational horsepower available to film
productions provide for images that display a richness and fidelity that real-time
graphics can scarcely match.
With the popularization of multicore programming in recent years, many of
the techniques previously reserved for offline productions are finding their way