Enable Per-Object Material Variations with Exposed Parameters
Feature Request:
Currently, when using exposed parameters in a material, any changes made to these parameters affect all objects that share the same material. It would be extremely useful to enable per-object material variations, so that individual objects can have different values for exposed parameters without the need to create duplicate materials. At present, achieving this requires the use of Geometry Nodes.
This functionality could work similarly to how Geometry Nodes handles attributes, where parameters such as color, roughness, and other material settings can be controlled on a per-object basis while still using a single shared material.
Benefits:
-
Allows for individual control of material properties (e.g., color, roughness) per object.
-
Simplifies material management, reducing the need for multiple material copies.
-
Improves workflows for scenes with many objects requiring slight material variations.
By enabling this feature, Blender could offer a more flexible and efficient way to work with materials across a range of objects.
4 Comments
You can already do that with the Attribute node.
On the material:
Then go to "Object Properties", and to the following:
This would require for Materials to act as Node Group as a whole just like Geometry Nodes.
I strongly like this idea, essentially meaning that you could call entire materials in other materials. But this would require a total overhaul of the Shader Editor, how materials work and such.
This is no easy task and without a bunch of developers on it, it will probably never happen. For it to happen, we need to first tell if it is worth it, if it is even possible in the first place (Any change for Cycles is tidious, such a feature doesn't seem to exist on other similar applications etc..)
Then how it would work really? -- Materials in the Shader Editor always end with a Material Output node, which has a strict limit of Outputs, including Surface, Volume, Displacement and Thickness. If Materials were "Node Groups" like Geometry Nodes, we wouldn't really be able to output anything we want, or if so, it would conflict with the rest of Blender UI, and we need to come up with a clever design.
Blender devs shared a keen interest of wanting to unify the node systems as much as possible, so Shaders, Geonodes and Compositor can all be used in the most similar way, so I won't be surprised if they come up with a clever idea to expose arbitrary values in materials.
新增一种叫做材质实例的数据块,用于引用原始材质,并允许选择覆盖原始材质的参数,材质实例的属性编辑器界面可以保持和原始材质一致