Share

AOVs - Arnold for Houdini

AOVs (Arbitrary Output Variables) provide a way to render any arbitrary shading network component into different images. For example, an artist might find it convenient to separate direct and indirect lighting contributions and later recombine them during compositing. Arnold provides built-in AOVs for outputting depth, position, and motion vectors.

  • Light path expressions can be used to output light into specific AOVs.
  • HtoA supports Cryptomatte AOVs.
  • An introduction to AOVs for compositing tutorial can be found here.
  • It is possible to view AOVs while rendering in MPlay, Render View (right-click and enable the View Bar to see the AOV chooser), and Render Region (right-click and select the AOV from the Image Plane menu).
  • A tutorial about compositing AOVs can be found here.
  • Light path expressions can be used to output light into specific AOVs.
Note:

Enable AOV Composition is now always enabled and the option has been removed.

Note:

Only shaders with AOV-writing capabilities should be added to 'AOV Shaders' in AOVs. Note: AOV shaders such as Cryptomatte AOVs can also be added to 'AOV Shaders' in AOVs. Note: Only shaders with AOV-writing capabilities should be added to 'AOV Shaders' in AOVs.

A set of AOV shaders exists to allow easy reading and writing of AOVs from within a shader network.

AOVs

  • To add an AOV click on the + button.
  • To choose the type of AOV click on the down arrow to the right of AOV 1. You will see a list of available AOVs (with their associated LPE).

Layer Name

Output layer names can be customized in file formats that support layers (regular or deep EXR) by adding an optional custom layer name after the driver name in the options.outputs string. E.g.

 outputs 2 1 STRING
 "RGBA RGBA gaussian_filter driver_exr beauty"
 "RGBA RGBA variance_filter driver_exr beauty_variance" 

Output layers in files that support layers (such as regular or deep EXR files) can be individually set to type HALF by adding an optional HALF modifier to the corresponding output string. For instance: "my_aov RGB filter driver HALF".

Light Path Expressions

You can define custom Light Path Expressions to write lighting components into separate AOVs.

LPE menu with existing light groups

Separate File

Render the AOV in a separate file, as opposed to storing it in as an additional channel of the beauty image.

Image Format

Specifies the image format of the AOV if it is being rendered to a separate file. See the Image Format section for more information. By default, this will be the same as the beauty.

Type

The type of data to be written in the AOV - RGBA, float, vector, etc. At the moment Arnold for Houdini will not specify a default type for each AOV so you will have to explicitly set this. This will be updated in a future release. Refer to the list below for what type to use for each AOV.

  • Depth [z] - float
  • Point [P] - point
  • Nomal [N] - vector
  • Object Labels [ID] - rgb
  • Opacity - rgb
  • CPU Time - float
  • Ray Count - float
  • Shader Layers - rgb

Precision

Specify whether 16-bit floating-point (binary16) or full 32-bit precision is used. By default, this will be the same as the beauty.

Compression

Allows you to set multiple EXR compressions per AOV.

Pixel Filter

Specifies the pixel filter used on the AOV, see the [Pixel Filter

Filter Deep AOV

If set to false disables any filtering operation on this layer's raw data. Useful for normals or ID layers.

Deep AOV Tolerance

Tolerance over which the AOV samples will not be merged together.

Half Precision for Deep AOV

Use 16-bits float for this AOV filtering.

The Mix shader only works with AOVs of type RGB. If an AOV exists but is not specified on the AOVs tab, some limited mixing will occur, without a smooth transition: if the mix value is 0 or less, input1 will be output, else input2. Leaving an AOV name blank will disable mixing.

Per-light AOVs

Each light object has an 'AOV Light Group' attribute which can be used to write out the light contribution to a separate AOV with a corresponding name. To create a per-light AOV you must do the following:

  1. Enter a name for the per-light AOV in the 'AOV Light Group' of the light.
  1. Add a custom AOV in the Render Output. For example, if the light group name is "red", then the AOV name should be RGBA_red (if you want the red light contribution to the beauty). Or diffuse_red if you want just the red light contribution to the diffuse.

Was this information helpful?