Page MenuHome

Removing a material from one object removes it from another
Closed, ArchivedPublicKNOWN ISSUE

Description

System Information
Operating system: macOS-11.4-x86_64-i386-64bit 64 Bits
Graphics card: AMD Radeon Pro 560X OpenGL Engine ATI Technologies Inc. 4.1 ATI-4.5.14

Blender Version
Broken: version: 3.0.0 Alpha, branch: master, commit date: 2021-08-23 15:09, hash: rB7d17f2addf80
Worked: no idea if it ever worked, but it's the same in 2.9.2, 3 and 4.

Short description of error
Objects that share a mesh, but have materials linked to object, not data, still interfere with one another's materials.

Exact steps for others to reproduce the error

  • Note that the two objects share the same mesh but have separate materials linked at the object level.
  • Note that there are no materials attached to the shared mesh.
  • Select Cube B in the outliner.
  • In the Materials Tab, hit - on the material index to remove the Blue material from Cube B.
  • Note that the Red material on Cube A also disappears.

Additional observations: hitting x next to the name of the color instead of - in the materials index works as expected.

Hope that's enough info, there are other very odd behaviours in this area but this was the simplest and hopefully causal example.

File was created in 2.92 then saved again (simpler version) in 3.0.0 Alpha while reproducing.

Based on the attached .blend file

Event Timeline

Philipp Oeser (lichtwerk) changed the task status from Needs Triage to Confirmed.Aug 24 2021, 6:12 PM
Philipp Oeser (lichtwerk) changed the subtype of this task from "Report" to "Known Issue".

Can confirm, this is awkward design (the material slots are kep in sync between object and e.g. mesh).
Dont know the exact reasons for this, assume this is Known Issue (@Bastien Montagne (mont29): correct me if I am wrong)

Materials are owned by the mesh, not by the object.
Object is use of geometry in 3d space. Materials are owned by the geometry.

The other case (as desired by @Bill Hails (billhails)) would be that when linking to an already existing mesh, wouldn't automatically link in the materials as Blender cannot know from which object (if exist) to get it from.

IMO it works as designed, not even a known issue.

Agree this is not a bug, though it can of course be confusing.

The material slots are always owned by the mesh, and that's what you're adding/removing with the +/- buttons. Then you have a per material slot setting to determine if the material is owned by the object or mesh.

The material slots are always owned by the mesh, and that's what you're adding/removing with the +/- buttons. Then you have a per material slot setting to determine if the material is owned by the object or mesh.

That makes perfect sense, it's just a shame the ui doesn't communicate that. Maybe "everything nodes" will get here some day and clarify :-). Thanks for investigating/explaining.

The material slots are always owned by the mesh

That is why I was asking in chat why this is exposed as object.material_slots in the API.
But explanation does make that somewhat clear.