You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Next »

Overview 

The ‘Geometry Attribute Node’ is used to specify various parameters for a given object, such as the lights to use to light the attached objects, visibility to ray traced rays, and various RenderMan related attributes. Geometry attribute nodes are created and assigned inside the Shader Assignment Panel; refer to The Assignement Panel.


 

Figure 3.11: An empty Geometry Attribute Node

When a geometry attribute node is first created, it contains no attributes at all. It is an empty container where one can add just the relevant attributes. This avoids cluttering the UI and allows attribute inheritance. Attributes can be added and removed by using the Add / Remove Attributes button. Left-Clickon this button brings up the Add / Remove Attributes Window, which is better suited for multiple attribute addition or removal (see The Add / Remove Attributes Window) Right-Clickon the Add / Remove Attributes button offers the same functionality through popup menus, which are more convenient when only one attribute or attribute group needs to be added or removed.

Scene Hierarchy Attribute Inheritance 

It is possible to attach an attribute node to a transform node; its attributes will be inherited by all its children nodes. Attributes closer to an object have higher precedence (an attribute node can prevent inheriting its parent’s attributes if needed). As an example:

--waterfront <-------- RayTraceVisibilityAttrs 

        |--rocks <-------- DisplacementAttrs

 |  |--rock1 
|  |--rock2
|  |--rock3
|
|--trees

|  |--tree1
|  |--tree2 <--- InvisibleInReflectionsAttrs

 

In this scene, there is an attribute node named "RayTraceVisibilityAttrs" that contains required attributes to make the objects visible to specular rays (like reflections) and transmission rays (shadow rays). It is attached to the "waterfront" node, so all objects under it will be visible in reflections and cast and receive raytraced shadows.

The rocks share a displacement shader, so the "DisplacementAttrs" attribute node is used to specify their displacement bound. It is connected to the "rocks" transform. Each rock object inherits the attributes from both "DisplacementAttrs" and "RayTraceVisibilityAttrs".

Finally, it appears that the "tree2" object does not need to be visible in reflections. To adjust this, it gets assigned a "InvisbleInReflectionsAttrs" attribute node, in which the specular rays visibility is set to "invisible". This overrides the specular rays visibility inherited from the "RayTraceVisibilityAttrs". The model will still be visible to transmission rays, as this attribute (also inherited from "RayTraceVisibilityAttrs") is not overridde.

 Custom Hierarchy Attribute Inheritance 

Sometimes the scene is structured in such a way that logical top-down attribute inheri- tance is not possible or complicated. For these particular cases one can create connections between attribute nodes, using the "alternate parent" plug, to define their hierarchical relationship. Attribute nodes connected this way have higher precedence than the scene parent’s attributes.

Here is a variation of the previous sample scene:

--BgdSet
    |--rocks <-------- DisplacementAttrs <-------+
    |    |--rock1                                |
    |    |--rock2                                |
    |    |--rock3                                |
    |                                            |
    |--trees <-------- RayTraceVisibilityAttrs --+
    |    |-tree1
    |    |-tree2
    |
    |-flowers
    |-grass
    |-waterSurface



  • No labels