Material Override on linked objects in multiple scenes in Blender 2.90.1

Hello blender community,

I’m currently doing a project in Blender 2.90.1 that consists in render a set of product images of a tap with multiple finishings.

I would like to make it in a single blender file with multiple scenes, one for each finishing. I would like to have the same data block in each scene but override the material. I have tried to copy and paste objects between scenes and change the data-block to get an instance, but it crashes blender every time. Is there a better way to deal with this kind of scenario? It should be very common I guess.

Thank you very much!

Felipe

Materials can not be overriden at the moment afaik.

If you can use 2.91 you can use a custom propertiy on your instance and then use this custom propertis in an attribute node in your shader.

For example give your instance an integer as custom property and then use this integer to swtich between differnet node chains in your shader.

This would not be the same as having completely separate shaders but I think it is the closest you can get at the moment.

1 Like

Thanks!

My currently solution is:

  1. Assign material to object and not data block.
  2. Create multiple instance duplicates (Alt-D) and then change material in object.
  3. Work with view layers to isolate each instance for rendering.

I would like to have separate scenes, but couldn’t find a way to do it. AFAIK, If I use instance collections, I can’t override materials.

By default, material is linked to mesh.
Alt D is making a linked duplicate.
That is a different object with proper object properties but that is same mesh datablock.

If material is linked to mesh, same mesh means same material.
If material is linked to object, same mesh only means same mesh.

That is all you need to create linked duplicate objects.
Create them in original scene.
Then, change outliner’s view from View Layer to all Scenes.
Drag and drop object from original scene to new one.
Then select original Scene Collection line before selecting Object to be able to unlink it properly.

Or add an object of same type in new scene and then, re-assign wanted mesh datablock.
You will end-up with several unwanted mesh datablocks.
But you can purge blend files from unused datablocks in Orphan Data View of outliner.

1 Like

Thanks!

Or add an object of same type in new scene and then, re-assign wanted mesh datablock.

Blender is crashing every time I do this.

I’ve just tested a new solution that seems to be working and it’s similar of what you said.

  1. I assigned the material to object, not mesh.
  2. Created a new blank scene.
  3. Make a linked object in the new scene (Ctrl+L)
  4. In new scene I made object local in propreties tab
  5. Assign a new material to local object.

It seems to be working.

I really appreciate your time to help me.

Thanks!

Just for information, I open a bug report about this issue (T82952), if you could replicate it, let me know.

System Information
Operating system: Windows 10
Graphics card: Nvidia GTX2070 Super

Blender Version
Broken: Blender 2.90.1

  • Open blender with default scene
  • Create a new empty scene
  • Add a cone object in the new scene
  • Change mesh data block to cube (from original scene)
  • Tab to edit mode and move any edge/face (leave in EDIT MODE)
  • In scenes pull down menu, try to go back to first scene.

INSTANT CRASH to desktop.