Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Setting User Attributes

User attributes are a convenient way to vary shading across multiple objects without changing a shading network.  They are especially useful as they can vary across instances, unlike primvarsprimitive variables

Here is an example of how to set a color user attribute with an OpScript:

gb = GroupBuilder()
gb:set("value", FloatAttribute({0.01.00.0}, 3))
gb:set("type", StringAttribute("color"))
Interface.SetAttr("prmanStatements.attributes.user.myColor", gb:build())


Color While all user attributes can be set up as a GroupAttribute, color attributes are the only type that require a group attributerequires it.  Int, float, and string user attributes can be set directly, with their type inferred from the Katana attribute type:

Interface.SetAttr("prmanStatements.attributes.user.myFloat", FloatAttribute(3))

Using User Attributes

RenderMan ships with several plugins that make use of user attributes.  PxrAttribute, PxrVary(?), PxrVariable(?), PxrCryptomatte (string attribtues used by the sample filter) or PxrVary are patterns that read user attributes. The PxrCryptomatte sample filter can create different outputs based on string user attributes.  When using these plugins, use the parameter for the attribute should include the prefix user: followed by the attribute name.