Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Define and document Avalon USD workflow #477

Open
BigRoy opened this issue Dec 1, 2019 · 0 comments
Open

Define and document Avalon USD workflow #477

BigRoy opened this issue Dec 1, 2019 · 0 comments

Comments

@BigRoy
Copy link
Collaborator

BigRoy commented Dec 1, 2019

Issue

With USD now becoming widely accessible for multiple DCCs, like Houdini, Katana, Gaffer and also Maya seeing development on that side it's becoming more crucial to initiate the transition for Avalon to adopt it too. Additionally renderers are adopting it, like Renderman, Arnold, Redshift and ProRender are available.

Adopting USD, aside of just writing code in studio configurations for loading and publishing is also for a large part (if not primarily) about adopting a new mindset to make it most useful for production. As such, I'm opening this issue to start the discussion and hopefully develop documentation or a wiki for Avalon with USD alongside developing the actual implementation for Avalon.

It would be great if we could get a team together that can allocate time on implementing USD with Avalon. If anyone is able to contribute in that manner then maybe it's good to set times a day or specific day of the week to collaborate on getting USD into Avalon in a timely manner. So that we can help each other with embracing USD and also quickly iterate on how to implement it with Avalon.

Introduction to USD

Terminology: Layering, referencing, variants

USD comes with quite a lot of its own terminology which will be very helpful to read up on. I'll not get into describing them here but since it'll be new for most people reading this issue I'll try and share links to relevant documentation.

USD introductions

USD Workflow discussions

The recommended workflow with USD is still heavily being explored by studios and elaborate documentation is sparse. The introduction links above do introduce the concepts, e.g. the Pixar links mentions workflows here and there and the Houdini Solaris tutorials describes how one could work and share content. Yet still a lot is up to your imagination on how to use it in production. However it's been widely discussed on usd-interest so definitely look there for questions. Here are some related links:

Other resources

Discussion

Initiating some topics that would be crucial to discuss on how to do it with Avalon.

Subsets and how they are linked to each other

With USD we need to re-evaluate our publishing and what we store on disk. For example it's often done to have an asset.usd that references its geom.usd and shade.usd. Then when shotbuilding one references the asset.usd so that the shaders and geometry can continue to progress separately but always propagate nicely into the asset.

As such, say we'd publish modelDefault then that would potentially get automatically added into a asset.usd as a sublayer. Similarly when publishing the lookDefault that would automatically be added into the asset.

asset.usd
  - model.usd
  - shade.usd

Then, with variantSets it can introduce another interesting hierarchy of "variation". It can result in this:

- modelDefault
    - LOD0
    - LOD1
    - LOD2
- modelBroken
    - LOD0
    - LOD1

I'm specifically showing this as variants can be hierarchical. You can have a variantSet that defines the type of model to load, but inside of this variant it can also expose its own variants, like an LOD or whatever variants you'd want to expose.

We'll need to think clearly on what to best expose in the Loader as USD files and which subsets we generate and version accordingly.

Note: That when layering files the order is important as it defines the "strength" of the opinions (changes/overrides) it applies. As such, this ordering we'll also need to make sure is applied in the way that makes sense for production.

Versioning

USD by itself does not come with a way to resolve versioning in the loaded files. For example if someone publishes shot.usd that contains a model.usd then whenever one loads shot.usd it will always load that specific contained model.usd and it's non-trivial (I believe) to override what it loads in the reference. Instead, the recommended workflows is to implement your own way of resolving the embeddded paths, with a custom ArResolver to override the Asset Resolution. This, on its own, will likely expand into a quite sizable topic so I'll soon open up a dedicated issue to implementing a custom USD ArResolver to resolve Avalon versioning.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant