AOV renders viewed in a compositing package
Multichannel EXRs are possible using Merge AOVs.
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, motion vectors.
To the right of the Arnold Renderer tab of the Render Settings dialog, you should see the AOVs tab. This is what the tab will look like initially:
The available AOVs for each group are shown in the central list. When you select one, it will move across to the 'Active AOVs' list, which is the set of AOVs you want to use for your render.
Above the AOV Browser, two drop downs are provided, 'Mode' and 'Renderview AOV':
An 'Introduction to AOV's' video can be found here.
This allows you to enable AOVs, disable them, or specify that AOVs are only to be used in batch renders.
This allows you to select an AOV channel to preview in the render view. Remember to switch back to 'RGBA' afterward.
Set to Maya by default, it allows you to use an external renderview like the experimental Houdini MPlay driver. To use mplay, you need to define a system environment variable called __HOUDINI_BINARY_FOLDER that points to the bin folder of your houdini installation.
Then, setup the mplay as the default driver and start a render, either from the renderview or from the external renderview experimental menu.
The middle section, AOV Browser, allows you to select the AOVs you want to be active for your render:
Either double click or select and use the arrow buttons to move AOVs from 'Available' to 'Active'.
Arnold provides the following system layers (which are presented as the <builtin> group on the dialog above):
- ID - Uses the name of the shape to compute a random number value. You can also add specific ID numbers via the user options string field for an object. ie 'id 1'.
- N - The normal at the shading point.
- P - The position (in world space coordinates) of the shading point.
- Pref - The reference points of the polymesh at the shading point.
- Z - This layer contains the depth information of the shading points.
- beauty - The RGB 'beauty' color layer.
- cputime - This layer contains the CPU time (measured in “ticks”) to evaluate the current subpixel. There is only a single cputime per camera ray and it is only written at depth zero.
- diffuse_albedo - The raw diffuse values without light/shadow contribution.
- mesh_light_beauty - The mesh light visibility.
- motionvector - A 2d vector representing the motion in screen space of the shading point during the given time interval (the shutter start and shutter end of the camera). If output to an RGB format, the vector is contained in the R and G channels.
- opacity - The accumulated opacity at each shading point.
- raycount - This layer contains the number of rays cast for the current subpixel. Like cputime, this layer is only written at depth zero. Rendering using the 'raycount' AOV shows the total number of rays that are created/traced to compute a certain pixel. It is possible to view the number of rays per pixel by opening the raycount AOV as an alpha channel in a post-processing package.
- shadow_matte: The unoccluded direct light minus the direct light. Used to 'catch' shadows from lighting within the scene.
These layers are always available, no matter what shader(s) you are using.
The other AOV groups correspond to the shader nodes being used (assuming those shader nodes support AOV). For example, AiStandard provides:
- indirect specular
- refraction opacity
- sss (sub-surface scattering)
Other shaders used in your scene will support various other AOVs. Where shaders support the same AOV, you will be able to write out into that AOV from multiple shaders.
Beneath the AOV browser the active AOVs you have selected for output are listed with more detail:
Each AOV is actually represented by three nodes - the AOV node itself, plus an associated driver node and filter node.
This dialog shows you the type, driver and filter of the chosen AOVs in drop down menus, and the check box to the left allows you to control which are active. If you click on the triangle at the far right a context menu is displayed which in addition to providing another way to remove or make an AOV active/inactive, also allows you to add an alternative output driver for each AOV (and to select the driver and filter).
Because the driver and filter nodes are separate to the AOV node, you can add multiple outputs for each AOV by adding extra driver nodes to that AOV node, for example allowing both exr and jpg to be written out by the same AOV. This extra flexibility in AOV output can be really useful in some situations (maybe you want to output your beauty pass in multiple formats or using different filters – or you might have a custom output driver that you want to output to at the same time as the normal render view).
Note that the driver drop-downs will show the driver which is currently the selected file output type in the Common tab of render settings in brackets, e.g., <exr> as in the above screenshot. So, you can choose a specific driver for each AOV, or if you choose the top one from each drop-down menu, shown in angle brackets, then you are choosing to use the current default output driver. So, in the above illustration where the driver is shown as <exr>, if you went to the common tab and altered the file output to be png, when you return to the AOV tab you'll see that all the drivers are now shown as <png>. If you don't want them to change to reflect the current default driver, select a driver name without angle brackets. Similarly, the filter selection is also shown with angle brackets if it is set to use the current default filter.
Each AOV has a node associated with it. You can use the attribute editor to examine these nodes in more detail.
A tutorial about using custom AOVs can be found here.
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:
- Enter a name for the per-light AOV in the 'AOV Light Group' of the light.
Add a custom AOV with a "
volume_" or "
RGBA_" prefix in the Render Settings AOV tab. For example, if the light group name is “red”, then the AOV name should be “
Default AOV Group
RGBA_default" is a beauty AOV that contains volumes if they are lit by lights not in any AOV light group, whereas "
volume_default" should have volume illumination from lights not in an AOV group.
Volume_default" + "
volume_red" + "
volume_blue" give the total volume pass, whereas "
RGBA_default" + "
RGBA_red" + "
RGBA_blue" give the total RGBA beauty pass.
The green light is not in an AOV group
Only volumes are currently supported for per-light AOVs. Lighting from surfaces and the atmosphere will appear in the default light AOV.
A maximum of 8 different light AOVs are supported, although a given AOV can contain a bundle of any number of lights.