The PrmanObjectStatements is assigned to a specific location or group of locations and translates into prman as setting the state for an AttributeBegin/AttributeEnd block. This node allows you to do things like assign a subdivision approximation to objects to render smooth surfaces, apply a displacement bound for rendering displacements, and changing visibility flags and memberships.

 

In RenderMan, there are different ways to choose how your object and its instances will render. These are conveniently divided in the node. An explanation is below along with links to the relevant settings.

The Attributes Section allows for variation among instances.

The primAttributes are obeyed for all instances.

The Primvars Section contains a control for rendering points.


About scene processing:

Each thread has it's own Geolib runtime containing per-thread caches of cooked locations. As a result all locations needed for any op would to be cooked per-thread. E.g if you have three threads, each looking at different locations under "/root/world/geo", you'll see "/root" cooked three times, "/root/world" cooked three times and "/root/world/geo" cooked three times.

If you are running serial, or forcing the parallel traversal to one thread then you'll only have one Geolib runtime cooking location and so would see only a single print from that Op at "/root"

In part this is the reason we have provided the object setting "prmanStatements.traversal.forceSerial". When you set that attribute 'true' on a location then the traversal will switch to serial at that location and all child locations will be run in a single thread.

For example, take a scene:

/root/world/geo/pine_tree
/root/world/geo/elm_tree
/root/world/geo/oak_tree

with each tree location containing leaves, roots, branches etc.

Ideally you traverse this in parallel at a high-enough level that it's not trying to do every leaf or every branch on a different thread. Setting "forceSerial" to true on "/root/world/geo/*_tree" means that each tree will be on a different thread, but all the contents of each tree will be serially processed in their respective threads. You'll need to evaluate your scene setup to see at what level it makes sense to force serial processing. We have typically found the default to be good enough, but unforeseen scene configurations may benefit from serial processing and so the option exists.