Trying to figure out a reliable workflow regarding crowds and USD. Anyone have any experience with this and who would like to share a common workflow?
Do you still cache your agents to disk pre-sim, using the old workflow, or is there now a process where you cache them as usd?
Is it possible to export agents from a crowd sim to USD (not just reading them into LOPs, but actually exporting them out), then use the USD in a different software utilizing USD workflow.
Is it possible to write out a crowd sim to USD without unpacking the agents?
There's a good chance you'll still want to cache your agents to disk in the usual workflow, particularly if you plan on using lots of bgeo caches for your simulation caches before exporting to USD, or depending on how you import your source characters / share them between files.
In the latest 18.0 builds there is an option to import agents and clips from UsdSkel as well. And as mentioned above, the SOP Import LOP will convert agent primitives to UsdSkel
cwhite There's a good chance you'll still want to cache your agents to disk in the usual workflow, particularly if you plan on using lots of bgeo caches for your simulation caches before exporting to USD, or depending on how you import your source characters / share them between files.
In the latest 18.0 builds there is an option to import agents and clips from UsdSkel as well. And as mentioned above, the SOP Import LOP will convert agent primitives to UsdSkel
Thank you Cameron and Heileif for the info and clarifying! This is really awesome.
Managed to export all my agents to USD. I used the “bakeskinning” node in LOPs as well to get deformation on the crowds working correctly in the exported USD. When exporting to USD without the “bakeskinning” lop node, the deformation of my agents were not applied. My question is this:
Is it bad practice to call the UsdSkel.BakeSkinning function to effectively bake the skinning of the agents when writing out the USD as a final result? Considering the documentation for that node states it should be used for debugging.
Aside from debugging, you shouldn't need to use the Bake Skinning node unless the application (or hydra delegate) you're importing the usd file into doesn't support UsdSkel properly. In particular, this is probably the case if an older version of USD is being used. The Bake Skinning node is basically the equivalent of unpacking the agents
cwhite Aside from debugging, you shouldn't need to use the Bake Skinning node unless the application (or hydra delegate) you're importing the usd file into doesn't support UsdSkel properly. In particular, this is probably the case if an older version of USD is being used. The Bake Skinning node is basically the equivalent of unpacking the agents
Copy that! Yeah, at the time when I imported my USD into Maya using Multiverse, UsdSkel was not properly supported.
Importing USD files directly through the agent sop looks very promising. I am excited to implement it into our pipeline!
Thank you again cwhite and pardon my late response.
It is implemented since Multiverse version 6.3.0, some of our clients round trip skel data from Maya to Houdini (setup crown) and back to Maya. We are waiting for the work to be public to do some marketing about it but they told us it enabled an awesome workflow.
I still haven't been able to get Crowd USDs to work when bringing to other DCCs without unpacking or bakeskinning them. Not sure if USDSkel is just not working but when bringing those USDs into any other DCC they show up as t-pose. Is there any specific setting on the USD export I should be ticking or a specific way to setup the agents before export?
Older USD versions didn't support instanceable references for skinned characters, so if another program isn't handling that you could use a Configure Primitive LOP to remove the 'instanceable' setting for the SkelRoot prim references
Maya via Maya-USD and Arnold can read crowd agents exported to usd fine. The problem I have is that the export needs a huge amount of memory. I have a few hundreds agents with some low resolution body parts. And it needs about over 110 gb of ram to export several hundred frames. Any ideas how I can reduce this?
That could be something to submit to support if possible, since it might need some investigation or to see what exactly your setup for the USD export is doing
I can import USD with instanced SkelRoots from Houidni into Maya successfully, but I can't make the same USD work properly in Unreal Engine. I tried both UE5.3 and 5.4, all I got is a huge t-pose mesh and missing skeleton. Has anyone export Houdini crowd as USD to UE successfully?
If instanced skelroots don't work in UE (I don't know offhand if that's expected behaviour or not), you could disable instancing using a Configure Primitive LOP applied to the SkelRoot primitives