Primitive Variables (often referred as "primvars") are data attached to the geometry. This is useful when a shader needs to reference custom data from the geometry. There is no need to remap Houdini primvars to RenderMan primvars. All geometry attributes are passed to RenderMan as primvars with specific variation depending on attribute type.
The examples below show the difference between the four Houdini attribute types (point, vertex, uniform, detail) and how they translate to RenderMan primvars. All the Houdini attributes regardless of type are all RenderMan primvars so can be accessed via the PxrPrimvar VOP.
point attribute → varying primvar
vertex attribute → facevarying primvar
primitive attribute → uniform primvar
detail attribute → constant primvar
Houdini attributes can also be used to control aspects of rendering such as shading, dicing, displacement, or geometry specific settings by creating primitive variables that are recognized by RenderMan. These can be set via a houdini detail attribute in SOPs or by adding RenderMan spare parameters to the OBJ. If both parameter and attribute are set, the detail attribute will override the OBJ parameter.
Instance Attributes are data attached to the instance. This useful for varying attributes across instances. Like primvars, instance attributes can also be added via SOP attributes or via OBJ parameters.
|via SOPs||via OBJs|