Regarding make instances real not respecting hierarchy

Hi.

I would like to understand this:

Blockquote
Note that if the instanced collection was linked from an external file, the Object Data (mesh, materials, textures, transforms) will also still be linked from the original collection. However, the various object’s parent-child relationships do not carry over.

What’s the reason why this happens?

This seems rather un-useful and problematic, unless there is another way of making an instanced collection real respecting the hierarchies, if it’s not, this seems like a bad workflow for production because if you want to have an scenario linked, and then you want to locally modify it, if you make it real you will loose all the relations, so basically you are breaking it.

Not sure who to ask about this, so I’ll let @dfelinto decide who’s this question related to :slight_smile:

Thanks!

1 Like

Same situation here. All the workflow of linked collections worked nicely until we faced the situation of having to break it into the subcollections. At this point we will have to go down the road of appending them instead, which is not ideal.

Make Instances Real operator has a “Keep Hierarchy” option to keep parent/child relationships between objects.
Note should be relative to the fact that object data(mesh, materials, textures) is still linked after that and not local.
But there is a mistake. Of course, Transforms (that are not Object Data properties but Object properties) are local after an Apply > Make Instances Real.
You are still free to make desired Object Data local through Object menu > Relations > Make Local operator.

But the whole point of new system is to make local changes of linked data through Library Overrides.
Make Instances Real will still continue to be useful to join several instances into a unique object.
I use this operator more for modeling purpose than for animation.

Yes, but it seems it doesn’t apply to collections. Just create nested collections in a file_a, link the root collection from file_b and try to make instances local.


In fact, I have failed to find any way in Blender to recreate in file_b the original hierarchy contained in file_a other than unlinking file_a and appending it back to file_b.

Object menu -> Relations -> Make Library Override

Unfortunately not an option for us since the Library Overrides feature “is considered as experimental” and “there are still many known TODOs/issues that have to be addressed”.

Well. You can’t deny that developers are working on it.
What I don’t get is why are you linking collections as instanced collections if instanced collections are an annoyance.

You can link collections as real collections directly.
Just disable Instance Collections checkbox in File Browser properties before pressing Link button.
Collections linked as is can be duplicated or made local by using right click menu in outliner.

Oh no indeed, I never meant otherwise.

For what I’ve seen, it wouldn’t work for the nested collections anyways. In the example above, I cannot make only the AnotherNestedCollection local (or only the cube, for that matter), I have to make local all of its parent collections as well.

You cannot have this collection local like any data that has a parent datablock that is linked.
But you can make a local duplicate. Right click menu -> Duplicate collection.
Then, you can simply disable linked collection and use duplicate as you want.

Just for completion, at the end the solution we are applying is not using make instances real method. Since we handle the scenes being linked, we just link them on a new file (without being instanced) and parse the hierarchy making all the collections and the subcollections local, but keeping the objects linked. So all parents collections are already local in case specific objects need to become local as well.