Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/autodesk/arnold-usd
Arnold components for USD
https://github.com/autodesk/arnold-usd
arnold houdini hydra katana maya usd
Last synced: 5 days ago
JSON representation
Arnold components for USD
- Host: GitHub
- URL: https://github.com/autodesk/arnold-usd
- Owner: Autodesk
- License: other
- Created: 2019-11-06T22:11:42.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2024-11-06T15:44:46.000Z (7 days ago)
- Last Synced: 2024-11-06T16:43:15.218Z (7 days ago)
- Topics: arnold, houdini, hydra, katana, maya, usd
- Language: Python
- Homepage: https://www.arnoldrenderer.com/
- Size: 110 MB
- Stars: 244
- Watchers: 27
- Forks: 57
- Open Issues: 129
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
- Security: SECURITY.md
Awesome Lists containing this project
README
Arnold USD
==========This repository contains a set of components and tools to use the [Arnold](https://www.arnoldrenderer.com) renderer with Pixar's [Universal Scene Description](https://github.com/PixarAnimationStudios/USD). Notably, the following components are included:
- Hydra render delegate
- Arnold procedural for USD
- Schemas to describe an Arnold scene in USDContributions are welcome! Please make sure to read the [contribution guidelines](CONTRIBUTING.md).
## Building and installation
Please follow the [building instructions](docs/building.md). To use the components, provided you installed in ``, set the following environment variables:
- Add `/procedural` to `ARNOLD_PLUGIN_PATH` for the Arnold `usd` procedural.
- Add `/lib/python` to `PYTHONPATH` for the Python schema bindings.
- Add `/plugin` to `PXR_PLUGINPATH_NAME` for the Hydra render delegate and the Node Registry plugin.
- Add `/lib/usd` to `PXR_PLUGINPATH_NAME` for the USD schemas.
- Add `/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
- Normal primvars are translated to Arnold built-in attributes
- 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
- 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
- Render Buffer
- OpenVDB Asset
- Point Instancer, including nesting of Point Instancers and instancing Volumes
- Selection in USD View and other applications using the `primId` AOV
- Displaying the Color, Depth and PrimID AOVs
- Motion Blur
- Deformation
- Transformation
- Using motion vectors on Points
- Rendervar support
- Raw Rendervars
- Primvar Rendervars
- LPE Rendervars
- SourceName parameter
- DataType parameter
- Setting up Arnold filters via "arnold:filter_type"
- Filtering parameters via "arnold:param_name"
- Filtering parameters via "arnold:filter_node_entry:param_name"
- USD Skel support
- HdExtComputation support for polymeshes
- 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
- Deep render products
- Basis Curves support
- Remapping uv/st to uvs
- Remapping normals to orientations
- Pause and Resume API
- Half and Double types**Limitations**
- 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
- Can't open textures from usdz files
- No support for orthographic cameras
- 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_DETERMINISTICALLY` should 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
- Setting up the asset URI either to `` or to the path of the shader library providing the shader.
- Creating all parameters.**Limitations**
- 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 Geom primitives
- UsdGeomMesh
- UsdGeomCurves
- UsdGeomBasisCurves
- UsdGeomPoints
- UsdGeomCube
- UsdGeomSphere
- UsdGeomCone
- UsdGeomCylinder
- UsdPointInstancer
- UsdVolume
- UsdGeomCamera
- primvars are translated as user data
- USD Lux primitives
- UsdLuxDistantLight
- UsdLuxDomeLight
- UsdLuxDiskLight
- UsdLuxSphereLight
- UsdLuxRectLight
- UsdLuxGeometryLight
- Support for textured lights (dome, rectangle and geometry)
- USD native shaders
- UsdPreviewSurface
- UsdPrimVar*
- UsdUVTexture
- Per channel connections via adapter nodes
- UsdTransform nodes
- 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_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
- UsdRender schema support
- Half and Double types
- Usd Purpose
- Light Linking
- Multiple frames in a single file**Limitations**
Currently unsupported:
- Nurbs## Arnold USD Procedural
The scene delegate supports the following features:
- Arnold built-in shapes
- Render time procedurals shipped with the core**Limitations**
Currently unsupported:
- 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 at
https://www.arnoldrenderer.com/arnold/download/
It is not supported for older versions of Arnold.## Acknowledgments
- Luma Pictures' [usd-arnold](https://github.com/LumaPictures/usd-arnold)
- RodeoFX's [OpenWalter](https://github.com/rodeofx/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