• Editor
  • Preview View, Hold Previous

Just came here from user guide with an infographic to show if I get correct Preview View Hold Previous functionality. I am going to share this image in the course I am making so want to be 100% sure I dont misinform. I know that this is not something animators should worry but the course will be paid 😃 and not cheap lol

Related Discussions
...

The Hold Previous functionality in the Preview view ensures that the previous animation is fully applied while the next animation is mixed in. This prevents the pose from a lower track from being seen during the transition between animations on a higher track. When Hold Previous is enabled, the next animation should key every property the previous animation keys to avoid snapping to the setup pose once the mix completes.

Here is a detailed explanation:

  1. Without Hold Previous: Normally, when transitioning between animations, the previous animation mixes out as the next animation mixes in. If a lower track keys the same property, its pose can be seen during the transition.
  2. With Hold Previous: The previous animation is fully applied while the next animation mixes in, ensuring that the lower track's pose is not visible. This is useful to prevent "dipping" or unwanted transitions.

Make sure your infographic accurately reflects this behavior to avoid any misinformation in your course.

Yep, the infographic looks great!

Note that jump should key everything that run keys, so that values mix from run to jump. If jump doesn't key something run does, it will stay at the run value until the mix is over, then it will snap back to the setup pose value.

BTW, it would be cool to show people how to use weighted animation blending using Spine. This is done using additive animation using alpha to control how much each animation contributes, and all the alpha values sum up to 1 (meaning 100%). Not a lot of projects do this AFAIK, but some do, like RocketPunch Games. When doing this you don't get any weird mixing or rotation or dipping, but it can be difficult to do other things, like layering animation or adding/removing animations without jumps.

Nice thanks for explaining,

so...

I did not get 100% part for tracks when alpha is used. Let's say we have WALK and IDLE animations that have same key set with 10 and 70 value. What will happen if we set track1 as additive alpha 100 and play IDLE on track0 and WALK on track1

My guess is that key will have value 80 after the blend. what place 100% has here?

Oh I get it so that 100% is just for alpha values for different tracks that play over the track0. So you can play WALK on 3 tracks all with additive and 50% alpha but at the end you will end up with

10 + 70/2 + 70/2 + 70/2 = 10 + [two options]= 80

option1 70/2 + 70/2 + 0 (it caps after second track 100% so we have 0 value adding for the key from third track)

option2 70/3 + 70/3 + 70/3 (spine just tries to blend all so at the end all keys are affecting equal amount since they all are 50%)

The answer become obvious they all are being blended equally and the alpha amount will be not greater than 100%

No Sorry it still does not make sense I double checked in Spine the sum of alpha can be greater than 100%

so it will be option3 70/2 + 70/2 + 70/2

Unless you ment alpha for tracks sums up to 100% when additive is off for them, because if additive is on the alpha values add up and can go past the 100%

Alpha values can go past 100% in Spine, but for "traditional weighted animation blending" they should not. That is how blending works in many other software.

If you have animations on 3 tracks you could have, eg: 10%, 40%, 50%. The important part is that they always sum to 100%. They should not sum to less than or greater than 100%.

If you set alpha > 100% then your pose can go beyond the keyed values. A similar thing happens if you go above a sum of 100% when using alpha to weight multiple animations, you can end up outside the keyed values. If you sum to 100% then each animation contributes some (0-100%) to the resulting pose, effectively blending between the animation poses without exceeding any of them.

If you have animations on 3 tracks you could have, eg: 10%, 40%, 50%. The important part is that they always sum to 100%.

But how? They dont add up to 100%(in your example they do but I can blend 3 tracks with 10% alpha) example below shows that and even worse it confuses me not showing up expected values, please take your time to check it many thanks

I have a single animation that has a key with 40 value(setup pose value is 0)
track0[empty]
track1[alpha:25] value ~ 10 (as I expected)
track2[alpha:25] value ~ 16 (expected 20)
track3[alpha:50] value ~ 28 (expected 40, since percents sum up tom 100)

Video showing the case

To do this kind of blending you need to enable additive for each track (click the + button before clicking the animation in Preview). Also the editor resets the skeleton before applying animations, so to get the same effect at runtime you'll need to call setToSetupPose. Or just setBonesToSetup is usually enough (doesn't reset slots).