Around three months ago, WeebUVR made a comment about how Virt-A-Mate's animation patterns yielded smoother curves with fewer keyframes, and he was right. So began a quest to make Timeline superior. I've been working every day since, and I think the game has been upped.
The curve engine has been rewritten from the ground up.
Initially, Timeline was relying on Unity's animation system to work with curves, but it was pretty limited. For example, it was impossible to make a perfect circle with only four keyframes. So, I started on a quest to rewrite the engine completely using a custom-made animation system using Bezier curves. The performance is equivalent, but everything is smoother and crisper, resulting in better-looking animations "out of the box"
With this new system, the old "smooth" curves were replaced by a "smooth (local)" curve which is weighted, meaning keyframes in short successions will overshoot much less and will look much better. There's also a new "smooth (global)" curve which works in a similar way to Virt-A-Mate's animation patterns. This will evaluate the whole curve and balance every keyframe accordingly, which is especially useful to get natural-looking loops with very few keyframes.
This also allowed a rewrite of the blending engine, which now uses a "weighted average" method so transitions will be much, much smoother. This works with potentially more than two blendings at once!
Dynamic weighted parenting.
If you used Rubberleash, this is very similar; you can specify a controller parent directly in Timeline, per animation. For example, you can parent a person's hand to another person's head in one animation (e.g. touching the cheek), and parent that same controller to the hip in another. This allows for blending from one parent to another smoothly, allowing much richer animations sequences within a single scene.
Master animation atom.
Yyou can already have multiple atoms share the same animation names, which will sync them when you play or scrub. However, it means every atom also has to have the same sequence configuration, and it's impossible to randomize atoms in sync. With Timeline 4, you can mark one atom as the "animation master", which means it will drive all other atoms, as long as they also share the same animation names.
Many improvements were made to sequencing. You can now configure a blend-in duration, which is much more predictable than the previous blend-out logic. There's also a new option to preserve loops, which will ensure that the "rhythm" stays stable as you change animations through sequences or triggers. There's also an option to randomize the sequence time, for example, you could specify that a loop should play between 1 and 3 times before switching to the next animation.
Improved triggers activation.
One feature that Timeline had was to activate/deactivate triggers while scrubbing. The problem with this was that whenever you were on any given animation, playing them would not activate the first frame's trigger, which was confusing for everyone. Now triggers will only activate during playback, which means any triggers you configure on the first keyframe will always trigger when playing. Note that in a loop, triggers will not activate on every loop, but rather they will activate when entering the loop, and deactivate when leaving the loop by changing the current animation.
- A new dedicated sequence tab for less scrolling
- Confirm modal before deleting animations and layers, no more sweat every time your cursor goes need the delete button!
- Play buttons are disabled during playback to make it more obvious that the animation is playing
- Play clip button now named after the current clip to clarify it's purpose
- Larger in-game (controller) panel
- Float param targets now include the first characters of their storable names, so you can differentiate similar params on different storables
- Right-click on a controller target to select it in VaM (@via5's contribution)
There is also a lot of other worthwhile improvements based on all the feedback I have received in the last months.
- New storables to play a random animation within a group (@via5's contribution)
- Speed taken into account in sequencing and blending
- Ability to only control rotation of position of a node
- Automatic transition keyframes can be separately set for the first (previous animation) and last (next animation) keyframes
- Change crop/extend at time to exclude the currently selected keyframe
- Ability to lock an animation from unwanted edits (in options and through a storable)
- Delete all animations (reset everything, useful when starting from scratch)
- Uninterruptible animations (play triggers will be ignored, e.g. for animations triggered by collisions)
- Cut won't clear the clipboard if there is nothing to copy (@via5's contribution)
- A ton of small bug fixes and improvements
Download (now public!)
There is no official release date yet. Once I feel comfortable that patrons had time to try it out and give feedback, a two-weeks window will be published.