USD Crowd Agent Definition Cache Workflow

   249   0   1
User Avatar
Member
7 posts
Joined: Sept. 2016
Offline
I was wondering if anyone else has attempted to cache an Agent Definition as USD? It seems ideal to leverage a USD workflow when constructing an agent that has purposes set, more easily connects materials, and in general leverages the benefits of a distributed USD structure.
This is the basic outline I have in my head:
When pulling a crowd into Solaris with the SOP Crowd Import LOP an "agent definition" primitive is created with the layers, shape library, and skeleton. It seems like another prim that holds SkelAnimations for each agent clip. Transform groups are effectively just json data and could be stuck on any primitive.
It seems feasible to cache an agent definition in this way. Now using this to interface with Houdini's crowd tools is a bit more of an issue. You would have to create a SOP that would translate all this information back to a Houdini Agent. You can do a lot with python, from the little I've dabbled with the hou.Agent and hou.AgentDefinition it seems like there would be a path for this.
Once you have your agent, you use the Houdini crowd tools as usual to sim or with motion paths or whatever. You would then need another USD interfacing layer. This would take your original USD agent definition and your crowd agents and recreate the familiar structure of instanced SkelRoots the SOP Crowd Import node creates. The difference being it uses our original definition that has a full USD structure. In this example, you could update one of the models far up the chain and have all those tweaks automatically propagate down to your entire crowd.
I feel like I'm missing something here, can anyone share their thoughts on a setup like this?
It seems like a much more unified way to organize agent files than caching an agent definition into bclip and grp and lay files. I can understand that having these clean references on disk can speed up crowd operations by loading only the file needed by the agent, but couldn't all of this just be unified as separate USD files?
  • Quick Links