• Advertisement
Sign in to follow this  

2D skeletal animation - hints needed

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

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
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