Multi-shot workflow Solaris

Hey there!

I’ve got a setup thats working well in Solaris. I work in a “000” shot, which is my sequence, then in my houdini scene all the shots pipe into their own USDRender node. Each one pointing to the correct shot it needs to publish too.

I cant however get past this warning it seems:

Publishing to a different asset

There are publish instances present which are publishing into a different asset than your current context.

Usually this is not what you want but there can be cases where you might want to publish into another asset or shot. If that’s the case you can disable the validation on the instance to ignore it.

It mentions disabling the validation on the instance but I see no option to do so? Am I missing something.

I also have confirmed the same thing with the latest houdini dev branch too*

Thanks all!

Not currently behind my computer but I believe there is a setting along the lines of “Instance in same context”. I think you need to turn that off when publishing to different assets.

Cheers,

Ralph

2 Likes

And to confirm, yes! it turns out to be the option “Instance in same context” which wasnt clear to me what that was for, but good to now know and does it make sense.

It was still all rendering into the same shot weirdly but I need to double check all the settings in houdini.

Thanks!

Just wanted to state - this should also fully support the Context Options - including if you set them on the USD Render ROP (or USD ROPs). They have “Context Options” you can set on the rops so that e.g. you can have multiple rops rendering the exact same graph but with different context options.

It’s somewhat similar to rendering the same graph where at the end of the graph you have a node for each ROP that sets its graph’s context options. I just preferred it on the ROP at the time.

Would love to see your setup! :slight_smile: Definitely keep sharing what worked for you in the end, etc.

So at the moment when submitting 4 shots to deadline they all render the correct karma node (as each render exr output is named differently) but when the ayon publish job picks it up it seems to just use whichever shot context is first in the list and publish all 4 playables to that one shot/task. I’ve tried a few variations and I cant seem to get it to work. Even sending one at a time they all publish to the first context in the list.

I assume I’m doing the right thing here in terms of what ayon expects.

I select my karma node inside of lops, (now in the ayon menu) I select the shot it relates too, hit create USDRender, then i untick “instance in same context”.

You mentioned the context options in solaris, are you saying I need to set the correct context options on each stream with the “edit context options” node as well as what I’m doing on ayons side? If so, what would the variable name be and I’ll test it.

Thanks!

1 Like

No, the Houdini Context Options are by no means a requirement. It’s just a way to make more dynamic houdini setups

It should just be a means of having each USD render rop:

  • Write to a unique output location on disk (to avoid them overwriting each other). Due to the publish job files (metadata jsons) I’d recommend also rendering to at least a different folder.
  • Set a unique “Folder Path” on the instance. Make sure to Confirm the change at the top when you do change it (this is the most common thing that’s missed usually.)

Admittedly though, I have not tested this with the most recent ayon-deadline integration and last time I did it myself was just a few month back… but this should be absolutely fine.

  • When submitting to Deadline, each render job should have a *_metadata.json in the render folder. Can you share those here?
  • Can you also export the publish deadline jobs and share them here? (Select the job, Modify Job Properties > Submission Params > Top right click Export)
1 Like

As sooooon as you mentioned the unique folder I knew it was that. Confirmed, the json was being overwritten. So pointing each rop into its own folder now works a charm!

Thanks for the quick reply mate. And just to confirm I’m running the following versions along with the core 1.4.1-dev. I dont think its necessary, it was just me testing but at least you know its still working on the very latest dev builds.

1 Like

Hello,
Let me expand abit on this topic with some visuals.

Publish to a different AYON context

This tottally supported by AYON where you can publish different shots from a master shot for example.
There are couple of ways to achieve, this guide for Houdini solaris.

Publish instance for each shot

Create a publish instance (ROP) for each shot and in the publisher where you pick a different shot for each publish instance.

One Publish instance with Houdini Context Options

Where you can use context expression in the ROP node (in AYON Extra parameters) and change them either via :clipboard: Edit Context Options node or context options in USDROP or in USDRender nodes or from the context options menu.

Set AYON cotext using Houdini context options

Context Menu Script
from ayon_core.pipeline import get_current_project_name
import ayon_api

project_name = get_current_project_name()
parent_folder_path = "/assets"
parent_folder = ayon_api.get_folder_by_path(project_name, parent_folder_path,  fields={"id"})
folders = asset_entities = ayon_api.get_folders(project_name, parent_ids= {parent_folder["id"]}, fields={"name", "path"})
paths = [(folder["name"], folder["path"]) for folder in folders]
# paths.sort()

return paths

Things to Consider

Output paths are not dynamic by default. Therefore, you’d need to pay much attention to these paths. You may reuse the context options here as well.

Admittedly I’d say - this isn’t the way (for now). The whole concept of the mutli-shot workflow is that you can do this in a huge batch, without having to switch context, publish, switch context, publish. So having just many render instances (and hence ROPs) is the better approach for now. However, you an use the “Context Options” Parms on the ROPs to still use context options inside you graphs, etc.

The publisher UI gets unmanageable because you don’t know which instance is for which shot (which is why I have this custom code in my branch just to label them with the folder path as well).

So that you see:

renderLightingMain (/sq010/sh010)
renderLightingMain (/sq010/sh020)
renderLightingMain (/sq010/sh030)

Instead of:

renderLightingMain
renderLightingMain
renderLightingMain

A potential future thing to explore is to have on ROP automatically create ‘many instances’ in the publisher based on some enumerator of the “shots” it should evaluate it for, but that has some more implications on how the system is designed… so the easiest approach for now is - having a ROP per shot. Nothing is also keeping you of making some custom HDA with a button that generates the ROPs automatically in batches or whatever if you need.

1 Like

I agree, I just wanted to shed some light that this solution works. I imagine it as a template where AYON or a custom tool initialize the workfile from this template.