Jump to content
  • Advertisement
Sign in to follow this  
bluman

2D skeletal animation - hints needed

This topic is 2285 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

Hello,
I am currently writing a 2D skeletal animation framework and currently I am a bit stuck on a few things.

a. How should I manage overlaps? Currently the bones are represented in a tree structure, but I have to write my way through sprite overlaps. For example a man should have the torso and the two hands. Should I simply make a priority flag for each bone and on rendering push the bones in a min-heap based on that flag or is there a smarter way? I saw this feature on an application called Demina and it seems very easily done, at least from the GUI I see.

b. Could you please recommend me a file structure to save the bones and their position at certain keyframes? Also should I separate the standing position and specific animations or should all be in the same file? Please do not just say use XML or something like that. I was thinking about naming each bone and saving a pointer in another structure called node for each bone in a hash and for each child that I load from the file just to add it to it's father in constant time, but I think this is a little too complex and would generate much memory overhead.

Thanks in advance,
Paul Herman

Share this post


Link to post
Share on other sites
Advertisement
Keeping bones in memory(file):
0. bone data consist of name/id and its parent bone id/name
1. save all bones to a simple array.
2. for each bone, save the parent bone index
3. sort the bone in the array by a topological sort (adjust the parent bone index accordingly)
4. this way you can process the bones in order and it is ensured, that when you process a bone, that the parent bone has already been processed

Bone/animation format
1. save the bind position, weights in the mesh file. This way you can use one animation/rig for several meshes
2. write one animation file, all keyframes are written in a sequence
3. save meta data like 'idle=frame 1-100, run=101-145,loop ' etc.
4. for each frame:
4.1 for each bone
4.1.1. save a timestamp, a rotation matrix/quaternion, a position relative to its parent bone

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.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!