• Stars
    star
    243
  • Rank 165,955 (Top 4 %)
  • Language
    Python
  • License
    Other
  • Created almost 5 years ago
  • Updated 3 days ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Arnold components for USD

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
      • 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 <built-in> 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
  • 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

More Repositories

1

react-base-table

A react table component to display large datasets with high performance and flexibility
JavaScript
1,464
star
2

maya-usd

A common USD (Universal Scene Description) plugin for Autodesk Maya
Mathematica
761
star
3

Aurora

Real-time GPU path tracing with a USD Hydra render delegate
C++
430
star
4

revit-ifc

IFC for Revit and Navisworks (2019+)
C#
415
star
5

coroutineworker

Kotlin Coroutine-based workers for native
Kotlin
368
star
6

standard-surface

White paper describing the Autodesk Standard Surface shader.
CSS
341
star
7

continuous-threat-modeling

A Continuous Threat Modeling methodology
282
star
8

animx

A project to make it easier for people to use Maya animation in their tools and pipelines.
C++
200
star
9

hig

Autodesk's unified design system
JavaScript
180
star
10

hubble

πŸ›° Collaboration, usage, and health data visualization for GitHub Enterprise
Python
173
star
11

molecular-design-toolkit

Notebook-integrated tools for molecular simulation and visualization
Python
164
star
12

synthesis

A Robotics Simulator for Autodesk Fusion CAD Designs
JavaScript
149
star
13

LiveLink

An Unreal Live Link plugin for Autodesk Maya
C++
120
star
14

quack

Quack - Reuse git modules in smart way
Python
115
star
15

civilconnection

CivilConnection enables the exchange of information between Civil 3D, Dynamo and Revit.
C#
87
star
16

XLB

XLB: Accelerated Lattice Boltzmann (XLB) based on JAX for Physics-based ML
Python
83
star
17

notebook-molecular-visualization

2D and 3D molecular visualization in Jupyter notebooks using 3DMol.js and D3.js
Python
67
star
18

molecule-3d-for-react

3D molecular visualization React component using 3Dmol.js
JavaScript
60
star
19

3DViewerComponent

A ThreeJS 3D Viewer Web Component composed with (Google's) Polymer
JavaScript
47
star
20

revit-stl-extension

An Autodesk Revit add-in to export Revit models to STL format.
C#
40
star
21

enterprise-config-for-git

A painless Git setup with an easy way to share Git configs and scripts within a company using GitHub Enterprise.
Shell
39
star
22

ADAppRater-iOS

Objective-C
39
star
23

bifrost-usd

Bifrost nodes for USD
C++
38
star
24

AutomaticComponentToolkit

A toolkit to automatically generate software components: abstract API, implementation stubs and language bindings
Go
38
star
25

sitoa

Arnold plugin for Softimage
Python
34
star
26

bionano-wetLabAccelerator

A tool for researchers working in synthetic biology and virology to design robotic wet lab protocols using a visual UI without coding.
JavaScript
33
star
27

aomi

Provide secrets to build and release pipelines in a self service way using Hashicorp Vault.
Python
32
star
28

sydevs

Simulation-based analysis of complex systems involving people, devices, physical elements, and dynamic environments.
C++
32
star
29

Neon

Multi-GPU Framework for Voxel Grid Computations
C++
31
star
30

machine-collaboration-utility

A CNC controller interface that allows for browser based job dispatching and real-time direct communication with devices over serial, usb, http, telnet, or any other communication protocol.
JavaScript
27
star
31

PowerShapeAndPowerMillAPI

An API for Autodesk PowerShape and PowerMill
C#
26
star
32

vault-admin-tools

Autodesk vault administration and data migration tools
C#
24
star
33

goatnative-inject

C++11 Dependency Injection (IoC - inversion of control) class using variadic templates and shared pointers.
C++
23
star
34

orion-ui

UI Components that work seamlessly in multiple UI frameworks
JavaScript
22
star
35

maya-hydra

A Maya plugin that replaces the main Maya viewport with a Hydra viewer.
C++
22
star
36

AutodeskMachineControlFramework

Middleware framework to integrate CAD/CAM software with machine hardware systems into a production-ready, complete and cohesive closed loop system.
C++
22
star
37

molecule-2d-for-react

2D molecule visualization component
ApacheConf
21
star
38

theo-loader

A webpack loader that transforms Design Tokens files using Salesforce's theo
JavaScript
21
star
39

go-awsecs

Library and tools for AWS ECS operations
Go
21
star
40

cam-posteditor

Autodesk HSM Post Processor for Visual Studio Code
HTML
19
star
41

flame-family

Custom Actions add-ins for Flame, Flare and Flame Assist.
Python
19
star
42

cloud-compute-cannon

Cloud Compute Cannon is a tool aimed at scientists and more general users who want to use cheap cloud providers (such as Amazon) to perform large scale computes (number crunching).
Haxe
18
star
43

genetic-constructor-ce

Genetic Constructor
JavaScript
17
star
44

shore

Go
16
star
45

molecular-simulation-tools

Web applications for molecular modeling using the Molecular Design Toolkit
JavaScript
16
star
46

RolloutManager-iOS

The Rollout Manager component is an iOS (Objective C) component that brings its users the ability to roll out features gradually to production.
Objective-C
16
star
47

watchdog4git

A GitHub πŸ€– that checks for common Git related errors and notifies the responsible engineers
Go
15
star
48

pyccc

Asynchronous job and file i/o management for containers
Python
15
star
49

nanodesign

Python package for working with nucleic acid structural designs.
Python
15
star
50

pgbelt

Pgbelt is a CLI tool used to manage Postgres data migrations from beginning to end, for a single database or a fleet, leveraging pglogical replication.
Python
15
star
51

ADNetPromoterScoreSurvey-iOS

ADNetPromoterScoreSurvey is an iOS component that presents Net Promoter Score (NPS) survey dialog to the user.
Swift
15
star
52

autodesk.github.io

A listing of open source efforts at Autodesk on GitHub
HTML
14
star
53

biomolecular-design-database

The Biomolecular Design Database Project is a web application that allows users to share, search and use nucleic acid nanotechnology designs. This includes DNA Origami, RNA Origami, DNA Bricks and many other types of systems.
JavaScript
14
star
54

powermill-api-examples

These examples export data from the PowerMill product and format it for use in various third-party simulation tools: Vericut, NCSimul, ViMill.
C#
13
star
55

sculpt-vr

A sculpting program for WebVR
JavaScript
13
star
56

composr

Live visualization of audio data in 3D
JavaScript
12
star
57

Central64

Central Grid Path Planning with up to 64 Neighbors
C++
10
star
58

forge-cli

Forge Command Line Interface (CLI) is a unified tool to manage your Forge services
JavaScript
8
star
59

NetfabbApplicationServer

The "Netfabb Application Server" (short: NAS) is a server (or: service) program written in Go, exposing a RESTful webservice API to client programs for a central storage system and distributed task management.
Go
7
star
60

jira-ldap-group-sync-plugin

LDAP Groups Sync for JIRA plugin
Java
7
star
61

IGA-saveload

C++
6
star
62

ADAppRater-UWP

A library for UWP designed to facilitate easy prompting of users to rate your app within the Windows store.
C#
6
star
63

jenkinsci-benchmark-plugin

Java
6
star
64

sjson

Simplified JSON parser
JavaScript
3
star
65

cryptorito

Very lightweight library for some cryptographic interactions
Python
3
star
66

powerinspect-api-examples

This addin exports measurement data from the PowerInspect product and formats it for use by various third-party Statistical Process Control (SPC) packages.
C#
2
star
67

motion-controller-emulator

A marlin firmware emulator. Created as a tool for supporting Machine Collaboration Utility (https://github.com/Autodesk/machine-collaboration-utility)
JavaScript
2
star
68

data-unit-test

JDBC test framework
Java
2
star
69

jira-action-reminders-plugin

JIRA Action Reminders Plugin
Java
2
star
70

featurecam-api-examples

Feature CAM API Examples (No Maintenance)
C#
1
star
71

viriondb

JavaScript
1
star