Jump to content
  • Advertisement
Sign in to follow this  

Storing Animation data

This topic is 2973 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Whats the benefits of storing animation data in parent space as opposed to world space?

For example, if i have a skeleton with say 32 bones and I store each of its bones tranforms over 24 frames :

Frame1 : SkeletonPose
Frame2 : SkeletonPose
Frame3 : SkeletonPose
Frame24 : SkeletonPose

Where skeletonPose contains a transform for each bone at that point in time. Why not just store that transform in world space? So that each frame, calculating a bones matrix to a apply to a vertex is simply :

( SkeletonBindPose stores the inverses )

SkeletonBindPose[BoneIndex] * SkeletonPose[BoneIndex];

Where as if you store each bones transform in parent space, you then have to walk the hierarchy each frame.

And secondly, what is the need for storing the skeleton in the first place? Why not have the animation clip have each of its tranforms be

SkeletonBindPose[BoneIndex] * SkeletonPose[BoneIndex];

when exporting the animation clip?

Share this post

Link to post
Share on other sites
It would be more restrictive if you pre-multiplied everything.

One reason to keep things separate is so you can easily blend between two frames in local space. For example if you have a two bone upperarm -> forearm setup then blending between two matrices in world space would pivot around the shoulder and no the elbow as you might expect.

If you have a blend between frames you won't need as high a resolution of animation sampling because you can automatically generate the in-between frames at whatever framerate you want instead.

Your second point would also restrict things like using IK on the joints or ragdolls, in that case you don't know what the SkeletonPose[BoneIndex] is at the export stage.

For simple unchanging animations this would be more optimal though, yes.

Share this post

Link to post
Share on other sites
Sign in to follow this  

  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!