|On this page|
The Volume SOP creates a volume primitive. A volume is a box divided up grid of smaller boxes, called voxels, each of which can store a number. The resulting primitive can be used to define a scalar field over a volume sampled at the grid centers.
The grid generated by the Volume SOP has constant value everywhere. It can be further manipulated on a voxel-by-voxel basis using the Volume VOP SOP or the Volume Mix SOP.
When mantra renders volumes it overrides rendering parameters according to the name of the volume. This name can be set in the Volume SOP (or later using the Name SOP). The name is also used for the default bindings to the Volume VOP SOP.
The Volume SOP can also generate sets of volumes. Selecting a rank of Vector will create three volumes suitable for a velocity field, a rank of Matrix will create nine volumes suitable for a strain tensor field.
If you connect geometry to the Volume SOP’s input, it will create a bounding box around the input geometry
Each volume primitive only holds a single number per voxel cell. If you want to use higher order volumes, such as vector fields or matrix fields, you can use multiple volume primitives. The Rank option lets you create multiple named volumes to match vector or matrix fields.
If not blank, the created volume primitive will have the name primitive attribute set to this value. Naming volumes allows mantra and the Volume VOP to override the correct parameters with the values of the volume. If the created volume is Vector or Matrix, .x or .xx will be appended to identify the subcomponents.
The created volume primitive will have the same value throughout the volume.
The size of the volume box. This will be adjusted slightly to ensure voxels are all equal size if uniform sampling is turned on.
The center of the volume box.
Allows you to override the tapering of the volume along the Z direction. This allows a volume that better fits a camera’s viewing area, so you can have a greater density of volumes closer to the camera.
One of the divisions of the voxel grid will be forced to one to create a two dimensional field.
If set to two dimensional, this plane determines which axes remain unaffected.
The camera whose frustum we will fit the volume to.
The distance from the camera to start the volume.
The distance from the camera to stop the volume.
Use Camera’s Window
If set, the camera’s window scale, offset, and crop parameters will be used in addition to the following Window X/Y settings.
The min/max portions of the camera’s view to fill with the volume. This allows you to add padding to ensure good boundary conditions or focus into a key area of the scene.
It is often advantageous to make sure voxels in a volume are cubes. This option allows the resolution of the volume to be specified without having to worry about matching the size and resolution fields. This parameter controls which axis is divided into Uniform Sampling Divisions.
Uniform Sampling Divs
The number of voxels to divide the Uniform Sampling axis into. The other axes will be divided into the number of cells that fit for this voxel size.
When using non-uniform voxel cells, each dimensions resolution can be specified here.
The uniform size of the voxels, when specifying the voxel size directly. The given sized box will be filled by voxels of this size.
Z Resolution Scale
The voxel resolution on the Z-axis is scaled by this number. This is useful for camera volumes where you may want less detail along the camera viewing direction. By setting the Uniform Sampling to X-Axis, you can then specify the number of voxels you want across the X axis of the screen directly, let the Y-axis be auto-computed to preserve aspect, and then adjust the scale factor.
The volume from camera respects the camera’s crop/window size options in addition to its own.
The behavior when the volume is sampled outside of its defined box.
The border value will be returned.
The volume will wrap, returning values from the opposite side of the volume.
The value at the edge of the volume closest to the sample will be returned.
The volume will be treated as a signed distance field. The distance from the sample point to the closest point on the volume will be added to the value at that closest point. This ensures the volume continues to approximate distances outside of its defined box.
When the border type is constant, this is the value returned for out of bounds sampling.
When tiles in the volume are compressed to constant tiles this will be the tolerance used to determine if the tile is constant. Zero will only allow lossless compression.
When compressing tiles by quantizing their values this is the tolerance to use. This can often be larger than the constant tile as some of the quality can be recovered by the dithering. Zero disables quantization.
When voxels are quantized to a lower bit depth some of the lost information can be recovered by adding noise to the pre-quantized voxels. This can be thought of as trading bit depth in the voxel with spatial resolution.
Dithering avoids banding in the resulting volume and, as volumes are often integrated for display, can keep the original weight of the volume.
Setting dithering to none will just do a pure thresholding operation. Dithering of ordered will use a constant dither matrix over each tile.
Use 16bit Float
While 32 bit floats are still used for computation, whenever they are stored in the volume they are reduced to 16 bit floats. This cuts memory consumption in half at the cost of slightly higher computation costs and reduced precision of the floats.
How this volume primitive will be displayed in the viewport. This does not affect the underlying volume at all, just its display-time appearance.
The volume is rendered as smoke. Values of 0 or less are fully transparent. If lights are present, they are self-shadowed with the volume.
The volume is rendered as transparent smoke. Values of 0 or less are fully transparent. Lights are ignored, reducing computation time. Instead, the smoke is colored a rainbow hue according to the position in the bounding box.
An isosurface of equal valued voxels is extracted from the volume and displayed. This Display Isocontour is used to determine which isosurface is extracted.
The contents of the volume are not rendered at all.
Controls the fall off rate for the smoke visualization. Lower values allows the smoke to be more transparent.
Which isocontour to extract from the volume. The default of 0 is good for SDF volumes. Fog style volumes would work better with something non-zero, such as 0.5.
If you connect geometry to this input, Volume will create a bounding box for the input geometry. (Otherwise, it uses the parameters to control the size and position of the box.)
This is not used when the From Camera source is applied.
The following examples include this node.
In this example, two smoke volumes are merged together using a Gas Embed Fluid DOP and some feathering to help provide a smoother transition between the volumes.
Here’s a simple example showing how you can deform a volume. First create a 3d grid of points with the box sop with divisions matching the resolution of the volume. Next, transfer the density from the volume on those points. Finally, the points can be deformed any way you want, and then you can create an empty volume and fill it with the densities from the points.
This example demonstrates how you can use the Fluid Source SOP to source and advect colours from an additional volume into a smoke simulation.
This example shows how to use the Volume Compress SOP to reduce the memory requirements of volumes without too adversely affecting their appearance.
This example shows how to use the Volume From Attrib SOP to transfer point attributes into volume voxels.
This example shows how to detect the overlapping regions of many incoming volumes procedurally using Volume SOP and Volume Merge SOP.
This example shows how to use the Volume Merge SOP to flatten multiple instanced volumes onto a single camera frustum volume.
This example shows how to use the Volume Reduce SOP to compute the barycenter of a 3d object.
This example shows how to use the Volume Resample SOP to increase and decrease the resolution of a volume. It also shows how the different sampling options affect the quality of the resulting volume.
This example shows how to use the Volume Surface SOP to surface an SDF using another volume to specify the triangle sizes.
This example shows how to use the Volume Surface SOP to surface a hierarchy of SDFs using explicit grading.
This example shows how to control the particle colours using the temperature attributes from a pyro simulation using a Ramp Parameter VOP node.