Scenes that share objects but have different materials

You can also make a material input for the geonode and select between all the materials in your file from the drop-down list.
Different copies of the object with the same geonode (linked or unlinked) can use different materials by choosing the material with the geonode.

1 Like

So I tried a linked copy of the scene, and then switched the object materials to per object instead of data… and it doesn’t matter when I switch between scenes. They still use the same material.

You mentioned needing to hide objects, but I don’t understand that. Each scene should use it’s own linked copy of the object, shouldn’t it? It said so in the menu option hint text…

EDIT: Oh, god damnit… reading the hint text more closely, it links the collections only… :frowning:

So if I want a “full linked copy”, I have to do a full copy, and then manually re-link all mesh data? :man_facepalming:

I know Blender has this god-awful concept of a “library override” (that’s currently horribly bugged), but can you leverage that to get a linked scene with replaceable materials? I’m just looking for a sane, straight-forward Ux here…

The objects that you see in a linked scene are not instances, but the same exact objects (a hint for that is mesh data still having just 1 user).Thats why you just need to make manual instances, with materials attached to object data. Then either selectively display them if the scenes are linked or just deleting one of the sets in each duplicated scene. I tried this with 3 objects and it takes a few seconds to setup. But works best if you change in advance the preferences so the material applies at object level. Otherwise it can be annoying to unlink/re-link materialz.

That “hint” is just insanely bad Ux to me… the icon looks exactly the same in the outliner. So how do I delete a “linked collection” from a “linked copy” scene, without deleting the collection from ALL scenes?

If the scenes are linked you can’t delete but you can hide the objects. In one you have visible the instances, the sources in the other. I agree it’s bad design but not that arcane.

Another Ux fail, imo. Damnit Blender!

I began writing a script that automatically creates a duplicate scene where every object is an instance and has a per-instance material, but it doesn’t handle nested collections, objects in the Scene collection, objects in disabled collections (no idea why) and also gets wonky on some object transformations (I suspect those in the disabled collections)…

(EDIT: If the original scene already had instances with the same color, the script doesn’t respect that either, and I’m not sure how to solve it… a “normal” Ux would be that when you change the material of an instance, the app asks if you want to change on all instances, but Blender isn’t friendly like that…)

I don’t even know scripting. I had to do an internet search for literally every line. :skull:

Hey all, I hope this topic is still relevant for some. I had the same problem described by the OP and actually found a relatively simple solution.

Setup:

  • Scene 1
  • Scene 2
  • Object 1, linked to both scenes
  • Material red, assigned to object 1

Requirement:

  • Object 1 should have the material red in Scene 1.
  • Object 1 should have the material yellow in Scene 2.
  • If the mesh of object 1 in scene 1 is changed (e.g. the size on the X axis), the mesh of object 1 in scene 2 should have changed in the same way.

Solution:

  1. create a new object 2 in Scene 2 (no matter what).
  2. change the data block of object 2 to the data block of object 1.
  3. change the material red from data block to object in object 2.
  4. change the material red in object 2 to a new material yellow.
  5. remove object 1 from the viewport and render of scene 2 (do not unlink)

This means that both objects still have the same data block, but the yellow material is exclusive to object 2, so to speak, which only exists in scene 2. If you change the scene, the material of the object also changes.

1 Like