I’ve been having some trouble maximizing the use of instanced geometry in Blender and how materials are tied to mesh data, forcing instanced objects to use instanced materials.
Would it be possible to change the underlying assignment of materials to a slot number as opposed to a specific material datablock? It seems this would free instanced mesh objects to use different materials and greatly improve the instancing capabilities of Blender as a whole.
I imagine the feature would be relatively simple, in the sense that the data stored in the mesh datablock would contain only a number where it currently contains a material (or some other pointer to the material). Then, since materials data for an object is already stored in a list, the geometry would look for that slot. So there would be one option in user preferences to tell Blender that if the slot is out of range or the user could specify using the last material slot or the first slot. If an object has no material, then the slot assignment is ignored (but not removed, in case a material is applied later).
This would maintain the ability to assign materials at the sub-object(vertex,edge,face) without changing the interface necessarily. It would also open the door for materials to be re-ordered and replaced more easily on sub-object assigned faces, since the slot assignment would be unchanged at the geometry level.
Additionally, the material properties panel could (but wouldn’t have to) change to show the slot number for each material in the material_slots, and allow for re-ordering the material_slots, similar to how modifiers can be re-ordered by moving them up or down the list.
Might be a tall order for a feature request, but it would SO extend the potential of geometry instances within a scene.