Changing Material of a linked Collection Instance

I have a lot of of linked collection instance assets im using within an archviz scene. For some of them, i wanna use materials that are already part of the scene (for example: a ornamental ceiling that should share the same texture as walls and ceiling but is separated due to organization and performance).

Even with an library overwrite, i can only access the empty that a collection instance is made of. So i guess change the material linking from obj-data to obj is of no help here. (Even it’s not about texturing, how about lights within the linked instance?)


If you select your collection instance and go to object -> relations -> make library overrides
and then confirm the popup can you then select the individual objects?

No, as stated in the initial post. I guess i have to be more precise: I have a library file with the regular meshes that form the final object. I then create a Collection Instance out of it and within my main project, i link this Collection Instance. And to be honest, a simple object translation should not need a library overwrite at all (if i change the 3d cursor position before instancing, it can modify thoose data without an override too)

Remember it’s in 2.8, i tried the 2.9 overhaul but i think that should be reverted since no one can handle that mess in the outliner after you did a library overwrite.

Not sure if I understand exactly what you have done. But I believe that you are creating the collection instance in your library file and then link this instance. That is not what you are supposed to do. You are supposed to link the collection itself, not the instance.

I do it like this and it works but has a tendency to crash.

  1. Create object_A and object_B in a new file

  2. Put these two objects into a collection and name the collection “Asset_1”

  3. Save the file as “myAsset.blend”

  4. Open a new Blender and save it as “Master.blend”.

  5. File -> Link

  6. Browse to “myAsset.blend”

  7. Go into “myAsset.blend” and browse to “Collections” and find “Asset_1”

  8. Now “Asset_1” is linked into “Master.blend”

  9. Select “Asset_1”

  10. Object -> Relations -> Make Library Override

  11. object_A and object_B are now selectable individually

  12. Select object_A

  13. Go to Properties Panel -> Material Properties -> Set from “link to data” to “link to object” on the little icon right of the drop down where you can chose a material

  14. Give object_A a new material. One thing that is a bit silly is that you can not create a new material on the object. You have to create a different object, create your material - lets say “Material_Wood” - on this object and then select object_A again and chose “Material_Wood” from the drop down.

  15. Wait for Blender to crash.

1 Like

Are you sure it’s not supposed to link a collection instance? That’s one major point of using this workflow. I don’t want all the base meshes in my scene nor i want to create a relation tree to properly move everything together. A instance is doing all this for you like you joined everything, and it also drop all that useless data you dont need for rendering.

I have a few meshes where i link the basic collection, like you described, but the shadow copy collections that are created when you make a override is something i don’t wanna handle in my scene. Just imagine 100 linked objects (each base has 3 pieces) with a override, thats 300 hidden collection created.

Pretty sure, yes. If you link the collection you do not get all the objects into your scene. You get a single collection instance.

In most cases that’s exactly what you want. You have a lamp, 2 parts are subdivided on render time, one part is simple geometry. You then want to distribute 20 copies of this lamp over your house.

And that is what you get. If you link a collection from another file you get one single collection instance which you can only move around as one.
Only if you override it you can select every single object individually.

I guess we are fine with this part.

It’s just the material override with 2.9 that makes me struggle. As you may already tested out, it’s does not seem possible to add more then one material slot after an override. I wonder if you can only edit as many material slots as the original had assigned? I stopped to experiment more with it as i fear crashing / data loss.

The workflow for this was:

  1. Link the collection from your library.
  2. Add a override
  3. Delete the one material that was linked
  4. Add a material from your scene
  5. Try to add a second material slot (not possible for me)
  6. Try to select the material and try to replace it with another one in your scene (not possible since the dropdown is greyed out for me)

I think that is correct. Amount of material slots is not overridable yet.
But if I may ask, what would this be useful for?

Also, if you reload the the library by setting the outliner to “Blender File” and then right click the file and chose “Reload” all overrides are gone. Either I don’t understand what overrides are supposed to be used for or it is a show stopper bug/limitation.

Hmm… it appears that materials are a “fobidden” override. I guess that explains the crashes.

When reading the .blend file, linked source are duplicated again into local overrides, and then all the diffing data is re-applied on the overrides.
This implies that even if you modify a “forbidden” property, on next file reload it will be restored to the linked data-block’s value