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

Enhancement: Maya USD: Rig in USD Asset as MayaReference prim #6093

Open
2 tasks done
BigRoy opened this issue Dec 27, 2023 · 0 comments
Open
2 tasks done

Enhancement: Maya USD: Rig in USD Asset as MayaReference prim #6093

BigRoy opened this issue Dec 27, 2023 · 0 comments
Labels
host: Maya type: enhancement Enhancements to existing functionality

Comments

@BigRoy
Copy link
Collaborator

BigRoy commented Dec 27, 2023

Is there an existing issue for this?

  • I have searched the existing issues.

Please describe the feature you have in mind and explain what the current shortcomings are?

Working within a USD Pipeline usually means you want your animation output for e.g. a rig to be overlaid on top of a loaded USD Asset to merge the animated point data with the model and look of the asset, usually for use by downstream lighting department.

The USD reference usually provides:

- asset (referenced usd asset)
  - geo
  - mtl

The output data from a rig should then be overlaid over the /asset/geo path in the shot to move the character around.

Currently, publishing an animation from a rig usually means completely separate Alembic or USD data that would need to somehow be identified to get overlaid over a particular USD asset structure in a shot.

What if we could load an asset, and it itself, has a reference to the rig embedded?

How would you imagine the implementation of the feature?

Maya USD allows to embed maya scene files (mayaAscii or mayaBinary) to be included into USD as a MayaReference prim referencing the file. When a Maya USD Proxy finds such a prim it can enable the prim as a regular maya reference to load the native maya data, like for example a rig file.

I'd like to propose to - whenever publishing a rig from Maya to write out a USD Asset Contribution where an extra layer gets added to the USD asset representing the rig as a reference.

Basically someone (e.g. either in Maya or Houdini) lays out assets in a scene, by loading the asset USD. If that asset now contains the MayaReference prim (which can be loaded fine in Houdini; just the internal data of the maya scene couldn't be loaded) then in Maya one could now enable that reference inside the USD Asset to load the actual rig.

So assets laid out in any USD supporting host could in Maya be switched to their rig for animating. Nice!

In essence we'd need:

  1. On publishing a Maya rig, create a USD asset contribution that references in this rig version in a USD layer
  2. On Maya, when the Maya USD reference rig is loaded (and its detected its loaded within USD asset) then publish the animation cache as USD that gets added as a variant on the loaded asset in the shot's anim layer.

That way, the animator in Maya can just read a USD Layout with loaded assets, enable the reference, animate and publish.

Plus side to this would be, that when they've published their animation to the shot's layers they can also disable their reference and switch it over it to the published cache (since it's also a USD contribution). Meaning they can use the cached USD data as proxy in their scene whilst maybe e.g. continuing to animate on another character.

Are there any labels you wish to add?

  • I have added the relevant labels to the enhancement request.

Describe alternatives you've considered:

Loading rigs manually, then publishing and manually overlaying (e.g. referencing) the output over the USD data over an asset, after the fact.

Additional context:

No response

[cuID:OP-7978]

@BigRoy BigRoy added type: enhancement Enhancements to existing functionality host: Maya labels Dec 27, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
host: Maya type: enhancement Enhancements to existing functionality
Projects
None yet
Development

No branches or pull requests

1 participant