Select an image to view the AOV name
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.
There are some limitations:
- Using closures as AOVs is not currently supported.
- A maximum of 16 different light AOVs is supported, although a given AOV can contain a bundle of any number of lights.
Video tutorials about using AOVs in MAXtoA can be found here.
- MAXtoA supports Cryptomatte AOV shaders.
- An introduction to AOVs for compositing tutorial can be found here.
- Multichannel EXRs are possible using All In One File (RGBA).
- Tutorials using AOVs can be found here.
- AOVs do not have any Exposure Control (tone mapping) applied to them. However, the beauty pass specified in the Common tab will, and this appears in the Rendered Frame Window. Unlike Render Elements, AOVs are saved by Arnold and do not show up in the window after rendering.
3ds Max does not support more recent EXR formats natively, and you may have issues using Arnold generated EXRs in your scenes. EXRs with only one layer should work.
AOVs are similar in concept to Render Elements, in that they separate out components of the rendered image as it is produced, and sends it either to a separate output file and/or as a channel in an EXR. Arnold supports output types and features not found in Render Elements.
Arnold provides the following 'built-in' system AOVs. These AOVs are always available, no matter what shader(s) you are using.
- A: Alpha.
- AA_inv_density: Visualizes the sample density with Adaptive Sampling. Use it with a Heatmap filter.
- ID: Random number value derived from the name of the shape. You can also add specific ID numbers via the user options string field for an object. ie 'id 1'.
- N: Smooth normal at the shading point (in world space).
- P: Position of the shading point (in world space).
- Pref: Reference position of the shading point.
- RGBA: Beauty AOV, containing the full rendered image.
- Z: Depth of the shading points as seen from the camera.
- albedo: Reflectivity, the surface or volume color without lighting or shadowing.
- background: Emission from the background and skydome lights visible to the camera.
- coat: Coat reflection.
- coat_albedo: Coat color without lighting or shadowing.
- coat_direct: Coat direct lighting.
- coat_indirect: Coat indirect lighting.
- cputime: This layer contains the CPU time (measured in “ticks”) to evaluate the samples in the pixel.
- diffuse: Diffuse reflection.
- diffuse_albedo: Diffuse color without lighting or shadowing.
- diffuse_direct: Diffuse direct lighting.
- diffuse_indirect: Diffuse indirect light.
- direct: Direct lighting from all surfaces and volumes.
- emission: Lights and emissive objects directly visible from the camera.
- indirect: Indirect light from all surfaces and volumes.
- motionvector: 2D vector representing the motion in screen space of the shading point during the given time interval. If output to an RGB format, the vector is contained in the R and G channels.
You must set an instantaneous shutter for the camera. The reason being is that we don't want motion blur in the render, but we still want the motion velocity information in our motion vector AOV. This can be found under Motion Blur-> Instantaneous Shutter.
- opacity: RGB AOV with full three-channel opacity (as opposed to single channel alpha).
- raycount: Total number of rays traced for samples in the pixel.
- shadow_matte: Shadows in the scene, computed as the ratio of occluded direct lighting over unoccluded direct lighting.
- sheen: Sheen weight.
- sheen_albedo: Sheen color without lighting or shadowing.
- sheen_direct: Sheen direct lighting.
- sheen_indirect: Sheen indirect lighting.
- specular: Specular reflection.
- specular_albedo: Specular color without lighting or shadowing.
- specular_direct: Diffuse direct lighting.
- specular_indirect: Diffuse indirect lighting.
- sss: Subsurface scattering and diffuse transmission.
- sss_albedo: SSS and diffuse transmission color without lighting or shadowing.
- sss_direct: SSS and diffuse transmission direct lighting.
- sss_indirect: SSS and diffuse transmission indirect lighting.
- transmission: Specular transmission (refraction).
- transmission_albedo: Specular transmission color without lighting or shadowing.
- transmission_direct: Specular transmission direct lighting.
- transmission_indirect: Specular transmission of indirect lighting.
- volume: Volume scattering.
- volume_z: The Z depth for the first volume contribution is output in a flat AOV.
- volume_albedo: Volume color without lighting or shadowing.
- volume direct: Volume scatter direct lighting.
- volume indirect: Volume scattering indirect lighting.
- volume opacity: RGB AOV with the full three-channel opacity for volumes only.
The other AOV groups correspond to the shader nodes being used (assuming those shader nodes support AOV). For example, Shadow Matte provides:
- shadow: Direct light shadow.
- shadow diff: A difference AOV which can be used to eliminate the shadow from the direct component.
- shadow mask: This AOV can be used in comp to localize and tweak the shadow.
Other shaders used in your scene will support various other AOVs. Multiple shaders can contribute to the same AOV (for example a Standard Surface and a Lambert shader both write to the diffuse_direct AOV).
Composing the Beauty AOV
The RGBA beauty AOV can be split into smaller AOVs where each contains part of the lighting. In compositing, these AOVs can then be individually modified and added together to get the full beauty AOV.
More AOVs give more control in compositing, but also extra work to handle, and they take up more memory and disk space, especially combined with light groups.
Some example sets of additive AOVs for the full beauty AOV are:
- direct, indirect, emission, background.
- diffuse, specular, coat, transmission, sss, volume, emission, background.
- diffuse_direct, diffuse_indirect, specular_direct, specular_indirect, coat, transmission, sss, volume, emission, background.
Simply adding together such AOVs is all that is needed for the beauty AOV. The albedo AOVs are not needed to reconstruct the beauty AOV but may be used for example to get just the lighting without the surface texture, by dividing diffuse by diffuse_albedo, or for denoising just the lighting while keeping the texture detail intact.
The Arbitrary Output Variables (AOV) window is available in the AOV tab in the Render Setup window. Here you can choose to Add AOVs using the AOV Wizard or manually using the AOV List. AOV light groups can also be managed using the AOV Light Group Manager window.
The main view shows an AOV list to add Drivers and AOVs (drag & drop). Roll over image to view AOV List.
The main view shows a wizard where you can Add Drivers and AOVs (also available in the + Add AOV File menu).
All In One File (RGBA)
Creates a default RGBA (beauty) AOV. Disabling this (on by default) enables you to add individual component AOVS.
Here you can choose to split direct and indirect AOVs.
Split direct/indirect AOVs (All in One File: disabled). Combined enabled. Roll over image to view Combined: disabled.
Add New AOV Output File
MAXtoA takes a file-centric approach. You start defining your AOVs by first specifying the file type (+ADD AOV File) that you want to produce and then the AOVs you want to save to that tile type.
+ ADD AOV File
- Select this button first to choose the AOV Output File.
- You can drag & drop AOVs that you want to use for your render from the AOV list on the left onto the main window on the right. You can also add more AOVs to the same group if you drag and drop on the existing AOV (see below).
Drag & drop AOVS from the AOV list into the main area where you can adjust the type, driver, and filter of the chosen AOVs.
The filename of the AOV. The name of the output files can be renamed here. Multiple AOVs can be dragged onto a single AOVs group. This can be useful for light groups where you might want a diffuse AOV in both a red and blue light group.
Here you can choose the file type (driver) format which you want to output from MAXtoA.
The type of data to be written in the AOV - rgba, float, vector, etc. Arnold will normally specify a default type for each AOV, so you don't have to explicitly set this.
Choose to denoise the active AOV using the Optix denoiser.
Same as File: (only available for AOVS) - The AOV will use the AOV Light Group setting defined at the file level. Same As File, All lights or default.
All lights: The AOV(s) will be rendered using all lights, regardless of AOV light group assignation.
Default: The AOV(s) will be rendered using the scene lights that are not assigned to a light group (or are assigned to the "default" light group).
Remove All AOV Files
Choose to remove all AOV files from the main pane.
Manage Light Groups
Opens the light group manager window.
Choose to load/save different AOV presets.
You can define custom AOVs in the scene via the Add Custom AOV button if you want to render a custom effect that is not available from the existing AOV list. This custom AOV can be used with any compositing software such as Nuke. You can write the output of a shader in a custom AOV via an aov_write shader.
A list of shaders can be defined that will be evaluated after the regular surface shader. With this, it's possible to add shaders to set specific AOVs without modifying the original shader tree. Shaders intended for this purpose should add a booleanmetadata named
aov_shader on the node itself, as a user-interface hint. If
options.background are set, these global AOV shaders will also be run for atmosphere and background contexts.
Tokens (select a token), Select Output Folder and Open Output Folder
Tokens are used to generate dynamic AOV output paths. You can use tokens to define both the folder structure and the output filenames. If the generated path does not end with a valid filename extension (EXR, png.), the default name and extension of the AOV file will be added automatically.
If the output expression does not end by a valid file extension, the expression is assumed to be a path. The current valid end of expressions (extensions) are (case insensitive):
.exr, .deepexr, .jpg, .jpeg, .tiff, .png and .<AOVsFileType>
If the expression resolves as a path, "/<AOVsFileName>.<AOVsFileType>" is added for a single frame, "/<AOVsFileName><Frame>.<AOVsFileType>" is added for a frame sequence.
Tokens are case insensitive.
<Frame> uses zero padding, 4 digits.
1. Output paths
- C:/Program Files/Autodesk/3ds Max 2021/renderoutput
2. Output files
- C:/Program Files/Autodesk/3ds Max 2021/<AOVsFileName>.<AOVsFileType> (current default - single frame)
- C:/Program Files/Autodesk/3ds Max 2021/<AOVsFileName><Frame>.<AOVsFileType> (current default - frame sequence)
- C:/Program Files/Autodesk/3ds Max 2021/<RenderFileName>_<AOVsFileName><Frame>.<AOVsFileType> (old aov interface behavior for a sequence)