Skeletal Animation - Transitioning to a new animation?
What do games normally do, for example, when a character switches from a running animation to a jumping animation? I'm about to implement skeletal animation, and I'm unsure if I should even implement inter-animation interpolation at all.
Do games normally finish the current period of the running animation before switching to the jumping animation, or do they do some kind of dynamic interpolation between these two animations to make the transition smooth?
Ultimately you want the player input response to be quick, which will mean cutting a run cycle short. Interpolation is a quick fix for a lot of problems, and a good fit if it's your first go at skeletal animation.
Is it really possible to just render two animations at the same time for a brief moment? I suspect that might look weird at times. For example, a running animation transitioning to a walking animation would only work if the two animations were played in phase with each other.
Quote:Original post by ouraqt
Is it really possible to just render two animations at the same time for a brief moment? I suspect that might look weird at times. For example, a running animation transitioning to a walking animation would only work if the two animations were played in phase with each other.
Animation blending with a fast (in time) varying blend factor can be used. However, if the 2 animations are too different, it may be needed to do some intermediate animations, e.g. blending from A to B and then from B to C.
The different speeds of animations, e.g. the mentioned blending from running to going, can (and often must) be equilized by scaling the time that is used on the joint tracks. Scaling the time is also a fine instrument for realising different running speeds, and varying the scale factor over time is of course suitable for acceleration/decelaration of animations in general. Just be aware that each animation uses its own scaling factor. And yes, perhaps a phase offset need to be considered, resulting in a computation of the local time when the new animation is entered.
In some special cases the animation blending will be done between 2 animations of the same purpose, e.g. running and going (instead of going and shooting, for example). In such cases it may be possible to design the animations so that the blending duration could be reduced to zero (i.e. to switching) while the time scaling is sufficient to model the transition.
With more complicated animations (lots of cyclic repeating patterns with different stances/poses) you would have intermediate animations to transition from one movement type to another (prefereably with a few neutral poses that can be shared for both sides of and entering/exiting cycle.
Standing -> transition1 --> run1 <-> run2 [repeat] --> transition2 -> standing
Standing--> transition3 --> crawl1 <-> crawl2 [repeat] --> transition4 -> standing
The poses at the end of each animation would match the start of the next one
The real problem, I guess, is making this happen quickly, so there's a fast response time. The animation system shouldn't affect game timing.
Wow, that paper describes exactly what I'm trying to do. But I think it's overkill for my system (and it's a lot of math to digest).
I think I found a simpler approximation. So we know how each joint needs to be oriented at any particular time in an animation. Well...what if we had some kind of inertia-based interpolation scheme. So each bone can have angular momentum.
In other words, the joint positions are not exactly defined by the animation sequences, but rather, they "spring" into those positions. So, for example, when switching from one animation to another, the joints would "spring" to their new positions. So basically, I'm suggesting a sort of "smoothing out" of the animations sequences (using damped spring-like thingies, almost how like the suspension in a car makes the ride smoother for the passengers), such that the transitions will not be discontinuous.
It might look weird for some animations, but it's a step up from having no interpolation at all.
I'm not sure if any of that made sense.
I think I found a simpler approximation. So we know how each joint needs to be oriented at any particular time in an animation. Well...what if we had some kind of inertia-based interpolation scheme. So each bone can have angular momentum.
In other words, the joint positions are not exactly defined by the animation sequences, but rather, they "spring" into those positions. So, for example, when switching from one animation to another, the joints would "spring" to their new positions. So basically, I'm suggesting a sort of "smoothing out" of the animations sequences (using damped spring-like thingies, almost how like the suspension in a car makes the ride smoother for the passengers), such that the transitions will not be discontinuous.
It might look weird for some animations, but it's a step up from having no interpolation at all.
I'm not sure if any of that made sense.
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement