This technique is used by constructing a series of 'bones'. Each bone has a three dimensional transformation (which includes its position, scale and orientation), and an optional parent bone. The bones therefore form a hierarchy. The full transform of a child node is the product of its parent transform and its own transform. So moving a thigh-bone will move the lower leg too. As the character is animated, the bones change their transformation over time, under the influence of some animation controller.
Each bone in the skeleton is associated with some portion of the character's visual representation. In the most common case of a polygonal mesh character, the bone is associated with a group of vertices; for example, in a model of a human being, the 'thigh' bone would be associated with the vertices making up the polygons in the model's thigh. Portions of the character's skin can normally be associated with multiple bones, each one having a scaling factors called vertex weights, or blend weights. The movement of skin near the joints of two bones, can therefore be influenced by both bones.
For a polygonal mesh, each vertex can have a blend weight for each bone. To calculate the final position of the vertex, each bone transformation is applied to the vertex position, scaled by its corresponding weight. This algorithm is called matrix palette skinning, because the set of bone transformations (stored as transform matrices) form a palette for the skin vertex to choose from.
Strengths and weaknesses
Skeletal animation is useful because it allows the animator to control just those characteristics of the model that are independently moveable. A character cannot move the bottom part of their skin independent of the top part. Typically a visual model for the shin will have different elements, that the animator would otherwise have to coordinate. Using a skeleton allows the animator to ignore such issues and focus on the large scale motion. Animation is therefore made much simpler: an animation can be defined by simple movements of the bones, instead of vertex by vertex (in the case of a polygonal mesh).
The weakness of the skeletal approach is that it doesn't by itself provide realistic muscle movement. A character flexing an arm will have both large scale bone movement and local skin motion caused by the change in muscle shape under the skin. It is common in animation for the movie industry and increasingly in computer games to have special muscle controllers attached to the bones that mimic this effect.
Applications
Skeletal animation is the standard way to do large scale animation of characters. It is commonly used by computer games programmers and in the movie industry, and can also be applied to mechanical objects and any other object made up of rigid elements and joints.
See also
Categories: Computer animation