Animation: Move Stashed Actions out from NLA to Outliner #85352

Open
opened 2021-02-04 00:45:37 +01:00 by Wayde Moss · 12 comments
Member

Proposal: Moving action stash out from NLA editor and data to outliner and its own separate data. When many stashed actions exist, it clutters the NLA editor. Currently stashed actions and override tracks are in conflict with override tracks, where both systems assume the first N tracks are stashed/override.

Why it's in the NLA appears to be a temporary hack:

In summary, stashed actions is a solution to saving the link between actions and objects. This solution is better than Fake Users for this reason. So when bones are renamed, related actions are properly updated too. For game animators, they can make a lot of actions at a time without worry of Blender automatically deleting them. Storing stashed actions in the NLA was a quick hack since the NLA data already properly handled Action references.

Example image:
image.png

Moving them to the outliner provides a more compact view and we can re-use the existing ID-block RClick menu to Unlink (unstash) and delete them quickly. (Alexander Gavrilov) We can go further and filter the DopeSheet Action selection to show the stashed actions first.


Implementation Ideas:

  • Base implementation: Remove explicit NLA-stashed action support and assumptions. Add new AnimData storage for stashed actions and create Outliner tree elements.

  • Outliner: Add the Action management menu items to the new Stashed Action outliner tree elements. (Unlink, Remap Users, Delete ,etc).

  • Outliner: Make the Action outliner elements, that are sub-elements of NLA track elements, have the same Action ID operators available in the R-Click menu.

  • Outliner: Stashed Action R-Click to set Action as active. This is equivalent to setting the active action from the Action Editor.

  • Outliner: Stashed Action R-Click to set Action as Active and Disable the NLA too. An NLA Enable toggle should be added to Nla Editor->View menu. (1)

  • Outliner: Active Action R-Click to Stash it.

  • Action Selection Dropdowns, we can show the associated actions first for quick access. (Action Editor, Action Constraints)

  • Outliner: Drag and drop action into the NLA editor, automatically adding a strip.

(1): This is meant to allow viewing and editing an animation without the NLA affecting the result. An existing solution is to add the action as a solo-d NLA strip which just re-clutters the NLA editor again. Another existing solution is to manually mute all NLA tracks but that is destructive if the animator already has a mix of muted and unmuted tracks. Remembering what was what afterward would be a hassle. Instead, This is a work-around for the bigger issue that objects can only have one NLA system. To disable the NLA system, we would just unset the active NLA system and set the Active Action.


How Existing NLA-stashed Action will be handled
This design task will break forwards compatibility. The safest approach is to not delete existing NLA-stashed actions. However, newly stashed actions will now only be added to the Outliner. When the user loads the file in an older Blender version and saves then the Outliner stashed actions are lost.

What the new workflows will look like

  • The NLA editor should be less cluttered and less overwhelming when many stashed actions exist.
  • Animators can now readily see all the actions associated with an object. The R-Click menu provides useful Action management operators (Remap, bulk Delete, Renaming, etc)
  • Riggers using Action Constraints will see the relevant actions first when selecting from the action dropdown. Alternatively, they can Drag n' Drop from the outliner too.
Proposal: Moving action stash out from NLA editor and data to outliner and its own separate data. When many stashed actions exist, it clutters the NLA editor. Currently stashed actions and override tracks are in conflict with override tracks, where both systems assume the first N tracks are stashed/override. Why it's in the NLA appears to be a temporary hack: * #43430 Action editor - saving (animation) actions is error prone and counter intuitive- DATA LOSS is too likely!. ( Where storing stashed actions in the NLA is proposed.) * blender/blender-staging@ac30378e3e Action Editor: Stash Action Operator. (First commit for stash action support) * #28453 Game animation workflow improvements. * [Response to the "Action Fake User" issue.](http://aligorith.blogspot.com/2012/03/response-to-action-fake-user-issue.html) * [Action Management Roadmap - 2015 Version.](https://aligorith.blogspot.com/2015/03/action-management-roadmap-2015-version.html) In summary, stashed actions is a solution to saving the link between actions and objects. This solution is better than Fake Users for this reason. So when bones are renamed, related actions are properly updated too. For game animators, they can make a lot of actions at a time without worry of Blender automatically deleting them. Storing stashed actions in the NLA was a quick hack since the NLA data already properly handled Action references. Example image: ![image.png](https://archive.blender.org/developer/F9611537/image.png) Moving them to the outliner provides a more compact view and we can re-use the existing ID-block RClick menu to Unlink (unstash) and delete them quickly. (Alexander Gavrilov) We can go further and filter the DopeSheet Action selection to show the stashed actions first. ____ Implementation Ideas: - [ ] *Base implementation*: Remove explicit NLA-stashed action support and assumptions. Add new AnimData storage for stashed actions and create Outliner tree elements. - [ ] *Outliner*: Add the Action management menu items to the new Stashed Action outliner tree elements. (Unlink, Remap Users, Delete ,etc). - [ ] *Outliner*: Make the Action outliner elements, that are sub-elements of NLA track elements, have the same Action ID operators available in the R-Click menu. - [ ] *Outliner*: Stashed Action R-Click to set Action as active. This is equivalent to setting the active action from the Action Editor. - [ ] *Outliner*: Stashed Action R-Click to set Action as Active and Disable the NLA too. An NLA `Enable` toggle should be added to Nla Editor->View menu. *(1)* - [ ] *Outliner*: Active Action R-Click to Stash it. - [ ] *Action Selection Dropdowns*, we can show the associated actions first for quick access. (Action Editor, Action Constraints) - [ ] *Outliner*: Drag and drop action into the NLA editor, automatically adding a strip. *(1)*: This is meant to allow viewing and editing an animation without the NLA affecting the result. An existing solution is to add the action as a solo-d NLA strip which just re-clutters the NLA editor again. Another existing solution is to manually mute all NLA tracks but that is destructive if the animator already has a mix of muted and unmuted tracks. Remembering what was what afterward would be a hassle. Instead, This is a work-around for the bigger issue that objects can only have one NLA system. To disable the NLA system, we would just unset the active NLA system and set the Active Action. ___ **How Existing NLA-stashed Action will be handled** This design task will break forwards compatibility. The safest approach is to not delete existing NLA-stashed actions. However, newly stashed actions will now only be added to the Outliner. When the user loads the file in an older Blender version and saves then the Outliner stashed actions are lost. **What the new workflows will look like** * The NLA editor should be less cluttered and less overwhelming when many stashed actions exist. * Animators can now readily see all the actions associated with an object. The R-Click menu provides useful Action management operators (Remap, bulk Delete, Renaming, etc) * Riggers using Action Constraints will see the relevant actions first when selecting from the action dropdown. Alternatively, they can Drag n' Drop from the outliner too.
Author
Member

Changed status from 'Needs Triage' to: 'Confirmed'

Changed status from 'Needs Triage' to: 'Confirmed'
Author
Member

Added subscriber: @wbmoss_dev

Added subscriber: @wbmoss_dev
Member

Added subscriber: @BClark

Added subscriber: @BClark
Member

Not sure where this would go feature wise (outliner improvements or in combo with NLA etc) but being able to drag and drop them from the outliner into the NLA as clips would be handy and or right click on them in the outliner and add them to the NLA or make them the current action..
In short make it easier to manage actions without having to always jump to the Dope Sheet and switch to the Action Editor.

Not sure where this would go feature wise (outliner improvements or in combo with NLA etc) but being able to drag and drop them from the outliner into the NLA as clips would be handy and or right click on them in the outliner and add them to the NLA or make them the current action.. In short make it easier to manage actions without having to always jump to the Dope Sheet and switch to the Action Editor.
Author
Member

being able to drag and drop them from the outliner into the NLA as clips would be handy

I don't think anywhere else in Blender does outliner Dnd to another editor so the support probably doesn't already exist, and thus too out of scope.

right click on them in the outliner and add them to the NLA or make them the current action

I like the idea too and already looking into it. For adding to the NLA, it would just add a new track+strip per selected action. If you had anything more convenient in mind, let me know.

> being able to drag and drop them from the outliner into the NLA as clips would be handy I don't think anywhere else in Blender does outliner Dnd to another editor so the support probably doesn't already exist, and thus too out of scope. > right click on them in the outliner and add them to the NLA or make them the current action I like the idea too and already looking into it. For adding to the NLA, it would just add a new track+strip per selected action. If you had anything more convenient in mind, let me know.

Added subscriber: @dr.sybren

Added subscriber: @dr.sybren

Currently stashed actions and override tracks are in conflict with override tracks, where both systems assume the first N tracks are stashed/override.

IMO this is a very strong point. Library overrides are the new way of doing things. I'm not saying that everything should move just because the LibOverride train is coming, but it's a good motivation for getting older hacks out of the way.

What I'm missing is this design are:

  • how existing NLA-stashed Actions will be handled,
  • what the new workflows will look like (basically how you envision artists working with this feature), and
  • how these workflows will be implemented (UI, operators, etc.).
> Currently stashed actions and override tracks are in conflict with override tracks, where both systems assume the first N tracks are stashed/override. IMO this is a very strong point. Library overrides are the new way of doing things. I'm not saying that everything should move just because the LibOverride train is coming, but it's a good motivation for getting older hacks out of the way. What I'm missing is this design are: - how existing NLA-stashed Actions will be handled, - what the new workflows will look like (basically how you envision artists working with this feature), and - how these workflows will be implemented (UI, operators, etc.).

Added subscriber: @LucianoMunoz

Added subscriber: @LucianoMunoz

I think drag and drop from the outliner is a gorgeous idea:

draganddropMaterials_outliner.mp4

I think drag and drop from the outliner is a gorgeous idea: [draganddropMaterials_outliner.mp4](https://archive.blender.org/developer/F9745557/draganddropMaterials_outliner.mp4)
Author
Member

I never knew you can Dnd from the outliner. Thanks Looch!

~Updated the design task. Let me know if I missed something or anything needs clarified.

I never knew you can Dnd from the outliner. Thanks Looch! ~Updated the design task. Let me know if I missed something or anything needs clarified.

Added subscriber: @AndyCuccaro

Added subscriber: @AndyCuccaro
Member

Adding a note to come back and look at this

Adding a note to come back and look at this
Philipp Oeser removed the
Interest
Animation & Rigging
label 2023-02-09 14:35:54 +01:00
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
5 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#85352
No description provided.