Skeletal animation: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
(talk about waffle!)
mNo edit summary
 
(12 intermediate revisions by 8 users not shown)
Line 1: Line 1:
[[Image:Breen skeleton ref.jpg|150px|right|Skeleton in reference posture]]
[[File:Breen skeleton ref.jpg|150px|right|Skeleton in reference posture]]
[[Image:Breen skeleton posed.jpg|150px|right|Skeleton during an animation]]
[[File:Breen skeleton posed.jpg|150px|right|Skeleton during an animation]]


'''[[Wikipedia:Skeletal animation|Skeletal animation]]''' is a [[cheap]] and easily-understandable [[Wikipedia:3D animation|3D animation]] technique that can be used to animate any rigid, jointed object, from humanoids to machinery.  
'''Skeletal animation''' is a processor-efficient and relatively simple animation system that can simulate any jointed object, from people to insects to machinery.


A [[Skeleton]] itself is a system of rigid [[bone]]s which determines the model's pose at any given point in time. The model's vertices are [[envelope]]d to a single bone each, and follow that [[parentbone]]'s movements. Polygons that exist between envelopes stretch and compress as the joints are flexed.
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.


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 controlled with [[$sequence|canned animation]], [[$collisionjoints|real-time physics]], and/or [[$ikchain|inverse kinematics]].
== Limitations ==


Bones can be manipulated with canned (i.e. hand-crafted, keyframed) [[$sequence]]s or, in the case of a [[$collisionjoints]] rig, by [[VPhysics]].
; 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).
== Limitations ==
; A bone has only one parent
;Bones must be rigid
: A skeletons are organised into trees, branching out from a root. Webs/meshes of bones are not possible.
: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.
; Skeletons require hierarchy
;Bones can only have one parent
: While it is theoretically possible to animate gasses or liquids with bones, it's an inefficient and overwrought solution. Use [[:Category:Particle System|particles]] to create such effects.
: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 ==
== See also ==
* [[Flex animation]] morphs [[Vertex|vertices]] directly (used for faces/lips)
* [[Vertex animation]] is keyframed vertex motion
* [[Category:Particle System|Particles]] are used to animate clouds or streams of objects
* [[List of material proxies#Texture manipulation|Animated textures]] change the appearance of 2D surfaces
* <code>[[SetSequence()]]</code> is used by programmers to play skeletal animations


* [[Vertex animation]] is used to ''morph'' mesh vertices directly, e.g. animating faces.
== External links ==
* [[Particle effects]] are used to 'animate' a clouds of particle sprites (see [[info_particle_system]]).
* {{w|Skeletal animation}} on '''Wikipedia'''
* [[Texel animation]] is standard, pixel-based 2D animation.
* <code>[[$sequence]]</code> is used to define a skeletal animation in a model's [[QC]] file.
* <code>[[$bonemerge]]</code> allows other models to move in hierarchy with a bone.


__NOEDITSECTION__
__NOEDITSECTION__
[[Category:Glossary]]
[[Category:Glossary]]
[[Category:Modeling]]
[[Category:Modeling]]

Latest revision as of 04:13, 23 June 2024

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

External links