Rigs in USD

   5812   4   5
User Avatar
Member
192 posts
Joined: April 2015
Offline
Hi guys,

Just a one man army here, working on his first project. After making a rig I decided to make the animation first, but after doing a little of that I already got interested applying in FX, shading and rendering. But when I added a little of those the scene file got heavier and I could animate less fluently, even tho I disabled as much as I could find of the nodes that generate and display the effects.

That's what made me start looking into USD/Solaris. (Maybe I could parse up the scene?)

It seems like that's right tool for parsing up the scene.

But I am wondering now how the workflow is regarding a rig. When using a ‘Scene Import’ of my rig and move one IK Null after selecting it in the Graph Tree, the geometry doesn't deform anymore.

Now I can imagine this is resolved when I just animate in the original Houdini file and export USD from there and import those ‘animated’ USD files into another hip to do FX and just update the original files to see the FX update also,
but I am just curious: how is it that rigs are dealt with in USD? Is there any sense in importing a full subnet with constraints, CHOPs, wrangles and whatnot? Or are rigs made directly in USD when you hear people speak about ‘layout-departments and animation-departments layering upon one another’, etc?

Thanks for any guidance. :-)
Edited by OdFotan - Aug. 11, 2020 05:15:34
User Avatar
Staff
4435 posts
Joined: July 2005
Offline
You should only bring the final animated, deformed skin into USD. USD can't represent a lot of those other concepts at all, and even when it can represent the concepts (a null can be an Xform prim), it doesn't let you describe the relationships between all those elements, so there's not much point. The one exception is if your character can be described as a simple skelton with bone-weighted deformation. Then UsdSkel can describe the skeletal animation and the skin weights and do the deformation at run time, but that's generally only useful for crowd-type characters, not hero characters. And to generate UsdSkel from Houdini you would have to author your character as a SOP Packed Agent primitive, which is all pretty limiting.

I would also recommend doing the import of your deformed character with a SOP Create pointed at the single character geometry node rather than a Scene Import because it gives you a lot more control over the import process. SOP Create is also better than a simple SOP Import because it has built in capabilities for importing materials (if you have any on your character that you care to preserve).

Whether the character lives in a separate hip file, and just gets imported to other hip files as a USD file cache is a workflow decision for you. A cached USD file on disk is going to be noticeably faster to play back, but require opening that separate hip file and re-caching to disk any time you want to change the animation.
User Avatar
Member
1529 posts
Joined: July 2005
Offline
Heya,

Just to pull on this thread a little further – pun very much intended…

If the layout is done on a USD stage, what is the best practice for animating something against said layout?

Do we bring a USD layout layer into sop context via some sort of reference?

G
User Avatar
Staff
4435 posts
Joined: July 2005
Offline
If you're just bringing the USD layout into SOPs for reference purposes (so you can see what you're doing), probably loading the file with a USD Import SOP is the easiest thing to do. If the layout is static, you can load the whole scene as a single USD packed primitive.

If you want more control over loading the scene, you can load it into LOPs. If you then do your animation inside a SOP Create LOP, the USD layout will actually be drawn with a hydra delegate, which will respect payload loading, USD draw modes, and other niceties. But then you're stuck working inside a single SOP Network inside a LOP Network.
User Avatar
Member
10 posts
Joined: April 2015
Offline
Hi, I'm facing issues while trying to export a mesh with skeleton and bone-weighted deformation.

The problem I get is that the Skeletal mesh doesn't import correctly in UE -- I get issues with normals, mesh flickers with black color, and on more complex geometry the skin weights are totally messed up.

My steps:
1. Turn a kinefx rig to an agent (agentfromrig, then agentlayer with the named skinned shape coming from bonecapturebiharmonic)
2. Import it to LOPs via Create SOP
3. Configure primitive agentdefinition to disable it and make not visible.
4. Import USD to Unreal

What is the proper way to export such assets?

USD characters from nvidia omniverse samples are working just fine in UE, so I'm pretty sure the problem is on the export side.

Any help is appreciated!

Attachments:
UnrealEditor_R89dH4Uw4b.png (788.0 KB)

  • Quick Links