OSL Random color 3dsMax
Posted: Tue May 15, 2018 8:27 am
The Octane 'Random color texture' may depend on the number and order of objects using it.
(For example, using movable proxy on instance objects)
In this case, when hiding or deleting some of the objects, the other objects will change color.
To keep a constant random color per object, a simple OSL texture can be used to produce random color depending on the object User ID.
First, set some unique user ID to each object:
-Select all objects to use your random material
-Open the Octane object properties dialog
-Set 'start' to 0
-In the tool button '...', select 'Set selected IDs from selection order'
Then, use the RandomGreyInstance.osl as a texture, or copy the code below:
That gives a random grey color for each object. see sample randomColorFromUserID.max
This can then be used as the input of a Gradient texture, to select your colors.
(For example, using movable proxy on instance objects)
In this case, when hiding or deleting some of the objects, the other objects will change color.
To keep a constant random color per object, a simple OSL texture can be used to produce random color depending on the object User ID.
First, set some unique user ID to each object:
-Select all objects to use your random material
-Open the Octane object properties dialog
-Set 'start' to 0
-In the tool button '...', select 'Set selected IDs from selection order'
Then, use the RandomGreyInstance.osl as a texture, or copy the code below:
- Code: Select all
#include <octane-oslintrin.h>
shader randomColorGreyFromInstance(
int seedI = 0 [[string label = "Seed"]],
output color c = 0)
{
float noiseOut = noise("cell", (float)(_getinstanceid() + seedI));
c = color(noiseOut, noiseOut, noiseOut);
}
That gives a random grey color for each object. see sample randomColorFromUserID.max
This can then be used as the input of a Gradient texture, to select your colors.