aiUserData Shader

Arnold provides his own shaders to read and return user data: aiUserDataInt, aiUserDataFloat, aiUserDataString. This data can be used to feed other shaders (such as a Crowd Switch Shader or a Crowd HSL Shader). Refer to the Shader Attributes page to know how to store user data in a mesh.

Result of a Get User Data Int Shader combined with a Crowd Switch Shader and different user data values.


To create a aiUserData shader for Arnold, the Arnold plugin (mota) must be loaded.

  • Hypershade: Arnold / Shader / Utility / aiUserDataInt, aiUserDataFloat, aiUserDataString
  • MEL command: createNode aiUserDataInt; / createNode aiUserDataFloat; / createNode aiUserDataString;


Attr Name Name of the user data attribute to read in the rendered mesh and which will be returned. The name of the user data should be the same than the one defined in the Shader Attributes of the Mesh.
Default Default value to return if the corresponding user data is not found

Shading Graph Integration

This shader can be used to feed an integer value of any other shader. The output attribute of this shader is called outValue.
In the following example the Crowd Switch Shader has 3 textures connected to its 3 first Shader slots. Its Selector value is fed by a aiUserData shader and its output is connected to the Color attribute of a Blinn Tshirt shader.
In the Character Maker Geometry Tab, the Tshirt Shader has an Integer User Attribute named "textureId" which will have a random value between 0 and 2 (notice that this value can also be controlled with a ppAttribute) :

Then, the Crowd Get User Data Int is configured to read the parameter "textureId":
At render time, Entities having this Blinn Tshirt shader listed in their Assets, you get the following result: