Search - User list
Full Version: USD workflow Maya anim to Houdini
Root » Solaris and Karma » USD workflow Maya anim to Houdini
AndreasWeidman
We do our rigging and animation in maya, export that anim as a selfcontained usd file and reference into solaris.
Now, had we done the anim in houdini, we would be using a manifest and a layerbreak before the anim publish, and sublayering the anim into the correct place.

Since Maya is... well... maya. There doesnt seem to be any way to use a usd manifest file and output your anim as part of that structure. Or am I missing something?
trisfae
hi, what file format is the anim coming out of maya? alembic?
jsmack
Maybe there's a better 3rd party usd plugin for maya that would facilitate that.
AndreasWeidman
USD. So what we do today is that we just reference that in. But that doesnt really jive with the optimal workflow we can use within houdini.

The optimal way would have been (simplified version):
- manifest.usd with the structure and all asset names.
- Some_model_asset.usd exported (name matching the manifest)
- These and other layers are linked in scene.usd
- Anim brings in scene.usd which automatically has the model. Rigs it. Animates it. Publish usd
- Light brings in scene.usd which now has the anim on the model (anim.usd + model.usd + manifest.usd).

But since maya doesnt seem to have a way of placeing things into a usd structure unless exporting it first, you would not be able to rig the model and keep it in the same structure. Or importing the model and placeing it in the structure even.

In other words. Maya seem only to be able to 1. import a usd structure and move/change things already there. But not add custom geo or anything to it. 2. Only way to export non-usd stuff to usd is to export the full non-usd stuff rather than just the changes/overrides that you actually want.

Drives me nuts. Just counting the days until we can go full on with kinefx
RichardFr
You don't have to export the whole scene geometry in animation.
When you bring in the scene.usd you can rig and animate a single asset and publish only this asset as anim.usd. In a post process you update the scene.usd to add the anim.usd as a sublayer. The anim.usd contains only a single animated asset, but when lighting imports the scene.usd it will have the whole scene with all the other static assets.
AndreasWeidman
Are you sure about that RichardFr? Because there seems to be no way at all to being in the model/sceneusd and rig as a stage and rig that. Mayas rigging tools, or any geo tool for that matter, cannot interact with usd elements in maya like it can with say sopmodify in houdini it seems.

You can import it/convert it into a regular maya content and export the anim as a seperate thing, (which is what we have been doing), but that, and only using the usd-files intead of alembics, has little to do with the proper usd workflow I am looking for. I.E only exporting the changes, the animation data etc, withing a strict manifest and inherits. Anything else would just be business as usual

What maya needs is SOP create, SOP modify, an SOP import functionality. Without that it does not seem that mayas usd stages would be uselful for anything really?

Appriciate the reply though!
RichardFr
Yes you are right, you cannot rig or even animate USD objects in Maya. Also as far as I know there is no easy way to convert USD objects to native Maya objects. The objects, which will be animated need to be imported as Maya geometry unfortunately.

I went through an example USD workflow, which also brings Maya animation into Houdini:
https://vimeo.com/551545616#t=1070s [vimeo.com]

The way it works in this example:
- rigging imports the asset geo as native Maya geometry so it can be rigged
- the rigged asset gets published as .mb
- animation loads the scene.usd as USD data, which contains the shot camera, the set and character assets for reference
- animation also brings in the rigs from the .mb file and animates them
- the animated geometry gets published as anim.usdc and added as a sublayer in the scene.usd, which can be loaded by downstream departments

So the Maya stages are used in animation only for bringing in static assets and the camera for reference and playblasts. The Maya USD workflow is much more limited than in Houdini for sure, but at least downstream departments can load the scene.usd and have everything they need from the upstream departments.
AndreasWeidman
Too bad. That was what I was fearing, but expected expected, and the exact way of working we do currently.

It’s really a shame that this was Mayas USD implementation.
I suspect we’ll move our anim to Houdini and kinefx rigs before maya fixes this and gets onboard the usd train.

Glad to know I wasn’t crazy when trying to figure this thing out. Thanks for helping me confirm that Richard.
inki
RichardFr
- the animated geometry gets published as anim.usdc and added as a sublayer in the scene.usd, which can be loaded by downstream departments

Hey Richard,

Thanks it's great sharing your experience and way to work.

I am bit confusing this part.
"- the animated geometry gets published as anim.usdc and added as a sublayer in the scene.usd, which can be loaded by downstream departments"
what this means?

Should I use traditional way caching out animated geo as usdc? like file>export>
Or is there other way?

I checked your video, I may missed that part. Also traditional caching out way is not working to me....

It would be great if you can help this out.

Beset
Inki Jo
mestela
I'd be curious if the new usd capabilities in bifrost help unlock some better workflows. I don't hold out much hope, but y'know, a kid can dream.
RichardFr
inki
RichardFr
- the animated geometry gets published as anim.usdc and added as a sublayer in the scene.usd, which can be loaded by downstream departments
I am bit confusing this part.
"- the animated geometry gets published as anim.usdc and added as a sublayer in the scene.usd, which can be loaded by downstream departments"
what this means?

Should I use traditional way caching out animated geo as usdc? like file>export>
Or is there other way?

Yes you can save out your animated geometry as .usdc from the file->export menu. Then you have a file, which contains only your animated geometry and nothing else (no shaders, no camera, no props...).
This file can be added now as a new layer in the scene.usd file. In my video that happens automatically in a post-export process. If you are exporting it manually from the file menu, you can layer the scene.usd and the anim.usd in Solaris with 2 sublayer nodes.
sepu
Bifrost indeed facility this workflow btw. It gives you much more than Maya USd UI without going into Python. Besides is procedural as well. So is def worth having a look.
pbdj
RichardFr
Yes you are right, you cannot rig or even animate USD objects in Maya. Also as far as I know there is no easy way to convert USD objects to native Maya objects. The objects, which will be animated need to be imported as Maya geometry unfortunately.

These tasks are very easy in Multiverse, you can do and animate any affine transformation at prim level via transform overrides, and write them as overrides to stackable usd layers.

As per importing, Multiverse offers a unique USD importer with “live-connection” for Maya<>usd round trips, it is very powerful as it allows to bring something (prim or sub-hierarchy or even entire hierarchy) in as Maya data, modify it and put back into usd. Version 7.1 has even more powerful importer which supports hierarchies, instances and even point-instancers.

If you have questions just hop onto our slack or send me an email.
NMVHS
RichardFr
inki
RichardFr
- the animated geometry gets published as anim.usdc and added as a sublayer in the scene.usd, which can be loaded by downstream departments
I am bit confusing this part.
"- the animated geometry gets published as anim.usdc and added as a sublayer in the scene.usd, which can be loaded by downstream departments"
what this means?

Should I use traditional way caching out animated geo as usdc? like file>export>
Or is there other way?

Yes you can save out your animated geometry as .usdc from the file->export menu. Then you have a file, which contains only your animated geometry and nothing else (no shaders, no camera, no props...).
This file can be added now as a new layer in the scene.usd file. In my video that happens automatically in a post-export process. If you are exporting it manually from the file menu, you can layer the scene.usd and the anim.usd in Solaris with 2 sublayer nodes.

Hi Richard, thanks for the tutorial video on Prism and I wonder when you export the animation by selecting only geo from the rig, how did you keep the hierarchy the same as asset.usd ? File > Export seems always keeping additional parent transform nodes from the rig. Not sure how to drive the shaded asset.usd with that.
daviddeacon
NMVHS
Hi Richard, thanks for the tutorial video on Prism and I wonder when you export the animation by selecting only geo from the rig, how did you keep the hierarchy the same as asset.usd ? File > Export seems always keeping additional parent transform nodes from the rig. Not sure how to drive the shaded asset.usd with that.

You can use the -exportRoots flag that's part of the Maya exporter, there are a number of options that aren't exposed via the GUI, so your going to need to use some python code to access them.

https://github.com/Autodesk/maya-usd/blob/dev/lib/mayaUsd/commands/Readme.md [github.com]
RichardFr
NMVHS
Hi Richard, thanks for the tutorial video on Prism and I wonder when you export the animation by selecting only geo from the rig, how did you keep the hierarchy the same as asset.usd ? File > Export seems always keeping additional parent transform nodes from the rig. Not sure how to drive the shaded asset.usd with that.

You mean you have some additional parent objects at the top of your rig hierarchy, which are not in the asset.usd?
The exported animation doesn't get layered on top of the asset.usd. It get's layered on top of the shot.usd. If your rig requires these parent objects, then you have to modify the hierarchy in your shot.usd file to match that. You'd do that by adding some xforms in your layout scene, where you reference in the asset.usd into your shot hierarchy.
NMVHS
Ah, great! These are very helpful. Thanks David and Richard!
Mark Wallman
Hi all. Having tried to set something up in Bifrost, it is unfortunatly something I would never attempt again. I got help from AD but the phrase "Rube Goldberg machine" comes to mind using Bifrost, IE: something that is very simple becomes very complicated.

This plugin (multiverse) is the only way I would advise you to get things in and out of Maya if you are going the route of USD.

https://j-cube.jp/solutions/multiverse/ [j-cube.jp]

For this year as it was too late to get this installed on our machines I have made a Houdini HDA that can take either cached usd animations or model geo and create the sublayering of model and animation automatically. Technically in Bifrost you can strip out UV/normal data etc and just end up with the point translation from animated meshes it is just too hard to set up so I am doing this in Houdini instead.

If you can use multiverse for Maya it will make all your problems go away. I cannot recommend it enough. It is super easy to use with no learning at all. Out of the box USD in Maya seems really fragmented so if you are just using a basic install of Maya I would just use it for straight mesh export and dont bother with anything else. Best. Mark
minong7051
Do not use maya's own plug-in to export usd! That would be a disaster.

If you have finished lookdevpin maya, it is safer to re carve it in houdini. maya only exports abc,then use python node to strip abc's namespace ':'&'sharp',loop search same name and match shaderpath.

Do not use Arnold,because arnold keep it's own usd format,subdiv can't match karma/renderman
filmfritze
Are there any new possibilities for the animation workflow from Maya to Houdini. there have been some changes in the Maya USD plugin.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB