Chaos

What are you looking for?

usd-hydra-1920x600.jpg
usd-hydra-1920x600.jpg

Getting started with USD and Hydra in V-Ray


With USD support now available in V-Ray for Maya and Houdini, we take a look at how this smart file format introduces new levels of versatility to VFX pipelines.

USD makes modern VFX workflows easier and more flexible—and now it’s in V-Ray. This neat technology makes it far easier to share model, scene and animation data between platforms and people, and even allows multiple contributors to work on the same project at once.

But what is USD? In this explainer, we cover how it works, what it’s for, how we’ve integrated it in V-Ray 5 for Maya and V-Ray 5 for Houdini, plus our future plans for the exciting new workflows USD enables.

USD_Blog_Post_01.pngUSD_Blog_Post_01.png

What is USD?

USD stands for Universal Scene Description. It’s an open-source interchange format developed by Pixar and contributed to by industry-leading studios. This new format is designed to support almost any type of 3D scene and animation data and transport it between 3D creation tools, assembly tools, and pipeline utilities.

Besides interoperability, USD enables non-destructive iterations and new assembly workflow scenarios. USD also allows a renderer to attach its data to the scene description so the definitions and assignments of shaders, materials, lights, cameras, and environments persist within the USD file.

USD has shown great potential for several years, but it required support from the makers of multiple 3D creation tools before most artists could start building workflows that took full advantage of it. This support first started when SideFX added Solaris to Houdini and has now extended to Maya, with Autodesk’s Maya 2022 release that includes MayaUSD.

With support from multiple tools finally at hand, the time was right for us to add V-Ray support to each tool so studios can freely share and combine assets between the two applications with consistent V-Ray rendering results. You’ll find USD support in V-Ray 5 for Maya, update 1 and V-Ray 5 for Houdini, update 1.

As a production solution, it’s important that all necessary native scene properties are properly exported, and we feel this is best owned by the makers of each respective 3D application. We can attach the V-Ray data to this solid foundation and we know it will improve along with the application.

We are looking forward to adding similar V-Ray USD support to other applications. With Autodesk’s releasing a USD for 3ds Max beta, we shouldn’t have to wait long for 3ds Max to join in on the V-Ray collaboration possibilities. We've also recently added MaterialX support to V-Ray, further enhancing its flexibility for artists working across multiple platforms.

USD_Blog_Post_02.png
USD makes it easy to keep track of incremental changes.

USD in production

Over time, studio pipelines have become increasingly complex by involving more 3D tools. This is because studios have preferences for tools suited for specific tasks such as modeling, sculpting, simulation, lighting, shading, compositing, animation, and rigging. The challenge is that each tool has its own way of storing and processing scene data.

Some neutral formats like OBJ, FBX, and most recently Alembic, have been used for exchanging data between tools, but each stores only a fraction of what the original scene had, and none were designed to carry any production rendering information. The promise of USD is that data can now be shared at near full fidelity between pipeline tools.

For example, this allows one department to work on animation in Maya, while another works on simulations in Houdini—and, with V-Ray support, they can render the combined result in either application. It also allows data to make round-trips: assets can be created in Maya, brought over to Houdini to simulate, and then brought back into Maya for rendering.

USD_Blog_Post_3.png
USD in Maya.

A compelling aspect of USD is that changes to its contents are non-destructive, with modifications stored as incremental edits on top of the original. In the previous example, the simulation would simply be layered on top of the existing scene layout. USD utilizes an advanced layering system that allows artists to edit, replace or tweak the visibility of any object in the scene, in addition to providing a means of tweaking the individual parameters of lights, and even entire shading networks.

The USD format can be extended to support any type of data required in a pipeline. With V-Ray, we are able to store options related to V-Ray-specific features only, such as the Dome Light’s “Adaptive Sampling” toggle. The same is true for materials, textures, render settings, and so on. All V-Ray features that artists are already familiar with can be encoded in the final USD stage.

USD Workflow Possibilities

USD goes beyond sharing scene data between applications, by enabling layering—a powerful concept for establishing scene variations, permutations, and potentially collaboration. With USD Layering, each layer brings in certain “edits” or overrides that affect the original while only carrying the weight of the incremental changes. 

Here’s a simple abstract example:

  1. A character asset is created and saved to char_geo.usd.
  2. A baseball cap for our character is stored in char_baseballCap.usd.
  3. We load in char_geo.usd and layer it with char_baseballCap.usd.

Char_assembly.usd “refers to” char_geo.usd and char_baseballCap.usd, instead of holding the actual information from both files. 

  1. We save the result in char_assembly.usd.

Now we have everything in a file on disk and we can render it directly with USD. At the same time, edits can be done separately to our character or cap file by different studio teams, saved as new versions and loaded non-destructively.

In the same way, we can have another assembly version of our character with a fedora hat, or with different lighting, or different shading and so on. We could also encode these assembly combinations in what USD calls “variants” so we’re able to easily switch between them after the USD file is loaded.

V-Ray and USD

There are two general methods for renderers to support USD - with a USD procedural and through a Hydra delegate. Here’s a more detailed look at both:

A USD procedural means that the renderer devises its own way of dealing with USD-encoded data and is able to load it and use it to render the final frames.

Hydra, on the other hand, is a rendering framework that passes the data from the DCC’s scene graph to the renderer. Hydra acts as an interactive rendering mode for USD. Having Hydra support doesn’t automatically mean USD support and vice-versa, as each method requires development on its own.

V-Ray adds both methods and in the latest updates Hydra and USD are implemented where it makes the most sense. SideFX has fully embraced Hydra in their Solaris context, which is why it made the most sense for V-Ray for Houdini to implement support for Hydra. V-Ray for Maya adds a USD procedural that works for loading and rendering USD data, as well as exporting data to USD. Although Maya also supports Hydra, the implementation there needs to further mature before we’re ready to implement Hydra support.

V-Ray workflows with USD in Maya are completely native to the new MayaUSD support. In fact, all that’s needed is to utilize MayaUSD in Maya 2022 to load USD files and render them with V-Ray 5, update 1.

Exporting V-Ray data to USD works in the same way through Maya’s File > Export menu, where you need to first choose “USD Export” and then “V-Ray Material Exporter” from the Material’s picklist:

USD_Blog_Post_04.png

V-Ray 5 for Maya, update 1 allows exporting V-Ray shaders (materials and textures) to USD and Displacement with bitmaps connected to the Shading Group’s displacement input.

Future updates will expand the export to more data types, such as V-Ray Lights, V-Ray Fur, VRaySubdivision, and additional displacement approaches.

When loading and rendering USD data in Maya, V-Ray currently supports:

  • Static, transforming, and deforming meshes with support for motion blur
  • V-Ray shaders & materials, displacement, and subdivision encoded in USD files (e.g., coming in from Houdini)
  • The usdPreviewSurface material (from other renderers) 
  • Rendering USD edits with V-Ray in-memory, without saving them to disk
  • Offline rendering of .usd files with V-Ray 5 Standalone with .vrscene files exported from V-Ray

In the future, V-Ray for Maya will add more data types for rendering support within USD such as hair and particles, and we will be detecting USD edits while using IPR.

For a complete list of supported USD features, see our V-Ray for Maya USD documentation page.

V-Ray and Hydra

USD_Blog_Post_05.jpg
usdView in Hydra.

The Hydra delegate that ships with V-Ray for Houdini is able to work both as an interactive render delegate for Houdini’s Solaris viewport, and as a standalone tool for final batch rendering through Houdini’s husk executable.

With V-Ray 5 for Houdini, update 1, the V-Ray delegate entered an official public Beta - most V-Ray features are already integrated natively into Solaris as supplemental V-Ray options where applicable, such as lights, render settings, render geometry settings. The standard V-Ray shading nodes available in the material context have also been exposed in/stage inside the “Material Library” LOP. The most recent addition to the list of supported features is AOVs through the “Render Var” LOP. Rendering of geometry, particles, hair, and volumes is already implemented, both for primitives coming through the “Scene Import” LOP and referenced from USD files on disk.

Some custom V-Ray procedurals, such as the Environment Fog and the V-Ray Proxy, are also coming soon. An up-to-date list of the current limitations is available here: Solaris Features & Known Issues.

In the not-so-distant future, we plan to open up the Hydra delegate to be used as a standalone tool for final rendering by shipping a pre-compiled USD library with V-Ray for Houdini that holds the USD View and USD Record applications used for preview and batch rendering, respectively. 



Conclusion

It’s an exciting time for production, with USD now being supported with everyone’s Maya, Houdini, and V-Ray. With those important pieces in place, it’s as if a starting gun has just sounded, with most VFX studios now being able to explore USD production workflows for real rather than just in theory. And this is just the beginning, as the work being done by our Maya and Houdini teams will make it all the faster for us to add similar USD support to other V-Ray integrations as their host applications add USD support. 

© Škoda Design

Subscribe to our blog.

Get the latest news, artist spotlight stories, tips and tricks delivered to your inbox.

By submitting your information you are agreeing to receive marketing messages from Chaos. You can opt-out at any time. Privacy Policy.

Chaos
© 2024 Chaos Software EOOD. All Rights reserved. Chaos®, V-Ray® and Phoenix FD® are registered trademarks of Chaos Software EOOD in Bulgaria and/or other countries.