You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
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.
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:
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:
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.
The text was updated successfully, but these errors were encountered:
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 itsgeom.usd
andshade.usd
. Then when shotbuilding one references theasset.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 aasset.usd
as a sublayer. Similarly when publishing thelookDefault
that would automatically be added into the asset.Then, with
variantSets
it can introduce another interesting hierarchy of "variation". It can result in this: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 amodel.usd
then whenever one loadsshot.usd
it will always load that specific containedmodel.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 customArResolver
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.The text was updated successfully, but these errors were encountered: