I'm trying to cache out a moving feather system, and right now It's connected to a component output node https://www.sidefx.com/docs/houdini/nodes/lop/componentoutput.html [www.sidefx.com] which only has a static/single frame save to disk button.
How do I approach dealing with data that moves?
Time based files and component output node
429 3 0-
- larkis
- Member
- 32 posts
- Joined: 3月 2014
- オフライン
-
- BryanRay
- スタッフ
- 48 posts
- Joined: 3月 2022
- オンライン
First, ensure that your Component Geometry is set to author time samples. In the Attributes section, set Author Time Samples to "If SOP is Time Dependent". That ensures that the animation is converted from a Houdini node time dependency (indicated by the green clock icon in the network view) to USD time samples. You can verify that you have USD time samples by examining your prims in the Scene Graph Details pane. Light green text indicates time samples.

However, just authoring time samples doesn't break the time dependency -- you should still see green clocks on the nodes downstream of Component Geometry. If you examine the USD layer produced by Component Geometry, you'll see only one sample has been authored on each frame.

Append a Cache LOP after the Component Geometry and set it to Always Cache All Frames. That will author every time sample of your timeline, regardless of which frame you're looking at. Obviously this may take some time to calculate the SOPs geometry for the entire timeline. When you examine the layer created by Cache, you'll see multiple time samples present instead of just the current frame's, and the green clock icon will no longer be present on nodes below the Cache (unless you've animated something downstream of it, of course.)
Saving from the Component Output should now result in an asset containing your animation.
However, just authoring time samples doesn't break the time dependency -- you should still see green clocks on the nodes downstream of Component Geometry. If you examine the USD layer produced by Component Geometry, you'll see only one sample has been authored on each frame.
Append a Cache LOP after the Component Geometry and set it to Always Cache All Frames. That will author every time sample of your timeline, regardless of which frame you're looking at. Obviously this may take some time to calculate the SOPs geometry for the entire timeline. When you examine the layer created by Cache, you'll see multiple time samples present instead of just the current frame's, and the green clock icon will no longer be present on nodes below the Cache (unless you've animated something downstream of it, of course.)
Saving from the Component Output should now result in an asset containing your animation.
-
- larkis
- Member
- 32 posts
- Joined: 3月 2014
- オフライン
-
- larkis
- Member
- 32 posts
- Joined: 3月 2014
- オフライン
I have tried this and it does work with my feather setup, but for some reason the same setup does not work with fur. I'm reading in some hair generate nodes which display and animate fine in the sop context, but when run through the component builder workflow only a few of the fur objects appear while others don't. They all appear in the VK viewer but not in karma CPU or XPU. Doing a sop import on all the fur generate nodes and merging them together, and saving out a usd rop does work and things render fine. Unfortunately this is an ugly setup as it produces automatic file structures based on the last merge object name (the resulting file still works and contains all the fur pieces). I have tried using a layer save path on the sop import nodes that are getting merged but this also produces a single file named after the last merged node.
While all this works as a workaround, I'm worried that it will create problems later so I would rather have a clean setup.
Any ideas?
While all this works as a workaround, I'm worried that it will create problems later so I would rather have a clean setup.
Any ideas?
-
- Quick Links
