Library Overrides: Usability issues/paper-cuts #76555
Labels
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
7 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: blender/blender#76555
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
#53500 gives an overview of what still needs to be done for library overrides as a whole, it suggests ways to address some of the points listed here.
Intend of this task is to take a step back and give a list of concrete usability paper-cuts that would be good to address. It is mostly based on a feedback video by @eyecandy. The possible solutions can be discussed here too.
There is no straightforward way to duplicate an override. (
74ec37b70c
)The UI feedback on override status is unreliable (
fd8d245e6a
)To work around performance issues, only a single data-block is evaluated for UI feedback after calling the "Make Library Overrides" operator. Unfortunately this makes library overrides appear broken/buggy.
Collections must be linked as instances for "Make Library Overrides" to work on the entire collection contents. (
680a81fc49
)While not a big issue in practice, this could simply be addressed by letting the "Make Library Overrides" operator act on contents of a collection only, if the collection is not instanced.
After the "Make Library Overrides" operator is run on a collection instance, the entire hierarchy of the overriden collection is expanded by default. (
417ebc3845
)Collections are expanded by default, we should probably make an exception for linked ones, which tend to have many items. D7626
After the "Make Library Overrides" operator is run on a collection instance, the overriden collection gets placed in the scene collection; the instancer empty is still there, but typically unused. (
bd3ab27410
,1743326889
).The overriden collection could be placed in the parent of the instancer empty, and the empy unlinked (or remove if this was the only user). D7626
Materials are not linked with collections (so object materials can not be overriden)This is not part of this task, it's a later step in the roadmap.When overriding an object within some linked (not instanced) collection, all its linked parent collections have to manually be overridden. (
e3fd60b182
,680a81fc49
)There could either be an operator(-option) to automatically override parent collections, or the code would always do this.
Library overrides can not be fully reset (i.e. removing all override operations, and reloading data from linked reference).
Note that by default, this should not clear overrides of ID pointers, not even sure we want to give that option to the user? Would nuke all overrides in dependency hierarchy as well...
Library overrides can not be removed entirely (i.e. deleting the local override, and relinking its usages to the linked reference).
4aa04b6490
Note that this will likely also require purging other overrides that were only used by the removed override.
Library overrides can not be regenerated from source linked data (to take into account e.g. changes in relationships between data-blocks...).
aeaf2b0dd4
This requires doing a proper complete re-creation of the override, then copying existing valid overrides properties to new ones, remapping 'external' pointers to old overrides to new ones, and finally deleting old override data-blocks.
Library overrides can not be disabledThis is not possible by design, overrides do not store any value, so it would not be possible to keep edited values from overrides and restore them when un-muted.The overrides should be listed in the outliner, with an eye icon to enable/disable them. D7631
Even if no value is actually overriden, a library is still marked as overriden.This is expected and required behavior, being an override is a major status info of a data-block, whether some of its data are actually changed or not is irrelevant.(There are a few other issues mentioned in the video, but these may be bugs that are already addressed. Needs to be checked still.)
Changed status from 'Needs Triage' to: 'Confirmed'
Added subscriber: @JulianEisel
Added subscriber: @eyecandy
Added subscriber: @mont29
Added subscriber: @DuarteRamos
Added subscriber: @Scaredyfish
Added subscriber: @reed2000
Regarding the Make Library Override operator (and the menu it brings up):
As far as I can tell the operator is meant to replace the Make Proxy option we had before, which was specifically made for 'popping out' rigs from Groups to allow local manipulations. The user selects the rig which will be placed next to the collection for easy access.
This is not the case with overrides because the internal hierarchy of the overriden collection will (and should) stay intact. The rig stays in the same place, even if it's in a subcollection. To make Make Library override behave more in the same way (and provide similar legacy behavior) it should link the object, which was selected in the dialog before to the same level as the new collection object.
This would make it a more adequate replacement of the old workflow.
However, I don't think this is the right workflow for overriding characters for animation for the following reasons:
My suggestion for a better workflow is this:
The operator overrides the collection hierarchy the object is in and all data that is affected by it
This is already very close to the current behavior, just that it's afaik not possible to use the Make Library Overrides operator on an object in a non-instanced collection. Also, the internal hierarchy of a rigged character would have to be clean enough to make it intuitive to select a rig and navigate the asset (something that riggers and character authors should definitely be mindful of).
I hope I have explained this clear enough!
Andy
Added subscriber: @RedMser
Changed status from 'Confirmed' to: 'Resolved'
One done. :)