Procedural Overrides

This tutorial shows how to use Parameter Overrides to override the shading of a polymesh within an Arnold Procedural.

The scene files for this tutorial can be downloaded here.

Export Geometry

First, we will write out the Robot mesh as an ASS procedural.

Shader Override

Next, we will load the procedural in a new scene and override the shaders of the Robot object.

Override Shaders of Polygon Selections

Note that the shader override above assigned to the polygon selections as well. The shaders in Arnold are stored in an array (as you can see in the ASS file). The first item is the shader assigned to polygons which do not belong to any polygon selections, and the other items are the shaders assigned to polygon selections. In the example above we have replaced the array to one shader.

In this example we override the polygons of the left and right hand, to do so, we have to define specific elements in the shader array.

Turn the Polymesh into a Volume

Any polymesh can be rendered as a volume in Arnold, we just have to set the step_size parameter of the polymesh to a non-zero value and assign a volume shader. Let's apply this to the Robot.

You can override any parameters of the polymesh (or any Arnold node) via expressions. Look at the Set Parameter operator page for more details about the assignment expression syntax. You can check the ASS file for available parameter names or run kick -info polymesh.

Override Shader Parameters

We can override any parameters of any Arnold nodes inside the procedural. For instance, we can change the Base Color and Specular Weight of the default shader of the Robot object.

You can check the .ass file for available parameter names or run kick -info standard_surface.

Override Displacement

We can easily override the displacement shader and any displacement parameters of the Robot object.

Override Subdivision

In this example we override the subdivision settings and disable the Catmull-Clark subdivision of the Robot object.

Set Parameter Operator

The parameter overrides on the Arnold Procedural object are just wrappers around the set_parameter operator. The same result can be achieved using the operator directly. For instance, overriding the shader of the Robot object.