Arnold USD
This repository contains a set of components and tools to use the Arnold renderer with Pixar's Universal Scene Description. Notably, the following components are included:
- Hydra render delegate
- Arnold procedural for USD
- Schemas to describe an Arnold scene in USD
Building and installation
Please follow the building instructions. To use the components, provided you installed in , set the following environment variables:
- Add
to/procedural ARNOLD_PLUGIN_PATHfor the Arnoldusdprocedural. - Add
to/lib/python PYTHONPATHfor the Python schema bindings. - Add
to/plugin PXR_PLUGINPATH_NAMEfor the Hydra render delegate and the Node Registry plugin. - Add
to/lib/usd PXR_PLUGINPATH_NAMEfor the USD schemas. - Add
to/lib LD_LIBRARY_PATHon Linux,PATHon Windows andDYLD_LIBRARY_PATHon Mac.
Hydra Render Delegate
The render delegate currently supports the following features:
- RPrim Support
- SPrim Support
info:id attribute is used to determine the shader type
- UsdPreviewSurface is translated to Arnold shaders
- UsdTransform nodes
- Per-face material assignments
- Lights
- Distant Light
- Sphere Light
- Disk Light
- Rect Light
- Cylinder Light
- Dome Light
- Shaping Parameters
- Light and Shadow Linking
- ExtComputation
- HdCamera
- Perspective projection
- BPrim Support
- Point Instancer, including nesting of Point Instancers and instancing Volumes
- Selection in USD View and other applications using the
primIdAOV - Displaying the Color, Depth and PrimID AOVs
- Motion Blur
- Rendervar support
- USD Skel support
- HdExtComputation support for polymeshes
- Render Settings via the Render Delegate
- Deep render products
- Basis Curves support
- Pause and Resume API
- Half and Double types
- Crash on linux at startup with usdview : Currently, the arnold library needs to be ld-preloaded to avoid the crash, e.g.
LD_PRELOAD=/path_to_arnold/bin/libai.so usdview scene.usda - Ignoring primvars:arnold:basis on curves
- No support for periodic or pinned curves
- No field3d volume grids
- No normal maps on the UsdPreviewSurface
- Only converging renders are supported (ie. it’s not possible to block the viewport until the render finishes)
- No coordsys support
- Face-varying primvars are not correctly interpolated
- Possible flicker when using cryptomatte: this is due to the prototypes not being named in a deterministic way. Setting the environment variable
USD_ASSIGN_PROTOTYPES_DETERMINISTICALLYshould fix this issue.
Node Registry Plugin
The Node Registry plugin supports the current features:
- Registering Sdr nodes for every built-in shader and custom shader
or to the path of the shader library providing the shader.
- Creating all parameters.
Limitations
- No nodes registered for
- No node is registered for the options node
- Metadata is not converted for any node
Arnold USD Procedural
The procedural supports the following features:
- USD Geom primitives
- USD Lux primitives
- USD native shaders
- UsdSkel support
- Arnold shaders supported as UsdShade nodes (where info:id gives the shader type)
- Support for any additional Arnold parameter in USD nodes (e.g. attribute
primvars:arnold:subdiv_iterationsin a UsdGeomMesh) - Support for any Arnold node type (e.g. USD type ArnoldSetParameter gets rendered as arnold
set_parameternode) - Support for multi-threaded parsing of a USD file
- UsdRender schema support
- Half and Double types
- Usd Purpose
- Light Linking
- Multiple frames in a single file
- Nurbs
Scene delegate
The scene delegate supports the following features:
- Arnold built-in shapes
- Render time procedurals shipped with the core
- Custom procedurals
- Lights
- Displaying Arnold schemas with non-Arnold render delegates
Testsuite
Running the arnold-usd testsuite requires the latest version of Arnold, that can be downloaded It is not supported for older versions of Arnold.
Acknowledgments
- Luma Pictures' usd-arnold
- RodeoFX's OpenWalter
- Ben Asher
- Sebastien Blaineau-Ortega
- Chad Dombrova
- Guillaume Laforge
- Julian Hodgson
- Thiago Ize
- Pal Mezei
- Paul Molodowitch
- Nathan Rusch
- Frederic Servant
- Charles Flèche
- Raymond Kreppene
- Julien Deboise
- Jerry Gamache
- Tom Minor
- Cyril Pichard
- Libby O'Meara