Page MenuHome

Make Instances Real: Keep Hierarchy option has no effect when duplicates are collection instances
Closed, ResolvedPublic

Description

System Information
Operating system: Windows-10-10.0.17134 64 Bits
Graphics card: GeForce GTX 1060 6GB/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 430.39

Blender Version
Broken: version: 2.80 (sub 74), branch: blender2.8, commit date: 2019-06-30 15:32, hash: rB7c8bf77e1351

Short description of error
When using the make instance real function the hierarchy of the objects gets lost even if the keep hierarchy option is ticked which affects both the grouping of the objects inside the original collection as well as any object parenting that is involved in the collection.

Exact steps for others to reproduce the error
In the uploaded blender file execute the "Make Instance Real" operation and ensure "Keep Hierarchy" is ticked.

Event Timeline

Daniel (bestdani) renamed this task from Make Instances Real: Keep Hiearchy option has no effect when duplicates are collection instances to Make Instances Real: Keep Hierarchy option has no effect when duplicates are collection instances.Jul 1 2019, 8:11 AM
Daniel (bestdani) updated the task description. (Show Details)
Philipp Oeser (lichtwerk) lowered the priority of this task from 90 to 50.

asking @Bastien Montagne (mont29) for advice here: not 100% sure how instances are handled in this case, but the way it is handled atm. looks a little weird [duplicating collection instance contents as well as collection instances as well?]

Will confirm for the time being...

The behavior of creating object copies is working as expected (Collection copies are mere empties, not duplicollections anymore).

The problem is with re-parenting, that one is broken for anything but simplest cases, and reading the code, has been broken for years (it's trying to get parent object's new copy using child persistent_id...). Still trying to figure out the proper solution here.

Pffff… this has been a nightmare to understand fully, and incoming fix only partially addresses the issue, which basically was that this code was not designed to handle recursive instancing at all.

The incoming commit, which extends/pushes a bit forward current code, is going to add some minimal support for recursive parenting (the case reported here will be working as expected e.g.), however it wont work fully in all complex cases. That would require some refactor, which is out of scope of this task, and not to be done before 2.80 is released anyway.