Community
Arnold General Rendering Forum
abbrechen
Suchergebnisse werden angezeigt für 
Anzeigen  nur  | Stattdessen suchen nach 
Meintest du: 

Recommended Approach for Loading/Inspecting Reference Geometry?

2 ANTWORTEN 2
Antworten
Nachricht 1 von 3
mmarengoKAM7M
288 Aufrufe, 2 Antworten

Recommended Approach for Loading/Inspecting Reference Geometry?

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:

  • Internally Accessible Shape Node
    Assuming that full introspection of any shape node within the current universe is available to one or more of the procedural's entry points (preferably ProceduralInit()), then this would be the simplest approach I think. I see a way to get node iterators in AtUniverse so this looks promising, but not sure if faces/vertices/user-attribs are still accessible at this point (about to test this).
  • External Alembic Cache, Using Arnold
    If fetching from an external file, and given that the studio uses Alembic for the caching format, I wonder if the simplest way forward with this approach would be to instantiate an "Arnold Alembic" node from within the procedural, trigger the read (for each time slice), then inspect that node's loaded geo arrays -- don't know if that's at all possible or just crazy talk?
  • External Alembic Cache, Using External APIs
    If triggering an Alembic read from within the Arnold API is not possible, then I could look into using either the Houdini API (HtoA is already tightly coupled with a specific Houdini version anyway), or the Alembic API directly (by far my least favourite alternative, lol).

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!

Beschriftungen (5)
2 ANTWORTEN 2
Nachricht 2 von 3
Stephen.Blair
als Antwort auf: mmarengoKAM7M

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)

  • 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)





// Stephen Blair
// Arnold Renderer Support
Nachricht 3 von 3
mmarengoKAM7M
als Antwort auf: mmarengoKAM7M

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.

In Foren veröffentlichen  

Autodesk Design & Make Report