Skeletal animation

From Valve Developer Community
Revision as of 09:03, 17 May 2008 by TomEdwards (talk | contribs) (talk about waffle!)
Jump to navigation Jump to search
Skeleton in reference posture
Skeleton during an animation

Skeletal animation is a cheap and easily-understandable 3D animation technique that can be used to animate any rigid, jointed object, from humanoids to machinery.

A Skeleton itself is a system of rigid bones which determines the model's pose at any given point in time. The model's vertices are enveloped to a single bone each, and follow that parentbone's movements. Polygons that exist between envelopes stretch and compress as the joints are flexed.

Every skeleton has a 'bonetree' hierarchy. Moving a bone automatically causes any child bones to move in response, so rotating a forearm bone would cause the hand and finger bones for that arm to move with it. A bone can have any number of children but only one parent.

Bones can be manipulated with canned (i.e. hand-crafted, keyframed) $sequences or, in the case of a $collisionjoints rig, by VPhysics.

Limitations

Bones must be rigid
A length of chain can be accurately simulated by assigning a single bone to each link, whereas a length of rope would require an almost infinite number of microscopic bones to simulate its full flexibility. Increasing the number of bones makes the skeleton more complex, which undermines the great advantage of skeletal animation: simplicity, both for the human animator and the electronic processor.
Bones can only have one parent
So, for instance, a sheet of flexible cloth could not be accurately animated with a skeleton. The same is even more true of fluids or gasses (though for the latter, see Particle effects).

See also