Multiple material manipulation

Let’s say you have an object with twenty or so materials. Let’s say you want to change the base color of all of those materials to black. All of the materials are run through principaled BSDF.
Is there a way to change the base color on all twenty at once, or is the only option to change them all one by one?

You could do it with a script, or with some preparation, you could hook all of them to a custom property with a driver and then change them all at once by simply changing that. My preference would be the latter method, it’s a lot more flexible and less messy, but it will require a bit of setup

There are plenty of options that you can use…
You can use the color in a nodegroup and use that nodegroup as your color source for all materials (changes in the default color will propagate to all instances).
You can use drivers… they may me hard to create, but will allow very complex usages of changing colors based on other parts of the context.
But probably the best choice is to use the Attribute Node:

  • add a custom property to your object
  • edit the property and set type to ‘Float_Array’, give it a name and set the subtype to ‘Linear_Color’… (the rest of the settings are ok with the defaults)
  • add AttributeNodes to all your materials, set the type to ‘Object’ and name to the name of your property.
  • now all materials will be using the values RGB in your custom property.
1 Like