What is an efficient way to segment my USD into Parent & child meshes?

Hello everyone,

I’m a beginner to USD and 3d Files in general and is stuck with an issue. To provide an overview, I’ve a USD file of brain (segmented from MRI). However for my thesis, I need several segments of the the brain for entry point detection.

To put it in perspective, this is how my USD file looks. However, I need the /Brain stage to have several child stages each for different parts of the brain gray matter (structure in the first image) to include different areas

So essentially I need /Brain as parent and /Brain/MotorCortex /Brain/SensoryCortex etc as sub-meshes.

I couldn’t find any similar problems/approaches for this. It would be really helpful if someone can point me in the right direction,

Thank you and please feel free to reach out in case my question is unclear.

  • Sanjay

There are three organizational aspects to your model. One, is the structure of the files, and this will reflect the granularity of how you save things out. For example, if the geometry for each brain section is very large, you may wish to organize each submesh into its own usdc.

The second organizational aspect is the transform hierarchy. The transform hierarchy, and data that makes up the meshes are not the same thing, the transform hierarchy is simply transform prims that position meshes in space. geometry prims hold mesh data.

The third aspect is sublayers. Sublayers are a way to “interleave”, if you will, a lot of data into a single scene hierarchy.

A key fact to know about submeshes is that you are expected not to parent meshes under meshes. What this means in practice is that you instead make a hierarchy of transforms that establishes one thing is the transform parent of another thing. The transforms themselves may also have a mesh under them. So one sibling might be a mesh and the other, a transform to continue the hierarchy, but the meshes would have no children.

So to put it all together, one approach could be to set up your transform hierarchy in your main layer on the stage, and then put the meshes into the hierarchy via sublayers. Each sublayer would point into the transform hierarchy to put the geometry primitives in the right place, and might either also contain the individual meshes, or you could set up the geometry as payloads instead. If you’re just getting started that might be more complex than you need, but maybe this explanation will give you some ideas.

To start, you could just set up the transform hierarchy, and add the geom prims in the right places, and then as a later step you could explore using composition if it helps you with the things you are working on.

Others will no doubt have other interesting ways to organize your model, but I thought I’d throw this out there :slight_smile:

If differing Material bindings (and potentially selectability, though I’m not sure Hydra supports this yet) are your primary concern, then you might also find GeomSubset useful - GeomSubsets are prims that do live beneath Meshes, each of which identifies a set of faces on the parent Mesh, and can specify their own Material binding.

The “Stratocaster” in the Apple QuickLook gallery provides a “real” example using them.