Errors in NLA editor Add and Subtract #50433

Closed
opened 2017-01-15 14:17:29 +01:00 by Dallan · 12 comments

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.
TestingAnimation.blend
Thanks for making Blender so amazing.

**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. [TestingAnimation.blend](https://archive.blender.org/developer/F433747/TestingAnimation.blend) Thanks for making Blender so amazing.
Author

Changed status to: 'Open'

Changed status to: 'Open'
Author

Added subscriber: @Runelord

Added subscriber: @Runelord
Author

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.

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.
Joshua Leung was assigned by Aaron Carlisle 2017-02-02 07:34:53 +01:00
Member

Added subscriber: @Blendify

Added subscriber: @Blendify
Member

This defiantly does not seem like intended behavior @JoshuaLeung can you take a look? Thanks.

This defiantly does not seem like intended behavior @JoshuaLeung can you take a look? Thanks.
Author

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.

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.
Member

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.

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.
Author

That sounds fantastic. Thank you.

That sounds fantastic. Thank you.

Added subscriber: @dr.sybren

Added subscriber: @dr.sybren

Moving this to the workboard 'Postponed', as it doesn't have any actual plan/schedule and has been sitting still for two years.

Moving this to the workboard 'Postponed', as it doesn't have any actual plan/schedule and has been sitting still for two years.

Changed status from 'Confirmed' to: 'Resolved'

Changed status from 'Confirmed' to: 'Resolved'
This seems to be fixed by [D4190: NLA: implement a new blending mode that intelligently overlays actions.](https://archive.blender.org/developer/D4190).
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
4 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#50433
No description provided.