Skip to content

Autodesk/maya-hydra

Repository files navigation

Hydra for Maya (Technology Preview)

The Hydra for Maya project creates a Maya plugin that replaces the main Maya viewport with a Hydra viewer. Hydra for Maya is developed and maintained by Autodesk. The project and this documentation are a work-in-progress and under active development. The contents of this repository are fully open source and open to contributions under the Apache license!

Hydra is the rendering API included with Pixar's USD.

Motivation

The goal for Hydra for Maya is to introduce Hydra as an open source viewport framework for Maya to extend the viewport render engine through Hydra render delegates. Hydra for Maya uses the previous Maya to Hydra (MtoH) code, which is part of MayaUSD, as a foundation to build on. You can find more details on what changed from MtoH here. With Hydra for Maya we are fully leveraging the new SceneIndex API (aka Hydra v2) for more flexibility and customizability over the Hydra scene graph. Therefore the HdSceneDelegate is not supported by this plugin.

Hydra for Maya is currently a Technology Preview; we are just laying the foundation and there is still work ahead. As the plugin evolves and the Hydra technology matures, you can expect changes to API and to face limitations.

What's it good for?

This project allows you to use Hydra (the pluggable USD render ecosystem) and Storm (the OpenGL renderer for Hydra, bundled with USD), as an alternative to Viewport 2.0.

Using Hydra has big benefits for offline renderers: any renderer that implements a Hydra render delegate can now have an interactive render viewport in Maya, along with support for render proxies.

As an example, when paired with arnold-usd (Arnold's USD plugin + render delegate), it provides an Arnold render of the viewport, where both maya objects and USD objects (through proxies) can be modified interactively.

This could also be particularly useful for newer renderers, like Radeon ProRender (which already has a render delegate), or in-house renderers, as an easier means of implementing an interactive render viewport.

What about HdStorm, Hydra's OpenGL renderer? Why would you want to use HdStorm instead of "normal" Viewport 2.0, given that there are other methods for displaying USD proxies in Viewport 2.0? Some potential reasons include:

  • Using HdStorm gives lighting and shading between Hydra-enabled applications: Maya, Katana, usdview, etc
  • HdStorm is open source: you can add core features as you need them
  • HdStorm is extensible: you can create plugins for custom objects, which then allows them to be displayed not just in Maya, but any Hydra-enabled application

Known Limitations

  • Limited Maya material support:
    • Maya Standard Surface materials are translated into the USD Preview Surface which has limitations in available parameters and does not match one to one (e.g. transparency and opacity)
    • Only direct texture inputs are supported for Maya materials. No other Hypershade nodes are supported (e.g. ramp or procedural textures)
  • Hydra shading differs from Maya's Viewport 2.0
  • Animation Ghosting has the wrong shading
  • Backface Culling
  • Isolate Select only functions with Maya nodes
  • Following Maya node types are not rendered:
    • Bifrost
    • nParticles
    • Fluid
    • Blue Pencil
    • Maya's volume and ambient light
  • Current limitations with USD:
    • Maya layers don't show effect
    • Viewport display modes like Xray, wireframe or default shading are not supported yet
    • Gprims currently don't cast shadows in Storm
    • No material bindings on GeomSubsets (Hydra v2 limitation)

Limitations with Storm

  • Screen space effects like depth of field and motion blur or Hardware Fog are not supported
  • Limited shadow quality of lights
  • Long loading times and low viewport performance with MaterialX materials with Storm

Detailed Documentation