-
Notifications
You must be signed in to change notification settings - Fork 41
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
Core: Implement USD workflow with global asset/shot contributions plug-in #295
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…ayon-core into enhancement/usd_workflow
moonyuet
reviewed
Apr 8, 2024
client/ayon_core/hosts/houdini/plugins/create/create_usdrender.py
Outdated
Show resolved
Hide resolved
moonyuet
reviewed
Apr 8, 2024
client/ayon_core/hosts/houdini/plugins/create/create_usdrender.py
Outdated
Show resolved
Hide resolved
Co-authored-by: Kayla Man <[email protected]>
…state of the USD Contribution toggle
|
…lidateInstanceInContext disabled (This basically disables the validation for any runtime instance in Houdini that does not have an instance node)
iLLiCiTiT
reviewed
Jul 2, 2024
Did another test run:
There's much room for improvement for documentation and "ready-to-go" templates. In particular configuring the contributions for shots versus assets is error prone and requires some fiddling but at the core it all works. |
antirotor
approved these changes
Jul 2, 2024
BigRoy
added a commit
to BigRoy/ayon-houdini
that referenced
this pull request
Jul 2, 2024
BigRoy
added a commit
to BigRoy/ayon-maya
that referenced
this pull request
Jul 2, 2024
This was referenced Jul 30, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
host: Houdini
host: Maya
size/XXL
type: enhancement
Improvement of existing functionality or minor addition
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Changelog Description
Additional info
Based on ynput/OpenPype#5925 but excluding the Maya logic (that will be a separate PR) - the description and notes in that PR still apply. That PR description also has some "early WIP demo videos" which may help you along.
This is currently a draft refactor from our USD Project's OpenPype logic to AYON:
Note that you currently need to make sure you set your default primitive path on the USD ROPs for correctly outputting the USD files and of course making sure your prims adhere to that hierarchy, e.g.
char_hero/geo/my_cube
.Tutorial
Click these sections to expand/collapse
Background details + example videos
Your first USD publish with AYON
Creating an asset
The producer has his 🔫 pointing at you and needs the asset now!
When we are referring to the USD asset, we mean the asset with both the model's geometry and the look's materials and textures. The USD structure (simplified) then becomes:
Where the look is applied over the model inside the asset.
Creating the model
From a Maya, Houdini or Blender perspective
We will want to create our geometry's contribution to the asset.
For the asset structure it's critical we work within the asset's hierarchy so that USD referencing works. (consider that USD mumbo jumbo for now)
As such, we'll always work within a root group with the current folder (asset)'s name.
Say our character's folder path is
assets/char_hero
then the root group ischar_hero
We can make a hierarchy like:
And yes, cool heroes wear no shirts. 👕 Only pants 👖 .
When done. We publish that
char_hero
as USD contribution to themodel
layer.The publishing logic will make the layering of the
model.usd
into theasset.usd
for you automatically.So no we have:
When loading that in, we'll have our hero wearing pants.
But it needs some 🖌️🎨 paint.
Creating the look
From a Houdini perspective
Note the word "reference" here. We are usually not "sublayering" the asset USD file
Make sure to add a "layer break". This special Houdini node breaks off the USD scene above it and from that moment on any changes on the existing hierarchy are just opinions that are overlaid on top of it. This means that when writing out a USD file now we're not re-exporting the geometry itself, but only any changes we make after the layer break.
Apply your materials to the
char_hero/geo
meshes and make sure your materials are withinchar_hero
group as well. So usually you end up with:The producer is now happy!
Creating a shot
The producer bought another gun, and is dual wielding 🔫 🔫 now and looks fierce. They need a shot ASAP.
Houdini perspective
Now the tables have turned! All the producer points at you now is cash dollar bills 💵 and a medal 🥇
You are now the USD champion - until they ask you about asset variants, LODs, purposes and a layered shot structure, and more. Easy, but not for today.
Ready to jump to the next level. 3...2...1 - continue
<here>
(next chapter still to write)Some technical details explained by @MustafaJafar
USD Publish Settings explained
I'll just focus on 4 interesting settings.
target-product
which is a user editable text.target-product_department-name
which is a selection from a drop down list. and users/admins can't change the items in the list.variant-set-name
which is by default is set to{layer}
which evaluates to the selected item in the drop down list in Num2variant-name
which is by default is set to{variant}
as the arrow in the screenshot points.Asset Structure
The asset structure is based on:
But, let me summarize the results.
When enabling Asset Contribution + Add as Variant
Product:
target-product
Product:
target-product_department-name
Product:
AYON-product-variant
When enabling Asset Contribution without Add as Variant
It still add a variant! I think there might be a bug or I did something wrong...
Also, I'll update this section once it works on my side.
When disabling Asset Contribution
Product:
AYON-product-variant
Getting an error about "Unresolved reference path" on load?"
See the comment here
Testing notes: