Houdini 21.0 Nodes Copernicus nodes

Integrate Volume Copernicus node

Simple integration of a VDB along camera rays.

On this page
Since 21.0

Along each view ray, compute the line integral, transmittance (treating the input volume as an optical density), minimum, or maximum value.

This can be used to see how much of a volume is present under a pixel. For example, a temperature VDB could be integrated to determine how much heat distortion to apply.

Parameters

Signature

If you wire in a Float VDB input, the output will be Mono. If you wire in a Vector VDB input, the output will be RGB, accumulating each channel completely separately along the view ray.

Move to Origin

Move the output layer to the origin

Depth Conversion

Convert the inputs mindepth and maxdepth to distances from the camera from this kind of input. Distance

The inputs are already distances, so don’t modify them.

Depth

The inputs are depths (distances projected along the forward direction of the camera, like you could get from Rasterize Geometry).

Height

The inputs are heights (displacements from the imaging plane toward the camera position).

Operation

Integral

Integrate the input field along the view ray. This adds up the value in the VDB, sampled along the view ray.

Transmittance

Calculate the transmittance. This treats the input volume as optical density

Minimum

Find the minimum value along the view ray. If not hit, this will be infinity.

Maximum

Find the maximum value along the view ray. If not hit, this will be -infinity.

Density

Density Scale

Amount the density is scaled, after being linearly mapped and after applying the ramp.

Min, Max

The interval (minimum, maximum) gets linearly mapped to the interval (0,1). See the documentation for Rasterize Volume and Volume Visualization for more information on how this mapping works.

Ramp Mode

No Ramp: Don’t apply the map.

Clamped Ramp: When linearly remapping (minimum, maximum) to (0,1), clamp at the boundaries before applying the ramp.

Periodic Ramp: When linearly remapping (minimum, maximum) to (0,1), wrap around at the boundaries before applying the ramp.

Density Ramp

Map to apply to the density, after linearly remapping to (0,1).

Quality

Seed Jitter with Time

Makes the sample location jittering depend on time.

Sample Jitter Scale

Amount by which to jitter sample locations. When this is 0, sample locations are always at the centres of ray slices. When this is 1, sample locations can be drawn from anywhere along their respective ray slice. There will never be more than one sample drawn per ray slice.

Stratification Jitter Scale

Amount by which to jitter ray slice locations. When this is 0, the start of ray slice #0 coincides with the ray origin. When this is one, the start of ray slice #0 varies from backward and forward along the ray by half the step length. This is a single offset applied to each view ray, not per sample.

Integration Step Size

Length of ray slices. This is the expected distance between samples when samples are jittered.

Max Step Count

Used to prevent the OpenCL kernel from running forever or timing out. You shouldn’t need 4096 shouldn’t need to be changed unless rastering a very deep volume.

Transmittance Cutoff

This option is only enabled for the “integral” and “transmittance” operations. It specifies the transmittance of the accumulated portion of the ray after which to stop raymarching. This is an optimisation for the case where a very dense region of the volume is encountered: almost none of the light from behind this region will reach the camera so we can stop raymarching early to save time. Due to rounding error, it is possible for the accumulated transmittance to reach 0 despite this not being physically possible, and this will be seen when rasterizing very dense volumes. To completely disable this option you can thus set it to -1, and this may be necessary when calculating the integral of field that doesn’t represent an optical density.

Inputs

camera_ref

The camera, which provides a position and a projection from world space to image space, as well as an imaging plane. This is used to determine the view ray for each output pixel.

density

The density VDB to integrate. Can be either Float VDB or Vector VDB.

vieworigin, viewdir

Instead of using the camera_ref input, these inputs can be used to explicitly provide a ray origin and direction for each output pixel.

mindepth, maxdepth: The raymarch bounds.

Outputs

output

Either the integral, transmittance, minimum or maxmimum, depending on which operation was selected. Each output pixel corresponds to a ray.

See also

Copernicus nodes