New drivers don't propagate to library override if object is made local #124531

Closed
opened 2024-07-11 15:57:31 +02:00 by MultLabs · 6 comments

System Information
Operating system: Linux-6.5.0-14-generic-x86_64-with-glibc2.35 64 Bits, X11 UI
Graphics card: NVIDIA GeForce RTX 4080/PCIe/SSE2 NVIDIA Corporation 4.6.0 NVIDIA 535.146.02

Blender Version
Broken: version: 4.2.0 Beta, branch: blender-v4.2-release, commit date: 2024-07-08 19:36, hash: d527e3a6bd78

Short description of error
I'm not sure if this is a bug, because I don't really understand how you can make local objects inside the override library while keeping all references.
But I've run into the problem that new drivers are not propagating into the override library from an object I made local. (I made it local because without that it is impossible to access the Hide Render property).

Exact steps for others to reproduce the error

Test file:
test file.blend
Library file:
assets.blend

  • Place the files in the same directory, open the test.blend file.
  • Toggle Empty's Hide Render property.
  • Observe that driver in Array modifier is changed, while driver in Bevel is not changed.

Bevel modifier was added after library linking.

Exact steps for others to reproduce the error from scratch

  • Use same files.
  • Open assets.blend
  • Optional: select the Cube object and add a modifier.
  • In outliner: find the Empty object and, selecting the Hide Render toggle switch, choose "Copy as New Driver" from the context menu.
  • Paste the driver into the values of the created modifier or use any other value, such as z-rotation of the cube.
  • Save file and open test file.blend. Observe that the created drivers don't work.

I assume that the problem lies in the Empty localization. But Blender doesn't give any error and shows the driver in the UI if it exists.

Resync Enforce seems to solve the problem, but it changes the name of empty, which causes problems in other areas (from my experience)

**System Information** Operating system: Linux-6.5.0-14-generic-x86_64-with-glibc2.35 64 Bits, X11 UI Graphics card: NVIDIA GeForce RTX 4080/PCIe/SSE2 NVIDIA Corporation 4.6.0 NVIDIA 535.146.02 **Blender Version** Broken: version: 4.2.0 Beta, branch: blender-v4.2-release, commit date: 2024-07-08 19:36, hash: `d527e3a6bd78` **Short description of error** I'm not sure if this is a bug, because I don't really understand how you can make local objects inside the override library while keeping all references. But I've run into the problem that new drivers are not propagating into the override library from an object I made local. (I made it local because without that it is impossible to access the Hide Render property). **Exact steps for others to reproduce the error** Test file: [test file.blend](/attachments/c5b84a17-a31c-489b-a7e1-50d619c80f3f) Library file: [assets.blend](/attachments/68f5d3f3-df8c-46a2-996b-69dc407dd630) - Place the files in the same directory, open the test.blend file. - Toggle Empty's Hide Render property. - Observe that driver in Array modifier is changed, while driver in Bevel is not changed. Bevel modifier was added after library linking. **Exact steps for others to reproduce the error from scratch** - Use same files. - Open assets.blend - Optional: select the Cube object and add a modifier. - In outliner: find the Empty object and, selecting the Hide Render toggle switch, choose "Copy as New Driver" from the context menu. - Paste the driver into the values of the created modifier or use any other value, such as z-rotation of the cube. - Save file and open test file.blend. Observe that the created drivers don't work. I assume that the problem lies in the Empty localization. But Blender doesn't give any error and shows the driver in the UI if it exists. Resync Enforce seems to solve the problem, but it changes the name of empty, which causes problems in other areas (from my experience)
MultLabs added the
Type
Report
Severity
Normal
Status
Needs Triage
labels 2024-07-11 15:57:32 +02:00
MultLabs changed title from New drivers don't propagate to library override if object made local to New drivers don't propagate to library override if object is made local 2024-07-11 16:29:58 +02:00
Iliya Katushenock added the
Interest
Overrides
label 2024-07-11 19:47:38 +02:00
Bart van der Braak added
Type
Bug
and removed
Type
Report
labels 2024-08-14 12:57:08 +02:00
Member

Observe that driver in Array modifier is changed, while driver in Bevel is not changed.

Can confirm that behavior in provided file.

made it local because without that it is impossible to access the Hide Render property

What works for me (in a simple test) though is:

  • link the collection from a lib .blend file (still only the driver on the array modifier)
  • make a library override on the collection
  • also make an override on the Empty !
  • so you dont have to make the Empty local
  • (now you can access the Hide Render property and override it)
  • save the main file
  • back in the lib file, update the lib file to have an additional modifier plus the driver and save
  • now open the main file again
  • observe both drivers are working

Does this work for you?

>Observe that driver in Array modifier is changed, while driver in Bevel is not changed. Can confirm that behavior in provided file. > made it local because without that it is impossible to access the Hide Render property What works for me (in a simple test) though is: - link the collection from a lib .blend file (still only the driver on the array modifier) - make a library override on the collection - also make an override on the Empty ! - so you dont have to make the Empty local - (now you can access the Hide Render property and override it) - save the main file - back in the lib file, update the lib file to have an additional modifier plus the driver and save - now open the main file again - observe both drivers are working Does this work for you?
Philipp Oeser added
Status
Needs Information from User
and removed
Status
Needs Triage
labels 2024-08-16 18:00:49 +02:00
Author

Sure, that works for me. But the report is about localization part of the object. I can expect that localized object may have the behavior, and maybe this can be a known issue or even an expected by design. But I suppose that UI shows wrong information in this case, that should be a bug

Sure, that works for me. But the report is about localization part of the object. I can expect that localized object may have the behavior, and maybe this can be a known issue or even an expected by design. But I suppose that UI shows wrong information in this case, that should be a bug
Member

But the report is about localization part of the object

I made it local because without that it is impossible to access the Hide Render property

This is why I suggested to make an override on the Empty as well ;)

Will check the behavior with making it local

>But the report is about localization part of the object >I made it local because without that it is impossible to access the Hide Render property This is why I suggested to make an override on the Empty as well ;) Will check the behavior with making it local
Member

So I think this is actually intended behavior.

If you change the lib file to have another driver, this driver will remain in a "linked" state.
The fact that you made the driver target local in the main file

  • updates the drivers present at that point in time in the main file (remaps the driver targets to the now local target)
    -- at that state from the main file, there are no linked driver targets actually, the only driver target is local, driver targets from the lib file are not pulled in
  • BUT when the lib file changes and now has driver targets that are not local in the main file, this will now pull that object in as a system override (Empty.001) that you cant change.

Makes sense?

@mont29 please correct me if I am wrong

So I think this is actually intended behavior. If you change the lib file to have another driver, this driver will remain in a "linked" state. The fact that you made the driver target local in the main file - updates the drivers present at that point in time in the main file (remaps the driver targets to the now local target) -- at that state from the main file, there are no linked driver targets actually, the only driver target is local, driver targets from the lib file are not pulled in - BUT when the lib file changes and now has driver targets that are not local in the main file, this will now pull that object in as a system override (Empty.001) that you cant change. Makes sense? @mont29 please correct me if I am wrong

Sounds indeed like expected behavior. Please also check the manual regarding animation data and liboverrides.

Sounds indeed like expected behavior. Please also check [the manual](https://docs.blender.org/manual/en/4.2/files/linked_libraries/library_overrides.html#animation-overrides) regarding animation data and liboverrides.
Member

OK, will close then (of course feel free to comment again if you still think you've found a bug)

OK, will close then (of course feel free to comment again if you still think you've found a bug)
Blender Bot added
Status
Archived
and removed
Status
Needs Information from User
labels 2024-09-02 12:14:16 +02:00
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset System
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Code Documentation
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
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
Viewport & EEVEE
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Asset Browser Project
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
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
Module
Viewport & EEVEE
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Severity
High
Severity
Low
Severity
Normal
Severity
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
3 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#124531
No description provided.