Skip to content
Arnold components for USD
Python C++ Shell C Makefile Awk
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github [General] Setting up initial issue and pull request templates. Nov 15, 2019
cmd Link linux builds against pthread and dl (#148) Jan 11, 2020
contrib/OpenImageIO/bin Removing maketx and the references to it. Nov 14, 2019
docs Removing BUILD_HOUDINI_TOOLS and all associated documentation from th… Jan 8, 2020
ndr Adding an NDR plugin for arnold shaders. (#57) Nov 25, 2019
procedural Implement scene format plugin for USD (#152) Jan 20, 2020
render_delegate Fixing build issue with the latest USD releases. (#161) Jan 24, 2020
schemas Raise a runtime error if usdGenSchema can't be found and the schema b… Dec 18, 2019
testsuite Supporting SdfAssetPath on shaders (#159) Jan 22, 2020
tools Parse USD_HAS_UPDATED_COMPOSITOR using the HdxCompositor header file Nov 26, 2019
translator Supporting SdfAssetPath on shaders (#159) Jan 22, 2020
.clang-format Initial commit Nov 12, 2019
.gitignore Write Arnold nodes as USD builtins when possible (#128) Jan 3, 2020 [Documentation] Specify the preferred ticket/pull request naming beha… Dec 6, 2019 Initial commit Nov 12, 2019 Add ARNOLD_PLUGIN_PATH documentation in (#130) Jan 7, 2020
SConstruct Add build variables for sdk path and version (#144) Jan 10, 2020
abuild Initial commit Nov 12, 2019
abuild.bat Initial commit Nov 12, 2019 Initial commit Nov 12, 2019
clang_format Initial commit Nov 12, 2019
plugInfo.json Add missing pluginInfo file Nov 15, 2019

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

Contributions are welcome! Please make sure to read the contribution guidelines.

Building and installation

Please follow the building instructions. To use the components, provided you installed in <arnold-usd_dir>, set the following environment variables:

  • Add <arnold-usd_dir>/procedural to ARNOLD_PLUGIN_PATH for the Arnold usd procedural.
  • Add <arnold-usd_dir>/lib/python to PYTHONPATH for the Python schema bindings.
  • Add <arnold-usd_dir>/plugin to PXR_PLUGINPATH_NAME for the Hydra render delegate and the Node Registry plugin.
  • Add <arnold-usd_dir>/lib/usd to PXR_PLUGINPATH_NAME for the USD schemas.
  • Add <arnold-usd_dir>/lib to LD_LIBRARY_PATH on Linux, PATH on Windows and DYLD_LIBRARY_PATH on Mac.

Hydra Render Delegate

The render delegate currently supports the following features:

  • RPrim Support
    • Mesh
      • All primvars are supported, st/uv is accessible through the built-in uv attribute on the mesh
      • Support for the displayColor primvar
      • Subdivision settings
    • Volume
    • Points
  • SPrim Support
    • Materials
      • Arnold shaders are supported, the info:id attribute is used to determine the shader type
      • UsdPreviewSurface is translated to Arnold shaders
    • Lights
      • Distant Light
      • Sphere Light
      • Disk Light
      • Rect Light
      • Cylinder Light
      • Dome Light
  • BPrim Support
    • Render Buffer
    • OpenVDB Asset
  • Point Instancer, including nesting of Point Instancers
  • Selection in USD View and other applications using the primId AOV
  • Displaying the Color, Depth and PrimID AOVs
  • Motion Blur
    • Deformation
    • Transformation
  • Render Settings via the Render Delegate
    • Sampling parameters
    • Threading parameters
    • Ignore parameters
    • Profiling and logging parameters
    • Switching between CPU and GPU mode seamlessly
    • Default values are configurable through environment variables for most of these parameters


  • 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/ usdview scene.usda
  • No motion blur support for the Point Instancer attributes
  • Can’t preview arbitrary primvar AOVs
  • No basisCurves
  • No field3d volume grids
  • Not all the parameters are accessible through the render settings
  • Texture Cache size
  • Texture generation parameters (automip, autotile)
  • 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 HdExtComputation and UsdSkel computation via the render delegate
  • No of physical camera parameters
  • No coordsys support

Node Registry Plugin

The Node Registry plugin supports the current features:

  • Registering Sdr nodes for every built-in shader and custom shader
    • Setting up the asset URI either to <built-in> or to the path of the shader library providing the shader.
    • Creating all parameters.


  • No nodes registered for
    • Shapes
    • Lights
    • Filters
    • Drivers
  • 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 shapes
    • UsdGeomMesh
    • UsdGeomCurves
    • UsdGeomPoints
    • UsdGeomCube
    • UsdGeomSphere
    • UsdGeomCone
    • UsdGeomCylinder
    • primvars are translated as user data
  • USD Lights
    • UsdLuxDistantLight
    • UsdLuxDomeLight
    • UsdLuxDiskLight
    • UsdLuxSphereLight
    • UsdLuxRectLight
    • UsdLuxGeometryLight
    • Support for textured lights (dome and rectangle)
  • USD native shaders
    • UsdPreviewSurface
    • UsdPrimVar*
    • UsdUVTexture
  • 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 arnold:subdiv_iterations in a UsdGeomMesh)
  • Support for any Arnold node type (e.g. USD type ArnoldSetParameter gets rendered as arnold set_parameter node)
  • Support for multi-threaded parsing of a USD file

Limitations Currently unsupported:

  • Nurbs
  • Point Instancer
  • Cameras


  • 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
You can’t perform that action at this time.