stuartnlevy

stuartnlevy

About Me

Connect

LOCATION
Not Specified
WEBSITE

Houdini Skills

Availability

Not Specified

Recent Forum Posts

Making .ifd's that render multiple /out nodes? Sept. 17, 2020, 8:04 p.m.

Hmm, thanks. In our case, the ifd's themselves are small - we do already use packed primitives for large static geometry. The costly intermediates are surfaces with procedural displacement, constructed on the fly in a shader derived from on-disk texture images.


On a lark, I tried gluing two separate .ifd's together with a text editor:

the header of one of them,
then all the “Retained geometry” entries from both files,
then the “Main” section from one of them down to the ray_raytrace,
then the “Main” from the other one,
and another ray_raytrace.

Result: No error reports. It created both images, and they were different! The first of them might have been correct… the second was clearly wrong. So at least some settings from the first image were being inherited by the second when I didn't want them to be.

The .ifd file format description has some discussion of scope of settings, so maybe the undesired inheritance could be fixed, but I'm kinda shooting in the dark.

Making .ifd's that render multiple /out nodes? Sept. 17, 2020, 4:52 p.m.

I tried tying multiple ifd-output nodes as input to a Merge ROP. Rendering that Merge ROP just triggers each of the dependent ROPs to write its own, separate ifd file.

Making .ifd's that render multiple /out nodes? Sept. 17, 2020, 3:51 p.m.

Is there a way to write .ifd's that, when rendered, will create images for multiple /out nodes in one mantra invocation?

We have some scenes that generate fairly expensive intermediate geometry. For each animation frame, we need to create multiple several /out images that depend on those same intermediates.

Ideally we'd invoke mantra once per frame, and feed it an .ifd that tells it to make the intermediate stuff internally and render all the associated outputs.

But we've been generating .ifd files by setting up an /out node to create ifd's and then invoking ropnode.render(). It creates a self-contained ifd which renders just that frame.

Can we make a single ROP node (merge??) that depends on several other ROPs, such that <overall_rop>.render() creates a single .ifd that does the whole job?

Or: is there a safe text-processing way to merge multiple, separately-created .ifd files into a single one that creates the multiple related images? I might be able to parse the generated .ifd's well enough, but would prefer a less hack-y way.