In the previous entry to this series, USD Plugin for Maya: An Overview, I talked a bit about what USD is, where it came from, why you want to be using it, its history in Maya, as well as our plans for its future in Maya. In this post, I will be discussing specifics on how we plan to deliver our vision for Maya USD and give you a sneak peek at our progress.
The Four Pillars of Maya USD
Identifying assembly and layout as our focus helps define our initial scope, but the task at hand remains large. We want to make sure we get it right. To execute, we chunked the work out into four main buckets.
Unify USD for Maya
The first bucket holds the tasks around unifying USD in Maya. That work began with our joint announcement at Siggraph 2018. At Siggraph 2019 Autodesk, Pixar, and Animal Logic, with the addition of Luma Pictures and Blue Sky Studios, delivered on the promise of the prior year’s announcement by opening the new open-sourced repo on GitHub that serves as the home for USD in Maya.
This is the first time we're trying to ship production software using an open-source/collaborative development model. As part of our continued efforts to support and accelerate the adoption of open standards, we feel it’s important for us to take responsibility for the plugins formerly hosted by our friends, which will serve as a baseline for USD in Maya going forward. Our ultimate goal is to ensure a consistent yet modifiable way to use USD within Maya.
For this project, we have chosen to adopt the Academy Software Development model of using a Technical Steering Committee, or TSC. Autodesk, Pixar, Animal Logic, Luma Pictures, and Blue Sky Studios, in their role as TSC members, are tasked with repository management, helping to define our branching and merging strategies, as well as perform code reviews and testing.
Visitors to the GitHub hosted Maya USD repository will notice that several branches currently exist. As development progresses, this branching model will look more traditional with feature branches and hotfixes.
In the master branch, you will find copies of the Pixar plugin and Animal Logic plugin from their repositories. This branch is meant to set a very low bar for the adoption of the new repository for users coming from the two existing plugins. In fact, with Pixar's release of USD 19.11, they have deprecated support within their repository of their Maya plugin in favor of their plugin in the new Autodesk repository. Likewise, Animal Logic has stopped taking pull requests in their repository and is directing users to the new shared repository.
The sandbox branch contains a common translation framework proof of concept as well as VP2 support for USD data. The sandbox branch is in the process of being merged into the dev branch feature by feature. Upon the completion of that merge, future development should happen in the dev branch with stable releases being merged back in to master.
Bring USD into Maya
The second bucket, "bring USD into Maya", is all about the translators or rather, the import/export process. This work will let you take USD data on disk and import it as native Maya data in memory, or to take native Maya data in memory and export it to USD data on disk. This step allows existing USD pipelines to start using Maya to generate USD data right away. Above you can see a work-in-progress tree-view interface for performing selective import on USD data and below you can see an import in progress.
Work with USD in Maya
With the third bucket, we want to enable you to "work with USD in Maya". This is where things start to get interesting. This is where we start to gain access to some of USD's power. This work provides the ability to reference in a USD stage and have it persist as USD data in memory. With this work, we can visualize USD right alongside Maya data in a natural native way in the viewport, in the outliner, and even in the attribute editor.
In the image below, you can see the now-famous Pixar USD kitchen dataset. Looking in the Maya outliner, you can see the kitchen's hierarchy under a proxyShape, you can see the kitchen set drawn in the viewport, and in the attribute editor you can see the selected object's properties. The coffee cup on the counter is selected in the outliner and selection highlighting is shown in the viewport.
There is no Maya data in this screenshot, it is pure USD, yet it feels natural and native to Maya. This means you get all the benefits of USD: the insanely fast load times, the fast playback , as well as the flexibility of Hydra. The viewport can now leverage Hydra to allow runtime switching between multiple hydra delegate backends.
To further integrate the viewport experience we have implemented a Viewport 2 (VP2) Hydra render delegate which brings with it full-screen effects like depth of field, screen-space ambient occlusion, motion blur, and fog. This VP2 support means that USD data and Maya data can now co-exist seamlessly in the viewport and its editors.
Edit USD in Maya
The last bucket will enable you to "edit USD in Maya". This is where Maya becomes a complete tool for USD functionality. This is where we support native prim and layer editing. To do this, we are enabling editing for USD natively in the attribute editor, the outliner, and in the viewport using manipulators. In the image below you can see USD data being directly manipulated in Maya's VP2 viewport. All edits are made directly on the active USD layer.
To fully support USD's system of layers, we are implementing a USD layer editor as well. Below you can see a work in progress design mockup for what that may look like.
Maya USD is a game-changer and getting it right is a priority for Autodesk. We are working closely with Pixar (the creators of USD), countless industry partners and the open-source community at large. Come join us and make Maya USD the best that it can be. We can't wait for you to try it out and tell us what you think.
- Maya USD on Github
- Pixar USD
- Autodesk Maya USD Vision Series (featuring Pixar, Animal Logic, and Nvidia)
- Animal Logic USD Playlist