Errors in NLA editor Add and Subtract
Open, NormalPublic


System Information
Windows 10 Home
Nvidia GTX 960

Blender Version
Broken: v2.78 4bb1e22

In NLA editor, when blending two (or more) tracks using Add mode of action blending. If both tracks contain location, rotation, or scale keyframes, they will be added together even if the second track was based on animation from the first. i.e. both track have objects at a scale of 1 resulting animation will be scaled to 2. If locations are set in the same place for each track the they will be added instead of being blended, Rotations will also be added instead of blended. There are no sane use cases for this, indicating it is a bug. Both expected and desired functionality, which includes countless use cases (including standard work flows), is for only differences between a lower track and a higher track to transform the keyframes. Subtract yields similar, useless results.

Exact steps for others to reproduce the error
1 - Create an animation with keyframes for rotation, scale, and location
2 - Using NLA Editor, "push down" the animation into a track.
3 - Switch action blending to add.
4 - Create another animation to blend with the first, using keyframes location, scale, and rotation.
5 - Play animation and watch the madness ensue.
6 - Ask yourself if this is not a bug, what possible use case could there be for Add, Subtract, and Multiply action blending modes?
7 - Imagine the possibilities if this is fixed. Animation layers, blending mo-cap, the possibilities are endless.

Thanks for making Blender so amazing.



Okay, I think I understand how the NLA editor works with add and subtract modes, and it seems to work fine with location and rotation.
I think the only problem is with the scale operation which should multiply during add mode and divide during subtract mode, that is the only way to get proper scaling when using multiple tracks with scale keyframes.

Aaron Carlisle (Blendify) triaged this task as "Normal" priority.

This defiantly does not seem like intended behavior @Joshua Leung (aligorith) can you take a look? Thanks.

Aaron Carlisle (Blendify) lowered the priority of this task from "Normal" to "Incomplete".Feb 2 2017, 7:36 AM
Bastien Montagne (mont29) raised the priority of this task from "Incomplete" to "Normal".Feb 10 2017, 4:28 PM

The reason Add and Subtract mode were not doing anything particularly useful is because we really need a new blending mode.

The easiest way to describe what is needed is if you imagine making transparencies from the dopesheets, and placing them on top of each other so that only the topmost elements of each keyframe are visible. In this way you can overlap animations while keeping elements of the underlying animation. This allows for non-destructive animation, and progressive refinement.

A blending mode like that would solve all the frustrations.
Then Add and Subtract modes could probably be used to re-target those animations.

This is a known issue that's on my todo list for when I get enough time to have another decent look at the NLA evaluation backend.

As I see it, to get the Add and Subtract modes working usefully, what needs to happen is that we need to a way to only store the relevant deltas in the strips when inserting keyframes. That is, we need a way to remove the effects of the existing NLA stack contents from the current pose, but without having to reevaluate the NLA stack on the spot to do so (since doing so will end up overwriting the current state we're trying to keyframe).

I was planning on working on this when working on the other NLA evaluation problem (i.e. non-deterministic behaviour if some channels are only keyed in some strips), since both cases would benefit from having a more robust + persistent cache to keep track of channels in the NLA and their current values.

That sounds fantastic. Thank you.