Volume


Volume file formats, such as OpenVDB, will allow storage of much larger datasets while being optimized for random access to volume data, which is more efficient for rendering. OpenVDB is an open source C++ library comprising a novel hierarchical data structure and a suite of tools for the efficient storage and manipulation of sparse volumetric data discretized on three-dimensional grids.

For information on working with Maya's volumetric fluids, click here.

A tutorial on how to write volumes to OpenVDB from Houdini can be found here.

Volumes can only receive indirect lighting from other emissive volumes when the Volume Ray Depth is above 0.

Arnold Volume. Type: OpenVDB.

Custom AOVs are not currently supported with volumes.

To reduce the amount of noise in a volume, you must ensure that the lights in your scene have enough 'volume samples'.

Filename

The location of the VDB file. 

Ensure that the IPR is not running when updating the file, otherwise the bounding box will not display at the correct size in the viewport.

Grids

A list of OpenVDB grids to read and make available as channels in the volume shading context. Examples of Grid names are density, fuel, heat, temperature or velocity.

Frame

Specifies the frame of the sequence to be rendered.

Keframe set for 'Frame' and hashtag used in 'Filename' when using VDB sequence

Padding

Enlarge the volume by Padding.  This is useful when displacing a volume with a noise for example. Note that this slack applies not only to the bounding box but also to the voxels used for ray extents inside the bounding box. When velocity motion blur is enabled, some extra padding is computed, based on the maximum value of the velocity field, and the maximum of the velocity padding and user padding is applied. When padding exceeds the bounding box maximum dimension, the ray extents acceleration makes little sense and is disabled, so you should set the padding as tightly as possible.

For best performance, this should be set as low as possible, while still covering the maximum the displacement amount.

The amount of padding to add to the volume bounds for displacement

Automatic Step Size

Sets the minimum voxel size defined in the VDB as the step size.

Step Size

Sets the size for sampling inside the volume. It should be small enough to capture the smallest feature in the volume (aka the Nyquist limit). If the size is too large, aliasing, bias or banding will appear. Smaller (and therefore more accurate) sizes will increase render times while larger sizes will render more quickly. 

More information about volume Step Size can be found here.

Step Scale

A scaling factor applied to the step size, mostly useful when the Volume Step is set to Automatic, to modulate the automatic value. For low frequency, smoke-like volumes, a value of 4 is a reasonable starting point.

Volume Padding

Enlarge the volume by Padding.  This is useful when displacing a volume with a noise for example. Note that this slack applies not only to the bounding box but also to the voxels used for ray extents inside the bounding box. When velocity motion blur is enabled, some extra padding is computed, based on the maximum value of the velocity field, and the maximum of the velocity padding and user padding is applied. When padding exceeds the bounding box maximum dimension, the ray extents acceleration makes little sense and is disabled, so you should set the padding as tightly as possible.

For best performance, this should be set as low as possible, while still covering the maximum the displacement amount.

The amount of padding to add to the volume bounds for displacement

Compress

Compress grids to reduce memory usage, enabled by default. This is a lossy compression, however in most cases renders will be almost the same. If there is a problem, however, this parameter can be used to disable lossy compression.

Velocity Grids

Either 1 vector grid (eg. v or vel) or 3 float grids (eg. vel.xvel.yvel.z) representing the velocity field, to be used for motion blur. No motion blur will occur if an invalid combination of grids or if no grids are specified. Note that all velocity grids declared here are also available as channels in the shading context.

Velocity Scale

A scale factor for the velocity field. A value of 0 disables motion blur.

Velocity FPS

A scale factor for the velocity field. A value of 0 disables motion blur.

Motion Start

The time at which the first motion key of the shape is sampled. Other motion keys must be uniformly spaced within this range. By convention, the times are frame relative. For example, start and end times -0.5 to 0.5 indicate that the motion keys were sampled midway between the previous and current frame, and the current frame and next frame. This is applied to cameras, lights, and shapes.

Motion End

The time at which the last motion key of the shape is sampled. Other motion keys must be uniformly spaced within this range. By convention, the times are frame relative. For example, start and end times -0.5 to 0.5 indicate that the motion keys were sampled midway between the previous and current frame, and the current frame and next frame. This is applied to cameras, lights, and shapes.

Velocity Threshold

Controls filtering of noisy velocities resulting in the faster rendering of motion blur from physics simulations. The default value 0.001 should have little to no visual impact. Setting it to zero disables filtering entirely. 

If you need to further edit the result of the reading of a channel, for instance to color correct it, there are the Volume Sample RGB and Volume Sample Float shaders.

Type

Volume implicit nodes can be used to load OpenVDB files for rendering volumes and implicit surfaces respectively.

Implicit type volume .vdb file

Solver

The uniform solver may be used for arbitrary fields. It works by taking small steps through the field to find the surface. This makes it relatively slow, but suitable for arbitrary fields generated by a procedural texture shader for example. When the field is a level set, for example from a level set grid in a VDB file, the levelset solver may be used instead for better performance and quality. Level sets guide the solver towards the surface, to converge quickly with few steps.

Threshold

The surface is defined where the field value equals the threshold. The surface is defined by the implicit equation: \[ field(x) = threshold \]

Samples

The number of samples used to find intersection points. Increase this value to avoid artifacts such as holes.

Field Channel

Volume channel used as the field to define the implicit surface.

Field

Shader to generate the scalar field used to define the implicit surface.

Reducing Noise

To reduce the amount of noise in a volume, you must ensure that any lights in your scene have sufficient 'volume samples', or alternatively that you have enough AA samples.

Volumes and Atmosphere Volume

Currently, 'Atmosphere Volume' does not compose well against volumes. This is because atmosphere's return a single flat result that is opacity mapped on top of whatever is in the background of the pixel.

Left: floor plane geometry hidden. Right: floor plane geometry visible. Fluid renders incorrectly. Click images above to view animation.

  • No labels