Houdini 20.0 Nodes Geometry nodes

Volume Adjust Fog geometry node

Modifies values on the incoming Volume and VDB primitives.

On this page
Since 19

Overview

The Volume Adjust Fog SOP provides an interface to voxel attribute values, reducing the need to create VOP networks or write VEX code. It allows modification by a uniform value or a varying value for each voxel. The varying values can be generated fully randomly or sampled from a spatially-coherent noise pattern.

This node can also pre-process and post-process values, giving the user additional controls to final the primitive values as desired.

Parameters

General

Blend

Blends between the incoming volume and the adjusted volume values. A blend of 0 means that no adjustment takes place: the incoming volume values is the output value. Likewise, a value of 1 will output the adjusted value, ignoring the initial value. Blending can be done either by uniform value Constant or by value of the Blend Volume (when the menu on the right of this parameter is set to Use Volume).

Use Volume

Specifies the volume primitive to use as a mask to blend values between the incoming volume and the adjusted value.

Volume Name

The name of the volume primitive to modify.

Pre-Process

Enable Pre-Process

Enables a set of controls to fine tune the incoming values. All pre-process modifications will take place before adjustment is applied to the attribute.

Overwrite Initial Value

Sets the value for the primitive. Use to override values with a single float value or from another volume primitive.

Initial Value From

Set where the value is acquired from Constant Value

Volume

Complement Volume

Computes the complement of values in the volume and assigns them to the primitive.

Adjustment Value

Adjust Value

Generates a value that will be combined with the incoming volume.

Operation

Specifies how to combine the generated adjustment value with the incoming volume. If the target primitive does not exist on the input geometry, all operations will have the same effect.

Set Always

Use this operation if you want to overwrite any existing value with the generated adjustment value.

Add

The generated adjustment value will be added to the existing volume primitive.

Subtract

The generated adjustment value will be subtracted from the existing volume primitive.

Multiply

The existing volume primitive value will be multiplied by the generated adjustment value.

Minimum

Output will be minimum of the existing volume primitive value and the adjustment value.

Maximum

Output will be maximum of the existing volume primitive value and the adjustment value.

Pattern Type

Specifies how the adjustment value is generated. Constant Value will use the same Value for every voxel. Random and Noise will generate varying values across each voxel of the volume primitive, in which case varying values will be inside a well defined range or selected from a list of specific values. Additionally, you can provide another volume primitive to use as the adjustment value for every voxel.

Constant

The adjustment value will be the same for all voxels in the volume primitive. Use this to do simple math operations for all voxels. For example, to offset all voxel values.

Random

The adjustment values will be sampled fully randomly. Adjustment values can be inside a well defined range or selected from a list of specific values.

Noise

The adjustment values will be sampled based on a coherent noise field using the Volume Noise Fog SOP. Adjustment values can be inside a well defined range or selected from a list of specific values.

Fog Volume

Values of the volume primitive specified in Adjustment Volume will be used as the adjustment value.

Remap Volume

The adjustment values will be sampled based on the volume specified by Source Volume.

Line

Lets you click and drag across your viewport to add a gradient of values along the bound of the volume primitive.

Radial

Lets you click and drag across your geometry to add a gradient of values radially based on the drawn circle. You can also do this with Specific Values if you want clearly defined values with no blending.

Bounding Box

The adjustment values will be based on the relative location of each element within the input’s bounding box. This is useful if you don’t know the size of your volumes, as it places a bounding box around your whole object and modifies values within the box. For example, you can create a gradient from the lowest point to the highest point of an irregular shaped object, and even if the object rotates or transforms, it will still keep the same gradient within the bounding box.

Range Values

The adjustment value will be generated in the selected range. This parameter governs how this range is specified. You can also provide a list of specific values or multiple ranges by selecting Specific Values, which can be useful to create values representing specific trigger frames.

Positive

From 0 to the Amplitude value.

Negative

From negative Amplitude to 0 value.

Zero Centered

From negative Amplitude to positive Amplitude.

Min/Max

The range contains all values between Min Value and Max Value.

Min Value

Max Value

Custom Range

0

1

0 to 1

5

10

5 to 10

-5

7

-5 to 7

Min + Range Length

The range contains all values between Min Value and Min Value + Range Length. For instance, if Min Value is 2 and Range Length is 5, the minimum and maximum limits of the range will be 2 and 7, respectively.

Min Value

Range Length

Custom Range

0

1

0 to 1

5

10

5 to 15

-5

7

-5 to 2

Middle ± Range Length

The range contains all values between Middle Value - Range Length / 2 and Middle Value + Range Length / 2. For instance, if Middle Value is 8 and Range Length is 4, the minimum and maximum limits of the range will be 6 and 10, respectively.

Middle Value

Range Length

Custom Range

0

1

-0.5 to 0.5

5

10

0 to 10

-5

7

-8.5 to 1.5

Specific Values

The adjustment value will be one of the discrete listed values. The probability of selecting each value is proportional to its Weight. Pattern Type controls how the adjustment value is sampled for each voxel.

Step Size

Controls the spacing between the generated adjustment values.

Enable Remap Ramp

Turn this on to shape the adjustment values with a ramp.

Remap Ramp

When Enable Remap Ramp is on, this ramp lets you control the output adjustment values. The horizontal axis represents the range (minimum on the left, maximum on the right). The vertical axis represents the number to output when the noise function generates that point within the range.

The default ramp (diagonal from bottom-left to top-right) outputs each number “as itself”.

Adjustment Volume

Scale

Scales the adjustment value before it is combined with the incoming voxel values.

Offset

Offsets the adjustment value before it is combined with the incoming voxel value.

Random

Randomization By

Specifies how the pseudo-random number generator is seeded for each voxel to produce the adjustment value.

Seed

All generated values depend randomly on this value. Choose a different value if the current seed produces undesirable samples.

Noise Pattern

Noise type

The type of noise to generate. Different algorithms give noise with different characteristics.

Fast

The default. A faster and more interesting variant of Perlin noise.

Sparse Convolution

Sparse Convolution noise is similar to Worley noise. Does not have artifacts at grid points.

Alligator

Produces a bumpy output. Named for its alleged resemblance to alligator skin.

Perlin

A noise where the visual details are the same size. Wikipedia article

Perlin Flow

A noise that’s stable over time, like a rotated Perlin noise, useful to create noise that seems to swirl and flow smoothly across time. Use the Flow rotation parameter below to control the rotation.

Simplex

A noise similar to Perlin but the noise lattice is on a tetrahedral mesh rather than a grid. This can avoid the grid patterns often visible in Perlin noise.

Worley Cellular F1

Produces cellular features similar to plant cells, ocean waves, honeycombs, cratered landscapes, and so on. Wikipedia article

Worley Cellular F2-F1

A variant of Worley noise that produces blunted and cornered features.

Manhattan Cellular F1

A variant of Worley F1 noise that uses Manhattan distance calculation. Useful when you want unusual-looking noise.

Manhattan Cellular F2-F1

A variant of Worley F2-F1 noise that uses Manhattan distance calculation. Useful when you want unusual-looking noise.

Chebyshev Cellular F1

A variant of Worley F1 noise that uses Chebyshev distance calculation. Useful when you want unusual-looking noise.

Chebyshev Cellular F2-F1

A variant of Worley F2-F1 noise that uses Chebyshev distance calculation. Useful when you want unusual-looking noise.

Element Size

Uniform scale of elements in the noise.

Click the Per Component button for separate scales along each axis.

Element Scale

When you turn on the Per Component button, this lets you scale the Element Size separately across each axis.

Offset

Offset within the evaluated noise field (added to each axis). If you have the general noise effect you want, but want to get a different set of values for a different look, try changing the offset.

You can animate the noise using an expression such as $T * 0.25 here. This is faster to compute than Animate Noise, but gives the visual effect of “panning” across the noise field, which may or may not be acceptable.

Click the Per Component button for separate additional offsets along each axis.

Offset

When you turn on the Per Component button, this lets you add the a separate offset along each axis.

Use VEXpression

Turn this checkbox on to use a VEXpression to override parameters based on arbitrary attribute values.

Animation

Animate Noise

Vary the generated noise with time. Some noise types do not support this feature.

Applying animation this way on geometries with millions of element count is slower to compute than using expressions such as $T * 0.25 in the Offset parameter to “pan” across the noise field.

Pulse Duration

When Animated Noise is on, this controls the rate of change of the noise pattern.

Fractal

The fractal controls let you add additional fractal noise on top of the output of the basic noise type.

Fractal Type

None

Does not add any additional noise on top of the basic noise.

Standard

Adds pseudo-random noise on top of the basic output.

Terrain

Adds noise like “Standard” but dampens the noise in the valleys, which can be useful for generating mountainous terrain.

Hybrid

Like terrain, but with more sharpness in the valleys.

The following parameters are available when Fractal type is anything except None.

Max octaves

The number of iterations of distortion to add to the output of the basic noise. The more iterations you add, the more “detailed” the output. Note that the output may have fewer octaves than this parameter (that is, increasing the parameter will eventually stop adding detail), because the node eventually stops when there’s no more room to add more detail in the output.

Lacunarity

The frequency increment between iterations of fractal noise added to the basic output. Note that you can use a negative value.

Roughness

The scale increment between iterations of fractal noise added to the basic output. The higher the value the larger the “jaggies” added to the output. You can use a negative value for roughness.

Warping

Lattice Warp and Gradient Warp are two methods for adding “fractal-ness” to the basic noises by warping the noise space.

Lattice Warp

Adds “stringiness” or “wiriness” to standard noise.

Lattice Warp Size

Controls base feature size of the generated noise. The value applies to each axis.

Gradient Warp

Widens the peaks or valleys of the noise output.

Accumulate Lattice Warp

Accumulates the warp for each iteration (octave) of added fractal noise. This can add interesting smudgy effects when used in images, and interesting landmarks when used for terrain.

Accumulate Gradient Warp

Accumulates the warp for each iteration (octave) of added fractal noise.

Flow Rotation

When Noise type is “Flow”, this controls the rotation of the “swirl”, from 0 to 1. Because this parameter is fractional, you can’t just use $F to animate it, since all integral values will look the same, representing a complete revolution. Instead, try something like $FF / 100.

Distortion

Controls how much the noise is distorted in the direction of decreasing noise values if Distortion is greater than 1, and in the direction of increasing noise values if Distortion is less than 1. When worley details are added to the noise pattern, the effect of distortion are largely diminished.

Distortion with a value of 1:

Distortion with a value of -1:

Stretch

How much to stretch the noise in each direction. The advantage of using this instead of Element Size is that it preserves some details unstretched, making the stretched noise pattern more natural looking.

Comparing Element Scale of 3 (left) to Stretch value of 3 (right) along the X-axis:

Droop

Warps the generated noise such that the noise pattern is bending or hanging towards the given droop direction.

Noise pattern without (left) and with droop applied (right):

Droop Direction

The direction in which the noise is warped.

Post-Process

Enable Post-Process

Displays a set of controls to further fine tune the output value. All post-process modifications will take place after adjustment is applied to the volume primitive, unless set otherwise.

Scale

Scales the adjusted values in the primitive.

Add

Adds a constant value to the adjusted values in the primitive.

Minimum

If this checkbox is turned on, output values are clamped to the specified Minimum.

Maximum

If this checkbox is turned on, output values are clamped to the specified Maximum.

Complement Volume

Computes and assigns the complement of final values in the volume.

See also

Geometry nodes