Assigning Look to Layout Items

Hey everyone.

I’m trying to figure out the best process for this, or if i’m missing something.

I’ve got a tree model that i’ve published as an .abc model. I also did the lookdev on that published model asset, and published a look for it. If i load the model + the look in a brand new scene, all works as it should. Shaders come in + assingments work perfectly.

I loaded a bunch of trees into a scene (as AIstandin representations) and scattered them around. I then published these assets as a layout. This works fine as well, i can load this layout into another scene and all the trees come in correctly.

My issue comes up when i try to assign my look to this layout of trees. The shaders never connect, or randomly connect it feels like, or the textures aren’t connecting. I’ve tried using .ass files instead of .abc, but that doesn’t work either. If i do a layout with referenced .abc models instead of standin models, this does work in the lighting scene, and the look picks up correctly.

If it makes any difference, I’ve got an asset structure for the tree models + shader publishes. I am loading them into a sequence + shot structure for layout + lighting. I was thinking it might have been a relative path texture issue, but i’m not getting any errors and the Arnold texture utility shows all the full paths to textures being used, including the trees that are showing up grey.

I’m stumped, but would rather not have to load a bunch of full res trees in the scene, even though i could just have their display flagged to bounding box.

thanks,
-AC

@gabor.marinov This sounds close to a workflow something you once described. Do you have any input from your perspective per chance?

Hi @adam.carroll, @BigRoy

Yes we use a similar workflow. We publish the models as Arnold Scene Sources (aiStandins) and Looks, put the aiStandins together in a Layout work scene and publish them as a Layout.

Then we load the published Layout into the shot work scene, and we assign the published Looks there. It works for us, we are on OpenPype 3.18.7.

The main problem with this workflow in OP 3.18.7 that the Layout publish really just exports a Maya scene which contains the aiStandin nodes. So if you publish a new aiStandin version the shot scene won’t warn you about the update, as OP doesn’t know about the loaded aiStandins in the shot, it only knows about a loaded Layout asset. You have to update the Layout work scene first, publish, then update shot work scene.

Other minor issue is, that aiStandin publisher in 3.18.7 always publishes sequences. Our workaround is that we set sequence start and end frames to the same with a script before publishing. There may be a fix for this in later versions with an alternate aiStandin publisher, I didn’t have time to check it.

The Look assignment is done with Arnold aiSetParameter operator nodes connected to the specific aiStandin node and material node, so it works even with baked aiStandin nodes.

If I remember correctly Layout publisher/loader worked differently in the past. It published a Position/Rotation/Scale for the aiStandins in a custom JSON file, and the Layout loader created aiStandin nodes on the fly (as the aiStandin loader does) and set their position/Rotation/Scale accordingly. Actually the Layout publisher still publishes the JSON file, but it isn’t used anymore. I guess there was a simplification at some point.

Hope this helps.

That sounds like exactly what i’m doing. Are you doing your lookdev on the Arnold Scene Source (aiStandin) asset? So that you’re applying the shaders via the procedural overrides on the aistandin? or are you doing it to the original geo models?

I’m on 3.18.8, so would have thought it’d work the same.

In our current project, we simplify the workflow by publishing both the Look and Arnold Scene Source from the same work file since shader variations are not required.

We load the Arnold Scene Source and assign the Look using the standard OpenPype look assigner tool.

Internally, this tool loads the shaders from the Look and creates aiSetParameter nodes that connect the shaders to the geometry nodes within the Arnold Scene Source (aiStandin) node.