Closed BigRoy closed 1 month ago
I'm not sure if I'm testing it correctly.
I made this simple scene with some context vars used in my stage as well as my Rop to publish something to my shot_01
and shot_02
.
The Rop works perfectly but the stage doesn't. RB_shot_01_fx_v001.zip
I'm not sure if I'm testing it correctly. I made this simple scene with some context vars used in my stage as well as my Rop to publish something to my
shot_01
andshot_02
.
Did you specify the context options on the ROP to override it?
For example:
That way you can have two ROPs pointing to the same graph but outputting something else.
The usdTest
ROP you have there doesn't seem to specify them on the ROP?
Here is a stupidly simple example that just changes the name of a cube prim based on the context options: simple_usd_rop_context_options.zip
So in this particular case.
render
on the ROP behaves different than what the publisher does.In short, currently you'd still need a ROP per context you want to export.
Changelog Description
Support Houdini context options from the ROP node for the USD collectors + validations
Additional info
With this change you can create a Solaris stage in LOPs that is dependent on context options, e.g. for multi-shot lighting workflows and publishing each of them will now correctly retrieve the expected render products for e.g. USD rendering for that Solaris context and/or whatever is different in the LOPs graph for that particular context.
This also changes the behavior that each validator recollects the stage and layers each time from the LOP. Instead, we query them once, keep in memory and re-use them in validators down the line. Whether this will be entirely correct, safe to do and remain without crashes we'll have to investigate in some good testing of publishing some decently complex graphs of models, looks and render scenes. A bigger test render scene with multi-shot workflow that I had seemed to run fine.
How to best keep the unique cloned layers in memory I wasn't sure about and took me a while to figure out something that didn't crash Houdini or was immensely slow. This now seems to behave consistent - but I have an open USD Alliance forum post here hoping to get even better approaches.
Testing notes:
Note: The generated USD product being correct isn't much up to us - that's still a regular Houdini ROP render so we would mostly be validating whether our collectors and validators are correctly picking up the context options. Like e.g. having different render product output paths per context, or different textures loaded per context (and have those correctly be published along with a look).