Hi there,
Hoping to tap into the brain trust here for an opinion/ recommendation.
I'm new to Arnold, and trying to decide what the best strategy might be for loading and inspecting reference geometry (either external, or internal but non-visible to any rays) within a procedural. The specific use case here is generating fur on a deforming skin, based on a reference rest skin (matching topology). The reference would be a polymesh (subdiv) and I would need to access faces, primUVs, and maybe some user-defined attributes.
So I was thinking my options would be:
In all cases there is the added issue of finding the limit surface at any given prim UV, but that's a separate issue.
I'd be grateful for any insights, in particular if the first two options are even possible in the context of an Arnold procedural (and save me some time exploring if they're not), or any other approaches people might have tried already.
Thanks in advance!
I don't know about doing it through the Arnold API. I'm asking around internally...
But I think you would have to do an interactive render session: then the geo info would be available. Otherwise, Arnold optimizes all that data and it's not accessible through the API any longer.
From the 5.1 release notes when this change was made (there used to be a "preserve_scene_data" flag, but it was removed when we introduced render session type)
AiBegin() has gained an argument specifying whether the session is for offline, batch rendering (AI_SESSION_BATCH) or for interactive/IPR rendering (AI_SESSION_INTERACTIVE). Arnold will perform certain optimizations during batch rendering because it expects nodes will not be modified after rendering, but which may leave the scene missing information. Interactive rendering will leave all information intact so that nodes may be edited as needed after rendering and re-rendered again. (#6234)I see. Hmm, yeah, that would explain some of the flakiness I'm seeing with some of the arrays of internal polymesh nodes (vidxs, etc). Huh, okay, I wonder if the optimization is still done to nodes when they are set to "disabled" -- will check that next. As a final thought on this, no, there's unfortunately no way I can guarantee (or force) an interactive session for my use case, so that wouldn't be an option I'm afraid.
Any thoughts on how much mileage I could get out of spawning an Arnold "alembic" shape within my procedural as a means to read the references? -- maybe they get optimized as well, haha -- was going to test that next.
Worst case I may go with the Houdini API for Alembics (GABC), but I'm learning a lot about the Arnold API doing this, so a big WIN either way.
Thanks again for all the help. Much appreciated!
Sie finden nicht, was Sie suchen? Fragen Sie die Community oder teilen Sie Ihr Wissen mit anderen.