Shader Editor per scene rather than per material
Hi,
I am new to Blender, so maybe I am missing something. I am a 3D expert with 30 years of experience. Currently I am very disturbed by the Blender Shader editor. Apparently it is restricted to working with a single node tree at a time. There is no easy way to, for example, instantiate a texture into two different shader closures.
There is a workaround, but it is exceptionally complex and time consuming. I can create a Group node. But I have to be careful because apparently the exposed parameters of the Group will always override the internal parameters. This is totally unexpected and very unintuitive. Also it is not explained in the docs as far as I can see.
So, in Maya, or really any other 3D app, I have an open sandbox graph. I can see any and all shading nodes at once. I can connect anything to anything. If I need to use the same texture in two different materials, I just connect them. Done and done.
In Blender, to connect a texture to two different materials, it's a super long and super confusing process. Create a Group node. Drill into the Group node and hide all of the input port values, otherwise the exposed parameters will override the instancing of the contained node tree. Select a different object with its own material tree. Add the previously created Group node and connect it. To edit the texture on both material trees at once, I have to drill into the Group node, find the parameter, change it, then exit the Group node.
This is the most convoluted and difficult solution to a simple problem. Please, please, PLEASE create a Shader Editor that is not restricted to a single material at a time. This is an incredible waste of time and that in turn creates massive barriers to productivity and creativity.
Thank you
7 Comments
Copy & paste the texture node! That's it!
* @zanqdo * that's not an instance, that's a full copy.
* @-L0Lock- * No it isn't. It's a shared datablock. The image is stored in a datablock that will have two users.
* @zanqdo * The image will be shared but none of the others nodes will be. By simply assigne the same material on two different objects, it will make an instance for each nodes in the graph.
* @zanqdo * I guess an example is worth hundreds of words!
For two materials with lots of things happening inside and that have nothing in common but one node with its settings that need to be the same in both materials.
An instanced node would allow you to change that node's settings in one material and have it automatically propagated in any other instance of that node.
It works exactly the same way as instanced objects. If you make instances out of a light and you change the power of one if these instances, all the instances will change power. No need for intense copy-pasting at each change, no need to setup a complicated nesting like nodegroups. It's just pressing Alt D instead of Shift D.
In Blender's current state, unless you spend extra time to set up a nodegroup, there is no way to do that with nodes. And that means for example, no simple way to use the same textures in several materials, no shared settings like fresnel or color corrections, no shared texture mapping, and the list goes on ...
* @-L0Lock- * I get it, it's just the original post was misinformed. Easier group nodes or stuff like that would be good
* @zanqdo * are you saying my post was misinformed? How so? Blender is the only major 3D program that has this shocking limitation. The Shader Editor can only work on one shader tree at a time. Instancing shader nodes is a major PITA that takes a great deal of time and effort to accomplish something that literally takes one second in any other major 3D application.