Tom Wolstenholme

tomwolstenholme

About Me

Connect

LOCATION
Not Specified
ウェブサイト

Houdini Skills

Availability

Not Specified

Recent Forum Posts

Error stitching multiple frames using USD Stitch Clips Rop 2022年7月4日15:50

Option #5 sounds like the most interesting approach to me.

This wouldn't be a million miles from the hack I'm using already - using the Stitch Clips ROP to create a clip of the first 10 frames (works fine with just 10, even on Windows....) then in a separate folder create a dummy set of empty USDs with the full framerange and with the same stage hierarchy (just empty xform and scope primitives as placeholders), stitching them into a value clip, then moving the single template usd file created back to the original folder. Seems to work perfectly - the manifest and topology files created I assume are identical whether it's a frame range of 1001-1010 or 1001-1360. The stitch clip just points to relative asset paths.

My next step was to take this a step further by editing the original Stitch Clip metadata in a Wrangle LOP, but ran into a wall. I noticed the primitive being stitched has 'clips' metadata named 'active', 'assetPaths' and 'times' which I hoped to be able to modify using VEX to stretch the frame range out to point at all the 360 frames. I was able to do this for the 'active' and 'times' data using something similar to the below code:

for(i=0;i<len;i++){
usd_setmetadataelement(0, @primpath, 'clips:default:active', i, set(1001+i, i));
}

This doesn't work for 'assetPaths' metadata unfortunately, as these seem to need to be written in the special Sdf.AssetPaths format to be resolved properly. Is there a way of editing the Asset Paths data in the Python LOP? The pxr.Sdf module doesn't seem to be documented in Python, at least not to do what I would like to use it for.

Also, after re-reading, your Option #2 does make sense to reduce the file size even further. The time varying data for this hair are only 'points', 'extent' and 'velocities'. But even with just those written out, I still get large individual file sizes.

Error stitching multiple frames using USD Stitch Clips Rop 2022年7月3日23:20

Hello,

I've been experimenting with USD's Value Clips and have been very impressed - they're excellent for combining per-frame USD files into a single USD which support motion blur, are fast and lightweight when scrubbing the timeslider in the viewport and support retiming and time-offsetting. An ideal solution for rendering large FX caches.

I've however ran into a problem when trying to combine many large hair simulation frame caches - each around 200MB - the USD Stitch Clip ROP works fine when stitching less than about 100 frames but errors out when combining more than that. Displaying an error "Couldn't map asset...."

I'm working on Windows and after diving into the code have noticed that this might be a problem with the UsdUtils.StitchClips code.

Is there any fix for this? It would be hugely disappointing to have to move away from USD value clips just because of this error.

Obviously I can't supply the entire file sequence I'm trying to cache - 360 frames of 200MB hair. I've supplied the error message I get.