One color property on a rig drives the color of one material on many objects

I had the need to create a skin material for a multitude of characters.
The idea was to create a custom property on the rig to drive the color of many objects belonging to that rig.

After some tinkering here is a way to do just that.

  1. create the objects and for each object create a custom property on the object level.


    Important here is that the name has to be the same for each and every object.
    Use a “Float Array” with a Subtype “Linear Color” to get a chance to set a color here.

  2. create a simple material which grabs the custom property as an attribute from the object this material is attached to.


    Pay close attention to the name of the attribute here.

  3. create a custom property on the bone of the armature that should drive the color.


    The name here can be different, but it has to be also a “Float Array” with Subtype “Linear Color”.

  4. Now the tedious process of creating the drivers and attaching them to the custom properties starts.
    Left-Click on the bone property of the color. Right-Click on Red-Channel and copy this as a new driver.


    Left-Click on the color of the object and Right-Click on the red channel and then paste the driver

    You need to repeat this for every object and all three color channels.

As I said this is a tedious process, but once done you have one single color to drive them all.

The material could even be linked in from a library.
You only need to have a custom property on the objects with the exact same name.

Hope it does help, in case you have questions, feel free to ask away.

2 Likes

That’s really great, thanks a lot for sharing! I’ll read it a couple more times before trying it out to let it sink in in my mind.

Would you mind sharing a small timelapse/screenrecording of how the end result looks? I mean, what do you do afterwards to change the color of the skin of your characters? Do you move around the bone with drivers? Or what do you change?

Hi Andy,
here is a short screen recording of the full process.
Not edited, so there are a few missed clicks.
Hope it helps and it shows at the end what can be done with it.

1 Like

Can use global property - no need for drivers:

…same goes for object-level properties.
Good luck.

1 Like

Thanks a lot! I’ll need to test it as soon as possible, heh.

I tried to use global properties, but if you use mulitple characters in the same scene all get the same skin color.
But I wanted to have a different skin color for each character I linked in.
And the object level property is per object. If a character consists of multiple objects you have to change it on each and every object of that character. Using the rig centralizes this and gives you one property for all objects of that character.

2 Likes

Global properties are for scene global stuff, like lighting settings for NPR shaders and similar.