Sign in to follow this  

Keyframe or Skeletal animation - what's the difference

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

Hi. It may sound funny to you but I dont really know the difference between the two. ie skeletal and keyframe animation. Now I know that one type of animation invloves creating bones and assigning vertices to each joint. BAnd then when we want to play the animation we use frames to move bone from point A to B. So these two (skeletal & keyFrame) add up into one thing.? I am confused..... arghhh.. What I described above is it Skeletal animation? or a keyframe animation? (I am still using keyframes). If not a keyframe so what is a keyfram animation. does it involve bones? Please explain clearly both in few words so I know the main difference and which one is more advanced. thank you very much.

Share this post


Link to post
Share on other sites
Sceletal animation tells us that we are animating a skeleton, witch are animating the vertexes, and not animation the vertexes directly.

A pre-created animation is mostly devided into smaler steps along the timeline, called key frames. Every animation system i know of use this, and consists of keyframes/frames and a system that can interpolate between them (in 3d).

If you animate you model with keyframes, you get keyframes.
If you have a animated sceleton controlling your vertexes, you get skeleton animation.
If you animate this sceleton with keyframes, you get sceleton keyframe animations!
The dont exclude or include each other...

A keyframe is a single moment in an animation timeline.
A sceleton is a structure used to contole a set of vertexes!

Share this post


Link to post
Share on other sites
If I'm not mistaken, the difference you're looking for is this:

When using keyframe animation, we store the position of each of a model's vertices for each keyframe.

Using skeletal animation, we store the position of the bones at each keyframe, and use the 'weight' of the bone (i.e. its influence) for each vertex to calculate the position for each vertex.

Hope that kinda makes sense ;)

Share this post


Link to post
Share on other sites
really you're talking about 2 things. skeletal animation and keyframe animation are not exclusive. that is, you can have keyframed skeletal animation.

KEYFRAMED means that the animation is divided up into frames of some type of information: it could be skeletal info or it could be vertex info. the opposite of keyframed animation, i guess, would be procedural animation; that is, creating movement with a formula rather than with the hands and mind of an animator.

SKELETAL just means, as the previous posted pointed out that there's a skeleton to which vertices are bound. the animation then moves the skeleton, instead of each vertex to create the apperance of movement. skeletal objects can be keyframed or they can be procedurally moved (perhaps by some complex program that's simulating muscle contraction perhaps).

-me

Share this post


Link to post
Share on other sites
ok. Thanks for you help.

The reason why I ask is because I would like to develop an animation system butI must obviously firs understand theoretically what I want to develop.

I guess what I want to develop is called a skeletal animation which I want to export from 3D Studio Max. Basically I will have bones and store their positions and rotations as well as each keyframe (time position and rotation) all in my own file.
All vertices will have its own joint that will be assigned to.
But weights??? hmmm.. I am confused. What do you mean weights what are they used for? I thought that if I assign vertices to baone then they are assigned full stop. Is it some kind of additional info? I guess I must read on this more.


Hmmm.. So in Keyfram animation you dont have bones and every vertex is stored in a different position at each frame. Thats alot of storage consumed. Say 30 frames in animation and 2000 vertices a in model = 30 * 2000 = 60000 vertices stored. I am sure its not tha easy otherwise it would be so studpid to waste so much space.

Share this post


Link to post
Share on other sites
Yes EXACTLY :)!! I agree with Palidine.

My animation would involve:

1. BonePosition - Vec3D
2. BoneRotation - Vec3D

Then Same bone would store additionally KeyFrames for this bone so it can be interpolated from point A to B through a number of tiny frames measured in time. ie.

3. KeyFrames{ Time, PositionAtCurrentKeyFrame, RotationAtCurrentKeyFrame )


So to summarize what I am trying to do we can call it KEYFRAME SKELETAL ANIMATION.

Am I right? Thats why I get confuse when I read about this stuff. People mix those names and in the end even though I know what I am trying to do I dont know how to call it :)

Share this post


Link to post
Share on other sites
the way i remember it is that Keyframe animation is just like animated bitmaps. you store each frame of the bitmap animation, and display the frames in a certain sequence.

with vertices in 3d animation, the position of each vertex is stored in each frame. i think this leads problems with memory since each 'frame' of the animation is basically a completely new mesh that you display each frame cycle. (at least thats how i understand it to work, if im wrong please tell me!!)

skeletal animation, as previously stated, only stores the new position of the bones. and the vertices linked to the bones are translated on the fly, which is slower, but uses less memory (i think.)

another good feature of bones is that you can use physics on them, and not get hit as much by the cpu. hence, ragdolls!

the 'weights' you talk of are how much the bones influence the vertices. a set of vertices at the elbow of a character for example, would be influenced by the upper AND lower arms when it bends, creating a more realistic 'stretching' effect than two adjacent vertices being controlled by different bones completely.

if any of my information is wrong please correct it so i dont give papa the wrong idea! :P

im not sure about the naming of your system. i always thought "if it has a skeleton, its skeletal animation", since your using interpolation of the bones between two keyframes, i think it would be better called skeletal animation. since skeletal keyframe animation kinda implies to me that your storing every bone position in the animation as frames.

i suppose its really personal preferance that i consider it this way, but im sure some uber animator could explain why/what they are called much better.

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
If you set the wait for a vertex at for example 50% the vertex will just move half the way the bone has moved.

Share this post


Link to post
Share on other sites

This topic is 4839 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.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this