Animation Layers

As a Roblox developer, it is currently too hard to …

Animation Blending and Layering

Currently, animation blending is a really complicated issue to resolve with roblox’s current animation blending system. There was a new update issued for the animation system which resolved direct animation blending, for example, blending directional walking animations together by distributing their weights and performing an average.

However this does not address two main concerns. Animations may be of differing lengths, and animations may not load at the exact same time. This causes a handful of issues when blending animations together, as they will very quickly become out-of-sync with one another, and result in terrible blending results. Animations such as strafing or walking backwards may have longer animations relative to more straight-forward walking animations, and they may also result in slower or faster character movement. Currently, this is not possible to compensate for in roblox without requiring a watcher script running every frame to keep time-positions aligned, and blend animation speeds together based on the weight distributions.

Animating certain things such as breathing, aiming, and others is also a very large chore due to how animations in roblox operate, and it is often easier to use an in-house or completely custom animation system than to rely and work around the structure of the roblox animation system.


If Roblox is able to address this issue, it would improve my development experience because …

Animation Layers

Animation layers would function similarly to the Animator system within Unity, or the NLA system in Blender, where precedence is dictated by the animations placement in a layer. Higher order layer swill offer precedence over lower order layers, and animations on the same layer will blend together based on the weight distributions. Animation layers themselves also can be weighted, allowing developers to blend entire animation sets together.

Animation layers will also be able support more complicated blending operations, such as linking animations or layers together, allowing them to maintain time-synchronicity (speed up and down the entire layer, animation speed is a multiplier of the layer speed), and allowing them to match relative time-positions, such that if one animation is twice as fast, it will match the speed of the slower animations when using a low weight, and will speed up the slower animations when using a high weight. This ensures that footsteps and other critical animation events line up with one another across multiple animations, even if the durations don’t quite match.

Another advantage of animation layers is an arbitrary number of priority levels for animations, and the ability to disregard the animation’s selected or assigned priority level without needing to change the properties of the animation itself. This allows for many more animations to stack on top of each-other appropriately, delicately ordering their priority with layers so that certain animation actions (such as firing a gun) always take precedence over some idle or voice action like calling out to medic in TF2.

There is also a very large component of animations which will finally be able to see use in roblox: Additive animations. Additive animations are those which sum or extend the existing keyframes of previous layers. This allows animations to operate on the same rig as other animations, without disrupting or destroying the behavior in other animations. A perfect example is making animations to aim weapons up and down, another to walk around, and another to simply fire the weapon. Additive animations would allow the walking and aiming to stack on top of all the other animations, so that only one weapon firing animation needs to be created, and any upper body movements from the walking animation can apply onto the aiming layer. This functions well with the IK animation system also, allowing the IK points to move with the walking, so that the weapons appear to jolt and shake.

Overall, animation layers would be a great advantage for developers, and allow us to create more expressive animations, combine animations more efficiently, and optimize our workflows to more appropriately manage and blend animations together, without requiring much manual scripting to correct for the unaccounted aspects of animation which roblox has not considered in the design of their Animator.


Here are some relevant links to similar feature implementations in Unity3D:

16 Likes

Bump. I’ve run into a wall trying to develop my recent boxing game, because I’m struggling to find a way to blend animations with the fighting stance in an additive way for flinching and reacting. Animation layers could be a game changer for the engine.

3 Likes