Graphics‎ > ‎3D‎ > ‎Animation‎ > ‎

Skeletal Animation

You need to use this if your game contains the Undead

Node
The skeleton is made up of nodes. Other names for these are joints, bones or frames. Each node has the following data about itself.

Name: A name for the node makes it easy to get it's position from code and link things to it.
SRT: This is the nodes transform relative to it's parent node if it haves one. The SRT is an abbrevation for the process of applying the Scale, the rotation and the translation operation.

Hierarchy
The nodes are placed in a hierarchy. The top node without any parent is called the root node.


A animation is made up of frames where each frame contain the local SRT of every node at a given time in the animation.. When playing the animation to a selected time the nodes are moved to the correct positions given in the frame. To get any time the game needs to interpolate between the two frames around the selected time.

  • Key: SRT data that define the position, rotation and scale of a individual bone at a specific time.
  • Track: Keys that describe the motion of a individual bone over time.
  • Animation: A set of track that define the motion of all the bones in a skeleton.

Compression
To lower the amount of data a animation take compression can be used. Low memory usage always make sense on console and lower memory lets one use more animations. Compression need to be selectable per animation as some animation might compress badly. There are two things that can be done, they number of keys can be reduced and the data per key can be compressed to use less memory.

Key Reduction
A animation with samples in 30Hz can be reduced to 15hz by removing every other key. At a minimum all trivial keys keys that does not change should be removed. Other keys can be removed if the interpolation system that is used by the engine will arrive at a close enough value to that key by using the surrounding keys.

Key Compression
If each key is SRT data then each value can be compressed to use less data. So rotation can be stored as 3 floats without the w for a quaternion for example. 

Comments