Timeline Animations, Looping and Blending

Simply put: I can't get Timeline to blend cleanly. If I set the ease in/out value, it will loop back round but will return to the default pose (or whatever the current animation controller is set to if a controller and state are set) and blend to/from the default pose instead. It basically makes animations in Timeline incredibly difficult to use as looping it or blending between two timeline assets using Play(asset) is impossible without having some animation controller to fall back on which is far from ideal.

Ideally, timeline needs to handle writing even when easing in/out via some sort of checkbox, and to blend cleanly between looping timeline assets or switching between them. The fact that this isn't the case is pretty astonishing. Or just being able to disable the animator completely and have Timeline still animate would be enough really...

There are some hacks I can use like having a base idle animation in the animation controller, but then every timeline is going to blend between whatever the current frame of that is when going between timelines or looping, and if I pause the timeline it'll revert back to the animator until I play it again.

Am I missing something here?

No, you are not missing anything. There is no provided tool that arbitrability blends timelines together. It's possible, but not straightforward, to do it via scripting.

What about the looping issue? I would have thought it would handle that natively...?

The loop is just blindly replaying the timeline, so the ease is still being applied, and blending to either the animator or a default pose.

There is nothing in timeline that adjusts for that on loop. It would be a good feature to have though.

Honestly all it needs to do is just be able to work while the animator is disabled somehow, as then the animator won't try to take over during the ease.

If only it were that simple.

Timeline doesn't apply the animation. The animator does - Timeline just supplies the animation graph. So when the animator evaluates it has a stack of animation graphs with weights that play. If the animator controller is playing, it is always the base of that stack. Timelines are added - in the order they are played - as are any other AnimationPlayable graphs such as Animation Rigging and Simple Animation.

This means that a timeline can blend to/from other timelines, or you can set the pose using script that timeline should blend to. Or blend in rigging, etc...

The entire stack is evaluated, starting with the animator controller. Any 'ease' value just blends to previous AnimationGraph that is playing - or the default values of the animator. Removing the animator controller just means it will blend to a default pose.

What is needed is an out of the box tool that let users visually control the blending and ordering between the different graphs. That is something the animation team will likely deliver someday, but there is nothing in the immediate roadmap that I am aware of, unfortunately. There are users who have built custom tools that do it for their specific use cases.

1 Like