Applying sparse point sets to mesh prims

We have some existing tech that we use for shot sculpting that we are looking at porting over to USD. This shotsculpt tool stores the difference between the input cache and the shot sculpted cache. It basically is a delta between points in world space. We’d like to be able to apply these detlas as a layer which is referenced in.

The deltas would (I am guessing) need to be stored in their own schmea (I am probably saying this wrong) and store a relationship to a mesh prim’s points attributes.

This would then calculate the new point position and put it back into the mesh prims points attribute.

This feels a bit out of the scope of what USD is used for and possibly something that OpenExec might solve (maybe?).

If anyone has any thoughts on storing sparse vertex point data and applying it to other points that would be cool to know how you did it.

You mention two different features in there, @patricknagle

Sparse vertex point data - no such feature exists in USD today, but we are beginning to research how arrays (like points but generally any array-typed attribute) can be can be sparsely overridden in a stronger layer.

sculpting/blending - yes, this would be one of the things you can do with OpenExec. In Presto, the setup would look similar to what you describe. But Presto’s OM for rigging was designed before USD had formulated Applied API schemas, and those could provide more concise ways of expressing computations like this.

The “blend shapes” feature of UsdSkel does allow you to mix shape-deltas onto posed points. I am not expert in UsdSkel, and I don’t know if that would work if the points themselves are not being LBS skinned by UsdSkel as well…


OpenExec seems like the right thing long term! Would an Applied API schema be able to do what I’ve described? I’ll have a look into the blendshape api and see if it can work without skinned.

Thanks again!

By the way sparse overrides on array’s would be great. I can imagine that would open up a lot of options when working with point instancers in stronger layers and many more applications! Sounds great.