Maniphest T100428

Overriding an armature whose custom property is referenced by a driver in another object creates a duplicate object
Closed, Archived

Assigned To
None
Authored By
Vyacheslav (hitrpr)
Aug 15 2022, 11:24 PM
Tags
  • BF Blender
  • Overrides
  • Core
Subscribers
Artur Tavares (artutava)
Bastien Montagne (mont29)
Omar Emara (OmarSquircleArt)
Philipp Oeser (lichtwerk)
stephen thomas (stephenthomas0)
Vyacheslav (hitrpr)

Description

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.

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: rB8b51bd61fd20
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


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.

Event Timeline

Vyacheslav (hitrpr) created this task.Aug 15 2022, 11:24 PM
Philipp Oeser (lichtwerk) changed the task status from Needs Triage to Needs Information from User.Aug 16 2022, 11:00 AM
Philipp Oeser (lichtwerk) added a subscriber: Philipp Oeser (lichtwerk).

Since rBc73cc15e07ea: LibOverride: Rework Outliner contextual menu., 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)

Vyacheslav (hitrpr) added a comment.Aug 17 2022, 12:48 AM

@Philipp Oeser (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

Philipp Oeser (lichtwerk) changed the task status from Needs Information from User to Needs Triage.Sep 6 2022, 1:44 PM
Omar Emara (OmarSquircleArt) changed the task status from Needs Triage to Needs Information from User.Sep 16 2022, 1:01 PM
Omar Emara (OmarSquircleArt) added a subscriber: Omar Emara (OmarSquircleArt).

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?

Vyacheslav (hitrpr) added a comment.Sep 18 2022, 5:18 PM

@Omar Emara (OmarSquircleArt) 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.


Omar Emara (OmarSquircleArt) changed the task status from Needs Information from User to Needs Triage.Sep 18 2022, 9:11 PM
Omar Emara (OmarSquircleArt) renamed this task 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.Sep 29 2022, 1:48 PM
Omar Emara (OmarSquircleArt) changed the task status from Needs Triage to Confirmed.
Omar Emara (OmarSquircleArt) updated the task description.
Omar Emara (OmarSquircleArt) added projects: Overrides, Core.
Omar Emara (OmarSquircleArt) added a subscriber: stephen thomas (stephenthomas0).
Artur Tavares (artutava) added a subscriber: Artur Tavares (artutava).Oct 5 2022, 5:02 PM

Happening on 3.3.1

Bastien Montagne (mont29) closed this task as Archived.Oct 6 2022, 1:01 PM
Bastien Montagne (mont29) added a subscriber: Bastien Montagne (mont29).

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.

stephen thomas (stephenthomas0) added a comment.Oct 6 2022, 1:18 PM

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

stephen thomas (stephenthomas0) added a comment.Oct 6 2022, 1:22 PM

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.

Vyacheslav (hitrpr) added a comment.Oct 7 2022, 11:35 AM

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

Bastien Montagne (mont29) added a comment.Oct 7 2022, 2:50 PM

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.

stephen thomas (stephenthomas0) added a comment.Oct 7 2022, 3:27 PM

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

stephen thomas (stephenthomas0) added a comment.EditedOct 7 2022, 3:31 PM

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:

Bastien Montagne (mont29) added a comment.Oct 7 2022, 3:59 PM

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

stephen thomas (stephenthomas0) added a comment.Oct 7 2022, 4:30 PM

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