Overriding an armature whose custom property is referenced by a driver in another object creates a duplicate object #100428

Closed
opened 6 months ago by Vyach · 27 comments
Vyach commented 6 months ago

Simplified Report

  • The following file contains an armature with a custom property that enables overrides.
  • The custom property is referenced by a driver in the modifier of the Plane object.
  • In a new file, link both objects from the attached file.
  • Override the plane and its contents.
  • Override the armature object.
  • Override the armature data-block.
  • A new duplicate of the plane is created. Which is the unexpected part.

libraryWithDriver.blend

20220929-134743.mp4

Original Report

System Information
Operating system: Windows-10-10.0.17763-SP0 64 Bits
Graphics card: NVIDIA GeForce RTX 3060/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 512.95

Blender Version
Broken: version: 3.4.0 Alpha, branch: master, commit date: 2022-08-06 22:09, hash: 8b51bd61fd
Worked: 3.2.2, bcfdb14560e7, 2022-08-02 18:15

Short description of error
When there are rig and parented object linked and overriden, the attempt to make override over armature datablock produce a copy of parented object

Exact steps for others to reproduce the error
To reproduce, try same with 3.3 and 3.4
Create new file, link both objects from Rig.blend
Make Library override hierarchy for both,
Rig datablock stays linked.
Try to make Library override hierarchy for it
67955211.png
b3.3 do it properly. b3.4 produce a copy of parented object only if original object was linked. If it wasnt, action do not produce a copy. So there is no way to get rid of unwanted copy and its remove in this case.
Rig.blend

## Simplified Report - The following file contains an armature with a custom property that enables overrides. - The custom property is referenced by a driver in the modifier of the Plane object. - In a new file, link both objects from the attached file. - Override the plane and its contents. - Override the armature object. - Override the armature data-block. - A new duplicate of the plane is created. Which is the unexpected part. [libraryWithDriver.blend](https://archive.blender.org/developer/F13591856/libraryWithDriver.blend) [20220929-134743.mp4](https://archive.blender.org/developer/F13591875/20220929-134743.mp4) ## Original Report **System Information** Operating system: Windows-10-10.0.17763-SP0 64 Bits Graphics card: NVIDIA GeForce RTX 3060/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 512.95 **Blender Version** Broken: version: 3.4.0 Alpha, branch: master, commit date: 2022-08-06 22:09, hash: `8b51bd61fd` Worked: 3.2.2, `bcfdb14560e7`, 2022-08-02 18:15 **Short description of error** When there are rig and parented object linked and overriden, the attempt to make override over armature datablock produce a copy of parented object **Exact steps for others to reproduce the error** To reproduce, try same with 3.3 and 3.4 Create new file, link both objects from Rig.blend Make Library override hierarchy for both, Rig datablock stays linked. Try to make Library override hierarchy for it ![67955211.png](https://archive.blender.org/developer/F13389569/67955211.png) b3.3 do it properly. b3.4 produce a copy of parented object only if original object was linked. If it wasn`t, action do not produce a copy. So there is no way to get rid of unwanted copy and it`s remove in this case. [Rig.blend](https://archive.blender.org/developer/F13389565/Rig.blend)
Vyach commented 6 months ago
Poster

Added subscriber: @Vyach

Added subscriber: @Vyach
Collaborator

#101466 was marked as duplicate of this issue

#101466 was marked as duplicate of this issue
Collaborator

Added subscriber: @lichtwerk

Added subscriber: @lichtwerk
Collaborator

Changed status from 'Needs Triage' to: 'Needs User Info'

Changed status from 'Needs Triage' to: 'Needs User Info'
Collaborator

Since c73cc15e07, the context menu has changed, could you update your repro steps to reflect that (just to make sure not to confuse others looking at this)
Please use https://builder.blender.org/download/daily/
Please also check if

Rig datablock stays linked.
Try to make Library override hierarchy for it

still applies after said change (seems I cannot reproduce - or I am misunderstanding)

Since c73cc15e07, the context menu has changed, could you update your repro steps to reflect that (just to make sure not to confuse others looking at this) Please use https://builder.blender.org/download/daily/ Please also check if > Rig datablock stays linked. > Try to make Library override hierarchy for it still applies after said change (seems I cannot reproduce - or I am misunderstanding)
Vyach commented 6 months ago
Poster

@lichtwerk
Link armature and ball objects from Rig.blend
Select eack and make Library override → create → selected and content
Rig data-block (Alpha-rig) still linked.
Select it, make Library override → create → selected
It produce a copy of ball.

If only armature was linked without a ball, the last action will not produce any ball.
If ball parented to armature in the rig file, this issue will not appear

2022-08-17_01-41-03.mp4

@lichtwerk Link armature and ball objects from Rig.blend Select eack and make Library override → create → selected and content Rig data-block (Alpha-rig) still linked. Select it, make Library override → create → selected It produce a copy of ball. If only armature was linked without a ball, the last action will not produce any ball. If ball parented to armature in the rig file, this issue will not appear [2022-08-17_01-41-03.mp4](https://archive.blender.org/developer/F13395403/2022-08-17_01-41-03.mp4)
Collaborator

Changed status from 'Needs User Info' to: 'Needs Triage'

Changed status from 'Needs User Info' to: 'Needs Triage'
Collaborator

Added subscriber: @OmarEmaraDev

Added subscriber: @OmarEmaraDev
Collaborator

Changed status from 'Needs Triage' to: 'Needs User Info'

Changed status from 'Needs Triage' to: 'Needs User Info'
Collaborator

I remember a similar report, which was classified as a known limitation. The manual says something about this:

Proper Collections Layout Matters

For library overrides to work well, it is much better if all the collections needed by the character are children of the root (linked and instantiated) one, such that there is a clear hierarchy. Otherwise, some data may not be properly automatically overridden, and other operations may be less reliable.

So having two separate objects with no defined hierarchy makes operations less reliable and data might not be automatically overridden as you noted. Does that make sense?

I remember a similar report, which was classified as a known limitation. The [manual](https://docs.blender.org/manual/en/latest/files/linked_libraries/library_overrides.html) says something about this: > **Proper Collections Layout Matters** > > For library overrides to work well, it is much better if all the collections needed by the character are children of the root (linked and instantiated) one, such that there is a clear hierarchy. Otherwise, some data may not be properly automatically overridden, and other operations may be less reliable. So having two separate objects with no defined hierarchy makes operations less reliable and data might not be automatically overridden as you noted. Does that make sense?
Vyach commented 5 months ago
Poster

@OmarEmaraDev I am not sure, this is related.
My case is not a character, that can be parented to it`s armature.
My case may be few indipendent objects, and all driven from custom property on the bone.

So object(s) will be duplicated only if they are in the scene.
So blender know somehow, that i need those balls,
but it will nod link em from original scene and will not connect driver to them, if they are already linked.
Blender make copy and then connect drivers…
Very unexpected way. I suppose, it is not «known issue», it just wasn`t tested at all, when overrides were made.

And I expect driver connection to the proper object, not to it`s copied instance.

Rig1.blend
2022-09-18_18-13-07.mp4

@OmarEmaraDev I am not sure, this is related. My case is not a character, that can be parented to it`s armature. My case may be few indipendent objects, and all driven from custom property on the bone. So object(s) will be duplicated only if they are in the scene. So blender know somehow, that i need those balls, but it will nod link em from original scene and will not connect driver to them, if they are already linked. Blender make copy and then connect drivers… Very unexpected way. I suppose, it is not «known issue», it just wasn`t tested at all, when overrides were made. And I expect driver connection to the proper object, not to it`s copied instance. [Rig1.blend](https://archive.blender.org/developer/F13506849/Rig1.blend) [2022-09-18_18-13-07.mp4](https://archive.blender.org/developer/F13506845/2022-09-18_18-13-07.mp4)
Collaborator

Changed status from 'Needs User Info' to: 'Needs Triage'

Changed status from 'Needs User Info' to: 'Needs Triage'
OmarEmaraDev changed title from 3.4 Regression: making override on rig produces a copy of parented object to Overriding an armature whose custom property is referenced by a driver in another object creates a duplicate object 4 months ago
Collaborator

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

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

Added subscriber: @stephenthomas

Added subscriber: @stephenthomas

Added subscriber: @artutava

Added subscriber: @artutava

Happening on 3.3.1

Happening on 3.3.1
Owner

Added subscriber: @mont29

Added subscriber: @mont29
Owner

Changed status from 'Confirmed' to: 'Archived'

Changed status from 'Confirmed' to: 'Archived'
mont29 closed this issue 4 months ago
Owner

As already said, with even link to the manual, this is not expected to work. Blender has absolutely no way to know whether a relation between two linked objects should make them part of the same 'override entity' (aka override hierarchy) or not, unless you clearly group them under a same collection hierarchy, and do link and override these.

As already said, with even link to the manual, this is not expected to work. Blender has absolutely no way to know whether a relation between two linked objects should make them part of the same 'override entity' (aka override hierarchy) or not, unless you clearly group them under a same collection hierarchy, and do link and override these.

I'd ask you to reconsider closing this task. The bug that I reported might show the issue in a way that "should" be expected to work. I bumped up against this issue a lot in a project I'm just finishing up, it's definitely a bug that needs to be looked at/fixed. https://developer.blender.org/T101466

I'd ask you to reconsider closing this task. The bug that I reported might show the issue in a way that "should" be expected to work. I bumped up against this issue a lot in a project I'm just finishing up, it's definitely a bug that needs to be looked at/fixed. https://developer.blender.org/T101466

To put it simply, this bug is appearing when new props are being added to an environment file after it has been linked into a shot file. You override in the shot file and unwanted duplicates of the mesh and rig are appearing. This is a very practical/common workflow and the duplicates created are a big issue.

To put it simply, this bug is appearing when new props are being added to an environment file after it has been linked into a shot file. You override in the shot file and unwanted duplicates of the mesh and rig are appearing. This is a very practical/common workflow and the duplicates created are a big issue.
Vyach commented 4 months ago
Poster

@mont29
I agree with Shephen. If it is should not to work, it shouldn`t work at all, but now it creates duplicates!

@mont29 I agree with Shephen. If it is should not to work, it shouldn`t work at all, but now it creates duplicates!
Owner

That should not be aproblem if you are using collections as intended way to group and link/override sets of related objects. If you directly link the objects, then you are on your own, since Blender does not have the necessary information to handle relationships between these in a useful way.

That should not be aproblem if you are using collections as intended way to group and link/override sets of related objects. If you directly link the objects, then you are on your own, since Blender does not have the necessary information to handle relationships between these in a useful way.

My bug report was linking collections as intended. Here's a quick screen recording of the bug without any bells and whistles.

duplicate-bug.mp4

My bug report was linking collections as intended. Here's a quick screen recording of the bug without any bells and whistles. [duplicate-bug.mp4](https://archive.blender.org/developer/F13627922/duplicate-bug.mp4)

The error report that appears at the end reads:

"Data corruption: data-block 'OBAarmature.002' is using another local data-block ('OBArmature.001') as library override reference
Data corruption: data-block 'OBSuzanne.001' is using another local data-block ('OBSuzanne') as library override reference:

The error report that appears at the end reads: "Data corruption: data-block 'OBAarmature.002' is using another local data-block ('OBArmature.001') as library override reference Data corruption: data-block 'OBSuzanne.001' is using another local data-block ('OBSuzanne') as library override reference:
Owner

OK... but that is completely different from what is described in this task itself... Can you please create a new report only for the case you just describe, including the blend files to reproduce it? Indeed I don't think we really tested the case with several different unrelated rigs in a single linked collection, especially not in resync case (when you edit source collection after having already linked and overridden one in shot file)...

OK... but that is completely different from what is described in this task itself... Can you please create a new report only for the case you just describe, including the blend files to reproduce it? Indeed I don't think we really tested the case with several different unrelated rigs in a single linked collection, especially not in resync case (when you edit source collection after having already linked and overridden one in shot file)...

Apologies. My original report showed the error occurring this way and it was merged with this task.

Here's the new report: https://developer.blender.org/T101679

Apologies. My original report showed the error occurring this way and it was merged with this task. Here's the new report: https://developer.blender.org/T101679
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/Collada
Interest/Compositing
Interest/Core
Interest/Cycles
Interest/Dependency Graph
Interest/Development Management
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/Modeling
Interest/Modifiers
Interest/Motion Tracking
Interest/Nodes & Physics
Interest/Overrides
Interest/Performance
Interest/Performance
Interest/Physics
Interest/Pipeline, Assets & I/O
Interest/Platforms, Builds, Tests & Devices
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
legacy module/Animation & Rigging
legacy module/Core
legacy module/Development Management
legacy module/Eevee & Viewport
legacy module/Grease Pencil
legacy module/Modeling
legacy module/Nodes & Physics
legacy module/Pipeline, Assets & IO
legacy module/Platforms, Builds, Tests & Devices
legacy module/Python API
legacy module/Rendering & Cycles
legacy module/Sculpt, Paint & Texture
legacy module/Triaging
legacy module/User Interface
legacy module/VFX & Video
legacy project/1.0.0-beta.2
legacy project/Asset Browser (Archived)
legacy project/BF Blender: 2.8
legacy project/BF Blender: After Release
legacy project/BF Blender: Next
legacy project/BF Blender: Regressions
legacy project/BF Blender: Unconfirmed
legacy project/Blender 2.70
legacy project/Code Quest
legacy project/Datablocks and Libraries
legacy project/Eevee
legacy project/Game Animation
legacy project/Game Audio
legacy project/Game Data Conversion
legacy project/Game Engine
legacy project/Game Logic
legacy project/Game Physics
legacy project/Game Python
legacy project/Game Rendering
legacy project/Game UI
legacy project/GPU / Viewport
legacy project/GSoC
legacy project/Infrastructure: Websites
legacy project/LibOverrides - Usability and UX
legacy project/Milestone 1: Basic, Local Asset Browser
legacy project/Nodes
legacy project/OpenGL Error
legacy project/Papercut
legacy project/Pose Library Basics
legacy project/Retrospective
legacy project/Tracker Curfew
legacy project/Wintab High Frequency
Meta/Good First Issue
Meta/Papercut
migration/requires-manual-verification
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 & Devices
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 Information 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#100428
Loading…
There is no content yet.