Store animations as Hermite splines in USD

   211   1   0
User Avatar
Member
3 posts
Joined: Aug. 2025
Offline
Wanted to sense-check an approach to store animation data as splines in an USD stage (instead of time sampled values).

I’m using Solaris to compose an USD stage that is consumed as interchange format for a game engine I am writing. Geo, lights, and cameras are straight forward. I’ve had success parsing MaterialX node graphs stored in UsdShade down into runtime material info. Now I’m trying to store animated data in splines instead of time samples.

To store the animated channel as a curve I’m using a CHOP network to “fit” keyframes like translation, rotation, etc. into a non-weighted Hermite spline. I then create a curve object out of this data and store it as a prim on the stage, store values, knots, tangents, etc as primers, and put a reference to the channel from the xform it originally came from.

I can then consume this into my engine. It works, but seems unwieldy. I haven’t tested this with a a full 100+ joint hierarchy but wanted to see if there is a simpler way to achieve what I am trying to do.

I did see the USD anim project, which is doing what I want but haven’t been able to try it yet as it is in development, also unsure how to use it from Solaris as it doesn’t have the latest USD builds.

Greatly appreciate comments or suggestions

References
* https://www.sidefx.com/forum/topic/102117/ [www.sidefx.com]
* https://openusd.org/dev/api/page_ts_status.html [openusd.org]
Edited by anna87 - Feb. 1, 2026 23:32:00
User Avatar
Member
3 posts
Joined: Aug. 2025
Offline
Turns out Ts.Spline is available in Houdini Python LOPs after all and it even giving me a preview of the animation. Trying to write out spline data directly to a prim now instead.

Hermite splines doesn't play back as it's unsupported but the data is stored correctly.
Edited by anna87 - Feb. 3, 2026 05:39:07
  • Quick Links