Purpose is an attribute that can be used to give a prim and its descendants a high-level “visibility flag” in context of rendering.

For example, if a prim has its purpose attribute set to render, it will be excluded from being drawn in a renderer that only wants to draw proxy prims.

In some sense, setting purpose could be considered Stage Traversal but for rendering.

Currently, only 4 values are supported by the purpose attribute:

defaultThe prim has no special rendering purpose and it will be included in all rendering paths
guideA prim tree marked with guide is generally used by interactive applications that have asked to show “guides”. Think of it as requesting to visualize controller geometry for rigs, skeleton data, etc
proxyProxy is usually reserved for a lightweight representation of another object to be used in an interactive renderer such as a DCC viewport
renderThe “final quality” data to be imaged. Usually enabled for offline rendering or final quality rendering

Unlike Kind. purpose cannot be extended with custom values!

Example Switching between proxy and render Purposes


As seen above, purpose is not an exclusive toggle! It is possible to have both proxy and render purposes active and their contents drawn to the screen.

/root/GEO has its purpose set to render, it will only be drawn when the active renderer requests prims with a render purpose.

Render Purpose


/root/GEO_PROXY has its purpose set to proxy, it will only be drawn when the active renderer requests prims with a proxy purpose.

Proxy Purpose