Skeletal animation: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
m (Plural of vertex isn't vertexes)
m (link fix)
Line 4: Line 4:
'''[[Wikipedia:Skeletal animation|Skeletal animation]]''' is a processor-efficient and relatively simple animation system that can simulate any jointed object, from people to insects to machinery.
'''[[Wikipedia:Skeletal animation|Skeletal animation]]''' is a processor-efficient and relatively simple animation system that can simulate any jointed object, from people to insects to machinery.


The titular [[skeleton]] is a hierarchy of jointed but individually rigid [[bone]]s that are manipulated in the same way as a real skeleton. [[Vertices]] are '[[envelope]]d' to the appropriate bone and move with it; the bone in turn moves with the bones [[parentbone|above it]] (e.g. the hand follows the forearm). [[Polygon]]s that cover joints between bones [[weightmap|stretch and compress]] as the skeleton moves.
The titular [[skeleton]] is a hierarchy of jointed but individually rigid [[bone]]s that are manipulated in the same way as a real skeleton. Vertices are '[[envelope]]d' to the appropriate bone and move with it; the bone in turn moves with the bones [[parentbone|above it]] (e.g. the hand follows the forearm). Polygons that cover joints between bones [[weightmap|stretch and compress]] as the skeleton moves.


Bones can be controlled with [[$sequence|canned animation]], [[$collisionjoints|real-time physics]], and/or [[$ikchain|inverse kinematics]].
Bones can be controlled with [[$sequence|canned animation]], [[$collisionjoints|real-time physics]], and/or [[$ikchain|inverse kinematics]].
Line 21: Line 21:
* [[Flex animation]] morphs [[Vertex|vertices]] directly (used for faces/lips)
* [[Flex animation]] morphs [[Vertex|vertices]] directly (used for faces/lips)
* [[Vertex animation]] is keyframed vertex motion
* [[Vertex animation]] is keyframed vertex motion
* [[:Category:Particle System|Particles]] are used to animate clouds or streams of objects
* [[Category:Particle System|Particles]] are used to animate clouds or streams of objects
* [[Animated textures]] change the appearance of 2D surfaces
* [[List of material proxies#Texture manipulation|]] change the appearance of 2D surfaces
* <code>[[SetSequence()]]</code> is used by programmers to play skeletal animations
* <code>[[SetSequence()]]</code> is used by programmers to play skeletal animations



Revision as of 04:38, 4 November 2023

Skeleton in reference posture
Skeleton during an animation

Skeletal animation is a processor-efficient and relatively simple animation system that can simulate any jointed object, from people to insects to machinery.

The titular skeleton is a hierarchy of jointed but individually rigid bones that are manipulated in the same way as a real skeleton. Vertices are 'enveloped' to the appropriate bone and move with it; the bone in turn moves with the bones above it (e.g. the hand follows the forearm). Polygons that cover joints between bones stretch and compress as the skeleton moves.

Bones can be controlled with canned animation, real-time physics, and/or inverse kinematics.

Limitations

A bone is rigid
The vertices enveloped to any given bone move as one unit. A skeletal animation cannot move them relative to each other (a flex animation can).
A bone has only one parent
A skeletons are organised into trees, branching out from a root. Webs/meshes of bones are not possible.
Skeletons require hierarchy
While it is theoretically possible to animate gasses or liquids with bones, it's an inefficient and overwrought solution. Use particles to create such effects.

See also

  • Flex animation morphs vertices directly (used for faces/lips)
  • Vertex animation is keyframed vertex motion
  • are used to animate clouds or streams of objects
  • [[List of material proxies#Texture manipulation|]] change the appearance of 2D surfaces
  • SetSequence() is used by programmers to play skeletal animations