2
$\begingroup$

I'm trying to figure out how to create a material node group that only affects certain Principled BSDF values.

As a simple example I have a cube in which each of the 6 planes have a different Base Color. Let's say I want to create a group and leave the Base Color alone but only be able to change the roughness together on all the 6 sides.

I'm doing something wrong in my testing. When I create a group from one single side, and use that across the remaining sides, it is setting the Base Color to all the sides to the first selection when I want to leave all the Base Colors alone.

More Information: Photo included below. Maybe another way of asking is let's say I have an object with lots of surfaces all a different color and I want to change all the roughness, IOR, transmission simultaneously. I can then change each of the 3 properties until I get the desired look around the whole object without having to go into each surface individually. Is there another way to do it without using a node tree group.

Simple Cube example with node tree

Still having problems. See animated GIF link below for attempt 2 using Markus von Broady tips:

Test 001 animated GIF steps

Thanks!

$\endgroup$
5
  • 1
    $\begingroup$ You may have a wrong understanding of how the shading pipeline works. Show your current setup (node tree). $\endgroup$ Oct 24, 2022 at 21:18
  • $\begingroup$ Thanks @MarkusvonBroady I've added an image and tried to restate the question in another way. $\endgroup$
    – PPL
    Oct 25, 2022 at 11:43
  • $\begingroup$ Still testing. @MarkusvonBroady. Off topic question: What app did you use to record that section of the screen and what app if not the same did you use to convert it to animated GIF? $\endgroup$
    – PPL
    Oct 25, 2022 at 19:53
  • $\begingroup$ ShareX getsharex.com $\endgroup$ Oct 25, 2022 at 19:58
  • $\begingroup$ Thanks @Markus that looks like another toy for my collection. $\endgroup$
    – PPL
    Oct 25, 2022 at 20:31

1 Answer 1

3
$\begingroup$

Shared Custom Group

You can use a shared group that exposes sockets that are supposed to be material specific, while using its own values for shared stuff.

  1. To easily isolate some sockets from the Principled BSDF, connect the sockets you want to isolate to some nodes (here: only base color). Then select the Principled BSDF together with one more node (it can be any temporary node; it doesn't have to be connected, but I did connect it as it will be useful when I hide sockets). Then select the Principled and the one additional node (here Value node), and press ✲ CtrlG:

  1. Optional step: Now in the Custom Group, you can hide some sockets, by connecting everything to the sockets you don't want to hide, and with the Principled BSDF node selected, pressing ✲ CtrlH. You can also right-click the node and choose "Toggle Node Options":

💡 Those aren't really things you want to do for your own projects, I do these steps for educational purposes to get rid of irrelevant parts…

  1. Remove the temporary node and press ⭾ Tab to exit the custom group; there you can also remove another temporary node:

  1. You can now also "Toggle Node Options" for the custom group, copy-paste it to other materials, and everything inside the custom group will stay synchronized:

Of course you can expose all values and just disconnect some when you decide you want them all to be shared.

💡 Using this technique will make the shared values (here: metaliness) shared among all polygons using the material. This means that if you want to share only within a single object, you need to use a different Custom Groups for other objects.

Driver

You can copy one of the material's values as a new driver, and paste that driver to other material's values. It can be hard, however, to remember which material you're supposed to modify, so you may consider creating a new custom property instead:

💡 It's a little misleading I used an object's custom property, even though (as you see on the GIF) a driver points to a unique place that isn't updated when you duplicate an object - how could it be updated, if new materials are not created? Unfortunately a node tree doesn't have a way to know what is using it when it's evaluated.

Geometry Nodes

Unlike in shading, geometry node trees have modifier wrappers. This means that you can send data from the modifier to the node tree, and since modifiers get duplicated when objects are duplicated (modifiers actually can't be reused, they have only a single user), the drivers are also duplicated and updated to new targets:

$\endgroup$
10
  • $\begingroup$ Shared Custom Group. That might be exactly what I'm looking for. There are so many instructions on Node Groups but I don't recall seeing anything like you have done with "Shared" Custom Groups. Is there a video anywhere to get to that step you have in that first animation you posted here? I did try Google but to no avail. $\endgroup$
    – PPL
    Oct 25, 2022 at 18:53
  • $\begingroup$ @PPL select the Principled BSDF node, and press CTRL+G $\endgroup$ Oct 25, 2022 at 19:19
  • $\begingroup$ you sliced/split that blender screen nice for your examples. I can't say how many times I tried Ctrl+G on Principle BSDF which is the easy part to get a saved group but it's what comes after that which you demo in example 1 which allows the node group metallic slider to affect all the sides while not affecting the color. You can see one attempt I made in the new above linked video. $\endgroup$
    – PPL
    Oct 25, 2022 at 20:36
  • 1
    $\begingroup$ Great answer! Well illustrated and written very understandable even for me! +1 $\endgroup$
    – quellenform
    Oct 25, 2022 at 23:30
  • 1
    $\begingroup$ @MarkusvonBroady Even though I love such small details, I meant more the way you wrote, structured and illustrated it ;-) $\endgroup$
    – quellenform
    Oct 26, 2022 at 9:20

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .