- Minor fix when creating new animations from invalid or unloaded morphs
- Remove warning when playing a clip targeting "off" controllers
- Fix issue with play clip on master playing on other atoms with sequencing on
- Fix animations storables only showing the current layer
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.

Better sequencing.

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.

UI improvements.

- 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

Screenshot credits

- VL_13's velvet set
- VaMChan's Yurufua bob 04
- Oronan's Dorothy
- Ignore auto keyframe when playing or sampling (e.g. load pose trigger)
- Keep imported "next animation", even if they don't exist (fixes randomized sequences not importing)
- Uses the new VaM 1.20.0.9 move events, which means the Move tab works, loading pose will create keyframes. All previous versions will fallback to the VaM 1.19 behavor.
- Nodes in comply mode can only be keyframed using the toggle, not by moving the node
- Fix possession mode not working when the possessed controller is an animation target
- Prevent "keyframes painting" when a controller is set to physics link or parent link (thanks vaako7 and oeshii!)
- Remove triggers now only affects current clip
- Fix for undeletable triggers track
- When loading a scene with a disabled Timeline instance, make sure Timeline is actually disabled
- Fix disabled atoms not re-enabling the UI correctly, and potentially losing data in some cases. Rely on SuperController to run init coroutines.
- Bring back the "go to morphs screen" button and name it to help users figure out how to use the fav checkbox
- Reduce drop down height in add targets screen since the new one is a little bit higher
- Use float params short names, since the new morph prefix they take more space
- Fix new morph names preventing older scenes to load correctly with morphs sometimes
- Ensure morph float params have been normalized before checking for missing targets in layer
- Support VAM 1.20 features after post-1.20 releases
- Fix remove selected targets not removing targets from all clips
- Auto-keyframe on load pose and when using the move panel (VaM 1.20)
- Gracefully handle unknown curve types (forward compatibility with Timeline 4)
- Fix some syncing issue with non-looping animations extending their end time
- Fix randomize not working when only two potential animations exist
- Fix remove target not working (it should always remove the target on all animations of that layer)
- Virt-A-Mate 1.20 filterable popups support (backward compatible with 1.19)
- Virt-A-Mate 1.20 animatable requirement dropped (backward compatible with 1.19)
Back
Top Bottom