question

Andrew Wilkins avatar image
Andrew Wilkins asked ·

HtoA - Procs frequently disappear in render view

Hi,

While doing some render testing (with Arnold Proc rock assets and Operators) in HtoA — I've noticed that the "Arnold Procedural" are frequently disappearing (likely unloading from the cache) in the Render View which a "Render - Regenerate shadow maps and render" doesn't solve.


The only thing that fixes it is re-opening the Render View, which is highly frustrating to do this constantly.

Is this a known issue?



All the best,

Andrew


Houdini: 18.5.596
HtoA: 5.6.3.0
Arnold:
6.2.1.1

htoaproceduralsrenderview
10 |600 characters needed characters left characters exceeded

Up to 5 attachments (including images) can be used with a maximum of 2.0 MiB each and 9.8 MiB total.

Stephen Blair avatar image
Stephen Blair answered ·

What are the operators doing to the procedural, and what kind of procedural (alembic? ass? packed?)


10 |600 characters needed characters left characters exceeded

Up to 5 attachments (including images) can be used with a maximum of 2.0 MiB each and 9.8 MiB total.

Andrew Wilkins avatar image
Andrew Wilkins answered ·

Hi,

  • Procedurals reading an ASS file
  • Operators mainly Set Parameter

Sometimes you're adding assets one-by-one to a Collection and render testing, and then multiple / all the assets would disappear. Only re-opening the render view seemed to correctly refresh the cache.


I suspect this is could be relating to my other post:

https://answers.arnoldrenderer.com/questions/34365/htoa-chaining-set-parameter.html?childToView=34452#answer-34452

eg. where you're disabling primary visibility on assets which you're adding to a collection one-by-one, it works until you hit a certain asset (likely the asset which is being hit by a ray first and loading in the ASS file?) which then decides to apply to all the procs. Due to "auto-instancing".


side-note:

Would be cool if there was a way to have a Set Parameter or a toggle on it that doesn't just modify the ASS contents at render time—which doesn't seem to play well with auto-instancing.
ie. it just modifies the actual parameter in the scene. Cause then I would assume it would work with auto-instancing (ie. like you would change the parameters manually and that works with auto-instancing)


Andrew


1 comment
10 |600 characters needed characters left characters exceeded

Up to 5 attachments (including images) can be used with a maximum of 2.0 MiB each and 9.8 MiB total.

Sounds like an issue with the IPR updates in HtoA.

In the case where all the procedurals load the same ass file...

  • As you set primary visibility one-by-one, you're setting it on specific instances, so it shouldn't hide them all
  • The cached, original object is the first one that is loaded

Procedurals are loaded before any rays are cast, during scene initialization.

Set parameter modifies the Arnold nodes and parameters in RAM.


0 Likes 0 ·
Andrew Wilkins avatar image
Andrew Wilkins answered ·

Is it reproduce-able on your side?
Thanks yeah, the behavior you mentioned it what I'm expecting


Here's an example of disabling prim vis on one asset. Works until I re-enable auto-instancing.


  • Proc rocks, same ASS file.
  • Set_Rock_A_Proc_11 is in the fore-ground

Everything is working as I've intended but "auto-instancing" is disabled on that FG rock.

scene-01.jpg


Turn on "auto-instancing" the rock disappears
(As I assume everything is now being "prim vis disabled" but I haven't done this with the operators)

scene-02.jpg


Collections & Set Parameter nodes

scene-03.jpg


I've had the same thing happen with "Set Parameter - Matte" & "Disable Operator" nodes.
Sometimes they apply to everything and sometimes they don't.


This issue is making it quite difficult to build a stable lighting workflow, as common lighting practices such as: render pass specific "matte, phantom and pruning" for example, are behaving very unpredictably.


Andrew


scene-01.jpg (344.5 KiB)
scene-02.jpg (246.1 KiB)
scene-03.jpg (341.6 KiB)
20 comments
10 |600 characters needed characters left characters exceeded

Up to 5 attachments (including images) can be used with a maximum of 2.0 MiB each and 9.8 MiB total.

Nope, I haven't had any problems yet. I set up a scene using the same names for the procedural nodes and the same collections.

Note that your collections are also grabbing the objects loaded by the procedural node. It's enough just to hide the procedural node, so you could do something like this:
*.(@node=='procedural') and #set and not #fg_rock



0 Likes 0 ·
Andrew Wilkins avatar image Andrew Wilkins Stephen Blair ♦♦ ·

Interesting!
Yeah I've tried a lot of options, haha

"objects loaded by the procedural node"

Which objects are those? The nodes within "arnold_procedural_viewport1"?
Or the name of the "rock_asset_v001.ass" ?



Ok so using:

*.(@node=='procedural') and #set and not #fg_rock

With "auto-instancing" re-enabled on all the procedural nodes


Working a lot better! The fore-ground rock is visible while the rest are correctly prim vis disabled.

But somehow the ground geometry has decided to re-appear...

scene-02.jpg


scene-01.jpg


Excuse the change in lighting ;)

0 Likes 0 ·
scene-02.jpg (279.9 KiB)
scene-01.jpg (344.5 KiB)

"objects loaded by the procedural node"

Which objects are those? The nodes within "arnold_procedural_viewport1"?
Or the name of the "rock_asset_v001.ass" ?

The objects in the ass file.

0 Likes 0 ·
Show more comments
Show more comments
Stephen Blair avatar image
Stephen Blair answered ·

For the original issue: objects disappearing and auto-instancing

That's because the collection selection was getting the polymesh shapes and the procedural node that loads those shapes. So with auto-instancing, we were instancing hidden shapes.

The solution is to either do something with *.(@node=='procedural'), or add "/procedural" to the #fg_rock selection string (eg *Set_Rock_A_Proc_1[346]/procedural instead of *Set_Rock_A_Proc_1[346]* )

10 |600 characters needed characters left characters exceeded

Up to 5 attachments (including images) can be used with a maximum of 2.0 MiB each and 9.8 MiB total.

Andrew Wilkins avatar image
Andrew Wilkins answered ·

Hi again,

Here's an example scene:

fg_pass_example_scene.zip
(probably similar to what you were testing with)

Houdini FX Version 18.5.596 - Python 3
HtoA 5.6.3.0
Arnold 6.2.1.1


One of the included options, as we've discussed is:

*.(@node=='procedural') and *Set_*
#set
*Set_RockA_11/procedural
#fg_rock

The result is that: "Set_Ground" geometry as part of the #set collection renders visible to camera when it shouldn't... but the rest works.

We'd have to find a way to also "phantom" the ground geo.


I'll keep testing with this scene.
My goal is to have a stable setup for render pass "overrides" / pruning etc. (that works every time without pain) and that's also manageable for artists.


EDIT:

It seems that if I make a new collection for the ground (geometry) after the fact and "phantom" that again, that it's giving me what I'm after. Although feels like a "work-around".

*Set_Ground*
#ground

node-graph.jpg

fg-rock-01.jpg


Anyway to grab all the geometry?
I tried:

*.(@node=='polymesh')
*.(@node=='geometry')
*.(@type=='shape')
*Set_*
#ground

None of these work though...


fg-rock-01.jpg (22.1 KiB)
node-graph.jpg (60.4 KiB)
5 comments
10 |600 characters needed characters left characters exceeded

Up to 5 attachments (including images) can be used with a maximum of 2.0 MiB each and 9.8 MiB total.

*Set_*/procedural or *Set_*/polygons

or

r'.*Set_.*/(procedural|polygons)'


0 Likes 0 ·
Andrew Wilkins avatar image Andrew Wilkins Stephen Blair ♦♦ ·

Hi,

Thanks very much, still tinkering...

While using:

*Set_*/polygons

Is working in the example scene for the FG pass—so that's a good thing, but it's giving me crap in my actual prototype scene even though the setup is matching 1:1 but I'm trying to figure that out.


Unfortunately using:

*.(@node=='procedural') and *Set_*

As the main #set collection, doesn't work for other render passes to do simple things like "matte the whole set" that requires a new #set collection

*Set_*/procedural or *Set_*/polygons
 
or simply back to... 

*Set_*

fg_pass_example_scene.zip

0 Likes 0 ·

It's all due to the complication of hiding auto-instancing procedurals but not hiding the shapes that those procedurals add to the scene.

*Set_RockA_07* or *Set_RockA_05* or *Set_RockA_06* or *Set_RockA_08* or *Set_RockA_09* or *Set_RockA_04*
*Set_RockA_0[756894]*
*Set_RockA_07* or *Set_RockA_05* or *Set_RockA_06* or *Set_RockA_08* or *Set_RockA_09* or *Set_RockA_04* or *Set_RockA_03* or *Set_RockA_02*

selections like this may or may not work, depending on which procedural goes into in the procedural cache



0 Likes 0 ·
Show more comments
Show more comments

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 5 attachments (including images) can be used with a maximum of 2.0 MiB each and 9.8 MiB total.

Welcome to the Arnold Answers community.

This is the place for Arnold renderer users everywhere to ask and answer rendering questions, and share knowledge about using Arnold, Arnold plugins, workflows and developing tools with Arnold.

If you are a new user to Arnold Answers, please first check out our FAQ and User Guide for more information.

When posting questions, please be sure to select the appropriate Space for your Arnold plugin and include the plugin version you are using.

Please include images, scene and log files whenever possible as this helps the community answer your questions.

Instructions for generating full verbosity log files are available for MtoA, MaxtoA, C4DtoA, HtoA, KtoA, and Kick.

If you are looking for Arnold Documentation and Support please visit the Arnold Support site.

To try Arnold please visit the Arnold Trial page.

Bottom No panel present for this section.