Houdini 20.5 Nodes Geometry nodes

Attribute Adjust Vector geometry node

Modifies values for a vector-type attribute on the incoming geometry.

Since 18.5

The Attribute Adjust Vector SOP provides an interface to vary vector type attribute values, reducing the need to create VOP networks or write VEX code. It allows modification to the direction, length or both of these components by a uniform value or a varying value for each element. The varying values can be generated fully randomly or sampled from a spatially-coherent noise pattern.

This node can also initialize a vector value if the attribute does not exists (specified by Attribute Name). Additionally, this node can post-process the values, for example by blending them with another attribute or limiting them to the specified length.

The following graph provides a basic schematic view of the processes behind Attribute Adjust Float.

Parameters

General

Group

The subset of the input geometry to apply the modifications to. Leave this blank to affect all elements.

Attribute Name

The name of the attribute to create or modify. If the attribute does not exist with the given name, it will be added to the selected Attribute Class. As this node can be used on vector type attributes, if you just give it the vector attribute itself, it will adjust the vector’s length, which is a scalar quantity. But you can also use this node to adjust a single component of the vector, which is also a scalar. To identify which vector component, you can either use the square bracket indexing or dotted subscripts.

When adjusting the vector type v attribute you can access the components as follows:

First Component

Second Component

Third Component

Fourth Component

v[0]

v[1]

v[2]

v[3]

v.x

v.y

v.z

v.w

v.r

v.g

v.b

v.a

v.u

v.v

Attribute Class

Element type for the destination attribute (specified by Attribute Name).

Component Scope

Specifies which vector components will be changed by this node. This filter applies as the last step, when the adjustment value is combined with the incoming attribute.

Pre-Process

Enable Pre-Process

Enables a set of controls to fine tune the incoming attribute value. All pre-process modifications will take place before adjustment is applied to the attribute. Pre-Process also allows you to initialize the attribute if it does not exists.

Overwrite Initial Value

Sets the value for the attribute. Use it to initialize a new attribute or to overwrite any existing attribute value.

Initial Value From

Controls how the initial value will be generated. Constant Value will be the same for all elements in the geometry. Normal Attribute will auto-compute the normals from the geometry, while vector attribute will copy the given attribute’s values into the destination attribute.

Initial Vector

This value will be set for all elements in the geometry.

Vector Attribute

The values of this attribute will be copied into the destination attribute (specified by Attribute Name).

Reverse Direction

Reverses the direction of vector while keeping the vector length the same.

Make Vectors Unit Length

Normalizes the vector, setting its length to 1 while keeping the direction unchanged.

Length Scale

Scales the length of the vector while keeping the vector direction the same.

Adjustment Value

Adjust Value

Generates a value that will be combined with the incoming attribute value. When this option is turned off, only post-processing will be done.

Adjustment for

Vectors have both length and direction. This allows you to select which of these vector properties to adjust.

Note

If the incoming vector is zero-valued, both Direction Only and Length Only will leave it at zero.

Direction & Length

Modifies the vector as a whole. This is the only mode that can adjust zero-valued vectors.

Direction Only

Modifies the vector’s direction, keeping its length unchanged. For example, this mode will change the direction of motion without affecting the speed, when working with a velocity attribute.

Length Only

Modifies the vector’s length, keeping its direction the same. For example, this mode will change the speed without affecting the direction of motion, when working with a velocity attribute.

Operation

Specifies how to combine the generated adjustment value with the incoming attribute. If the attribute does not exist on the input (and the pre-processing has not set an initial value) all operations will act as Set Always when Adjustment for is set to Direction & Length. If Adjustment for is set to one of the other options in the same situation, result will be the zero vector.

Set Initial

Use this operation if you want to ensure the attribute is created, but don’t want to overwrite any existing value. If the target attribute is already present, its values will be left untouched. This operation is only available when Adjustment for is set to Direction & Length.

Set Always

Use this operation if you want to overwrite any existing value with the generated adjustment value. This operation is only available when Adjustment for is set to Direction & Length.

Set

Use this operation if you want to overwrite any existing value with the generated adjustment value. This operation is only available when Adjustment for is set to Length Only.

Add

The generated adjustment value will be added to the existing attribute value.

Subtract

The generated adjustment value will be subtracted from the existing attribute value.

Multiply

The existing attribute value will be multiplied by the generated adjustment value. This operation is not available when Adjustment for is set to Direction Only.

Minimum

Output will be minimum of the existing attribute value and the adjustment value. This operation is not available when Adjustment for is set to Direction Only.

Maximum

Output will be maximum of the existing attribute value and the adjustment value. This operation is not available when Adjustment for is set to Direction Only.

Rotate

The generated adjustment value will be used to rotate the existing attribute value around a given axis. This operation is only available when Adjustment for is set to Direction Only.

Spread

The generated adjustment value controls the angle between the output vector and the existing attribute value. In other words, the output vector will be on the cone around the existing attribute value, with adjustment value controlling the size of the opening for this cone. This operation is only available when Adjustment for is set to Direction Only.

Interpolate

The generated adjustment value will be used to spherically interpolate the direction between the existing attribute value and a given goal direction. This operation is only available when Adjustment for is set to Direction Only.

Adjust With

Specifies how the adjustment value is generated. Constant Value will use the same Value for every element. Random and Noise will generate varying values across each element of the geometry, in which case varying values will be inside a well defined range or selected from a list of specific values.

The meaning of the adjustment value depends on other parameters, namely Adjustment for and Operation. When Adjustment for is set to Length & Direction, the adjustment value will be a vector that is combined with the existing attribute. If adjusting for Length Only, the adjustment value will be a single number that is combined with the incoming vector length. When adjusting Direction Only, the adjustment value is a vector if the Operation is set to Add or Subtract; otherwise, it is a single number. With Rotate and Spread, this single number represents the angle that’s used for the respective operation. Lastly, the adjustment value holds an interpolation bias that controls the blending weights between the Goal Direction and the incoming direction when Interpolate is used.

Constant

The adjustment value will be the same for all elements in the geometry. This option is useful for applying the exact same operation to all elements, such as rotating all vectors by the same amount about an axis.

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 Attribute Noise SOP. Adjustment values can be inside a well defined range or selected from a list of specific values.

Attribute

Value of the attribute specified by Attribute Name will be used as the adjustment value. This option is only available when Adjustment for is set to Length Only.

Range Values

The adjustment value will be generated in the selected range. This parameter controls how this range is specified. You can also provide a list of exact values by selecting Specific Values.

Positive

Every component of the adjustment value will fall between 0 and Amplitude. This option is available when the adjustment value is a vector.

Zero Centered

Every component of the adjustment value will fall between negative half of Amplitude and its positive counterpart. For example, if Amplitude is 2, component values will be between -1 and 1. This option is available when the adjustment value is a vector.

Min/Max

The adjustment value will fall between the specified minimum and maximum values. If the adjustment value is a vector, range limits apply to each component.

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 element.

Min + Range Length

The range contains all values between Min Value and Min Value + Range Length. For example, if Min Value is 2 and Range Length is 5, the minimum and maximum limits of the range will be 2 and 7, respectively. This option is only available when Adjustment for is set to Length Only.

Middle ± Range Length

The range contains all values between Middle Value - Range Length / 2 and Middle Value + Range Length / 2. For example, if Middle Value is 8 and Range Length is 4, the minimum and maximum limits of the range will be 6 and 10, respectively. This option is only available when Adjustment for is set to Length Only.

Constant Value

Sets the adjustment to this value for every element in the geometry.

Rotate Angle

Sets the adjustment to this value for every element in the geometry.

This parameter replaces Constant Value when Operation is set to Rotate.

Spread Angle

Sets the adjustment to this value for every element in the geometry.

This parameter replaces Constant Value when Operation is set to Spread.

Bias

Sets the adjustment to this value for every element in the geometry.

This parameter replaces Constant Value when Operation is set to Interpolate.

Amplitude

When using Positive Values, the generated 0 to 1 vector will be multiplied by this amplitude. With Zero Centered Values, the vector will be shifted to a new -0.5 to 0.5 range before it is multiplied by this amplitude value.

Click the button to access per axis control.

Amplitude Scale

The amplitude along each axis is governed by the multiplication of Amplitude with the applicable component of this parameter.

Min Value

Sets the minimum limit of the range.

When the adjustment value is a vector, you can click the button to access per axis control.

Min Value Scale

The minimum range along each axis is governed by the multiplication of Min Value with the applicable component of this parameter. This is only available when the adjustment value is a vector.

Max Value

Sets the maximum limit of the range.

When the adjustment value is a vector, you can click the button to access per axis control.

Max Value Scale

The maximum range along each axis is governed by the multiplication of Max Value with the applicable component of this parameter. This is only available when the adjustment value is a vector.

Rotate Angle Min

Sets the minimum limit of the range.

This parameter replaces Min Value when Operation is set to Rotate.

Rotate Angle Max

Sets the maximum limit of the range.

This parameter replaces Max Value when Operation is set to Rotate.

Spread Angle Min

Sets the minimum limit of the range.

This parameter replaces Min Value when Operation is set to Spread.

Spread Angle Max

Sets the maximum limit of the range.

This parameter replaces Max Value when Operation is set to Spread.

Bias Min

Sets the minimum limit of the range.

This parameter replaces Min Value when Operation is set to Interpolate.

Bias Max

Sets the maximum limit of the range.

This parameter replaces Max Value when Operation is set to Interpolate.

Number of Values

Controls the number of sets of possible adjustment values. The probability of selecting each value is proportional to its Weight. This parameter is applicable when Range Values is set to Specific Values.

If the adjustment value is a vector, each set corresponds to a single vector value. Otherwise, each set can be a single value or a list of numbers.

Value

Sets an exact adjustment value.

This parameter is replaced by Rotate Angle, Spread Angle, and Bias when Adjustment for is set to Direction Only and Operation is Rotate, Spread, or Interpolate, respectively.

Rotate Angle

Sets an exact adjustment value. This parameter is available when Adjustment for is set to Direction Only and Operation is Rotate.

Spread Angle

Sets an exact adjustment value. This parameter is available when Adjustment for is set to Direction Only and Operation is Spread.

Bias

Sets an exact adjustment value. This parameter is available when Adjustment for is set to Direction Only and Operation is Interpolate.

Value Type

In Constant mode, the set will only contain the single value. In List of Values mode, the set consists of multiple values, as declared by the subsequent list parameter. These options are unavailable when the adjustment value is a vector.

Weight

Samples the given adjustment value with the specified weight. Values with lower Weight will be selected less frequently. Each adjustment value has the same probability when all weights are the same.

Value List

Sets adjustment values by a list of independent range sequences or numbers. The listings can be separated by whitespace, commas, and semi-colons. Use the syntax min-max:stepsize, which expands to values between min and max, separated by stepsize. When stepsize is not provided, the default value of 1 is used.

This parameter is only available when the adjustment value is not a vector. When Adjustment for is set to Direction Only and Operation is Rotate, Spread, or Interpolate, this parameter is replaced by Rotate Angle List, Spread Angle List, or Bias List, respectively.

Note

Each expanded values will be assigned the same Weight.

Value List

Expanded Values

5

5.0

3;5 7

3.0, 5.0, 7.0

1-3

1.0, 2.0, 3.0

0-1:0.25

0.0, 0.25, 0.5, 0.75, 1.0

0-1:0.25 5; 8-12:2

0.0, 0.25, 0.5, 0.75, 1.0, 5.0, 8.0, 10.0, 12.0

Rotate Angle List

Sets adjustment values by a list of independent range sequences or numbers. This parameter replaces Value List when Operation is set to Rotate; see the description of Value List for more information.

Spread Angle List

Sets adjustment values by a list of independent range sequences or numbers. This parameter replaces Value List when Operation is set to Spread; see the description of Value List for more information.

Bias List

Sets adjustment values by a list of independent range sequences or numbers. This parameter replaces Value List when Operation is set to Interpolate; see the description of Value List for more information.

Axis of Rotation

The incoming vector will be rotated about this axis. When Constant Value is used for this parameter, all elements in the geometry will rotate around the same axis. Set the menu to From Attribute to use a different axis per element. This parameter is only available when Operation is set to Rotate.

Axis Attribute

A vector attribute to use as the axis of rotation. This attribute must be present on the appropriate elements (as set by Attribute Class). This parameter is only available when Operation is set to Rotate.

Goal Direction

The desired direction the incoming attribute value will blend towards. All elements in the geometry will use the same goal direction, when Constant Value is used for this parameter. Set the menu to From Attribute to use a different goal direction per element. This parameter is only available when Operation is set to Interpolate.

Axis Attribute

A vector attribute to use as the goal direction. This attribute must be present on the appropriate elements (as set by Attribute Class). This parameter is only available when Operation is set to Interpolate.

Value Distribution

Provides a way to control distribution of the generated adjustment values. This parameter is only available when modifying Length Only with Noise or Random adjustments.

Uniform

Generated adjustment values will be uniformly distributed within the custom range.

Elements are distributed in -1 to 1 range using different pattern types:

Uniform with Remapping

The generated value will be fed through the Remap Ramp to produce the final adjustment value. You can use this option to shift the values or create gaps in the given range.

Elements are distributed in -1 to 1 range using different pattern types, while shifting values towards the minimum limit of the range:

Uniform with Outliers

Allows for a percentage of elements to extend beyond the given range. Use the outlier visualizer button next to Outlier Attribute to see which elements are selected as outliers. It is possible to extend the range beyond the minimum and/or maximum limits, either by adding or multiplying the selected limits with Outlier Range. For example, you can set Outlier Percent to 15 and Outlier Range to 2, forcing 15% of elements to get an adjustment value that is up to 2 larger (in Additive mode) or twice as large (in Multiplicative mode). This will produce vector lengths that are controllably larger for 15% of the elements.

Using outliers to extend both minimum and maximum range limit:

Note

It is possible to achieve similar value manipulation by using Uniform with Remapping. However, Uniform with Outliers lets you precisely control the proportion of points that fall outside of the proper range.

Remap Ramp

The intermediate uniformly-distributed value will be fed through this ramp to obtain the adjustment value. The vertical axis of this ramp spans the custom range.

Outlier Percent

Controls the number of outliers. A value of 15 means that the adjustment value for 15% of all elements will fall outside the original range.

Outlier Range

Controls how much the outlier range extends beyond the original. You can extend the maximum range, minimum range, or both either by multiplication or addition.

Additive

Outlier Range will be added to the maximum and/or minimum of the original range.

Elements are distributed in -2 to 2 range with Outlier Range set to 3:

Multiplicative

Outlier Range will multiply the maximum and/or minimum of the original range.

Elements are distributed in -2 to 2 range with Outlier Range set to 3:

Below Min Value

Only extend the minimum limit of the range.

Elements are distributed in -2 to 2 range with Outlier Range set to 3:

Both

Extend both the minimum and maximum limit of the range.

Elements are distributed in -2 to 2 range with Outlier Range set to 3:

Seed

Controls random selection of outliers. Change the value of the Seed if outlier selection is undesirable.

Outlier Attribute

Integer attribute to store whether an element is outlier (indicated by 1) or not (signaled with 0).

Step Size

If this checkbox is turned on, possible adjustment values will be quantized to the Step Size. For example, if minimum and maximum of the range are 0.1 and 3, and Step Size is set to 1, then the possible adjustment values are 0.1, 1.1, 2.1.

Adjustment Attribute

Specifies the attribute storing the adjustment value to use. This parameter is only available when Adjustment for is set to Length Only and Adjust With is Attribute.

Random

Randomization By

Specifies how the pseudo-random number generator is seeded for each element to produce the adjustment value. Element Number will use the point, primitive, or vertex number depending on Attribute Class. Topology changes on the input geometry can shift element numbers, causing different adjustment values to be used. Custom Attribute lets you provide an integer attribute to make sure the random value is not dependent on element order.

Custom Attribute

The attribute to use for seeding random number generation.

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.

Frequency is scaled by 1.25.

Sparse Convolution

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

Frequency is scaled by 1.25.

Alligator

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

Frequency is scaled by 1.64.

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.

Location Attribute

The node generates values for each element by sampling a noise field at the location specified by this vector attribute on the incoming geometry. If this is P (point position, the default), the points of the geometry will appear to swim through the noise. If you want the noise to “stick” to the points, you can copy the initial point positions into a rest attribute and use that attribute here instead.

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

Enables a set of controls to further fine tune the output attribute value. Unless set otherwise, all post-process modifications will take place after adjustment is applied to the attribute.

Blend

Blends between the incoming attribute and the output attribute value. A blend of 0 means that no adjustment takes place: the incoming attribute value 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 Attribute (when the menu on the right of this parameter is set to Use Attribute).

Blend Attribute

A float attribute between the range 0 to 1 to use as blend value. This attribute must be present on the appropriate elements (as set by Attribute Class). A blend value of 0 means that no adjustment takes place: the incoming attribute value is the output value. Likewise, a value of 1 will output the adjusted value, ignoring the initial value.

Length Scale

If this checkbox is turned on, the output vector’s length will be scaled by this amount.

Minimum Length

If this checkbox is turned on, the output attribute’s lengths are clamped against the specified Minimum Length.

Maximum Length

If this checkbox is turned on, the output attribute’s lengths are clamped against the specified Maximum Length.

Make Vectors Unit Length

If this checkbox is turned on, the final attribute values will be rescaled to have length 1.

Output Attributes

Length

If this checkbox is turned on, an attribute of the given name will be created on the same elements to store the length of the final vector.

Attribute Properties

Default Value

If this checkbox is turned on, it overwrites the default value property for the target attribute. Merging the output of this node with another geometry that is missing the attribute guarantees that new values will be initialized to this Default Value.

Type Qualifier

If this checkbox is turned on, the qualifier property for the target attribute is set to the selected type. The qualifier controls how the values are modified when its geometry is transformed.

See also

Geometry nodes