Houdini 22.0 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 for varying vector attribute values, reducing the need to create VOP networks or write VEX code. It can modify the direction, length, or both by a uniform value or a value that varies for each element. The node can generate fully random values or sample values from a spatially coherent noise pattern.

This node can also initialize a vector value if the attribute specified by Attribute Name does not exist. It can also post-process the values, for example, by blending them with another attribute or limiting them to a 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 the node changes. This filter applies as the last step, when the adjustment value is combined with the incoming attribute.

Pre-Process

Enable Pre-Process

When on, provides controls for fine-tuning the incoming attribute value. All modifications happen before the adjustment is applied to the attribute. Pre-Process also lets you initialize the attribute if it does not exist.

Overwrite Initial Value

Sets the value for the attribute. This helps to initialize a new attribute or to overwrite any existing attribute value.

Initial Value From

Determines how the initial value is generated. Constant Value uses the same value for all elements in the geometry. Normal Attribute automatically computes normals from the geometry, while the vector attribute option copies the specified attribute values to the destination attribute.

Initial Vector

Sets the value for all elements in the geometry.

Vector Attribute

Attribute whose values are copied to 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. Determines whether to adjust the vector’s length, direction, or both. 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 while keeping its length unchanged. An example is when working with a velocity attribute, this mode changes the direction of motion without affecting the speed.

Length Only

Modifies the vector’s length while keeping its direction unchanged. An example is when working with a velocity attribute, this mode changes the speed without affecting the direction of motion.

Operation

Set Initial

Create the attribute without overwriting an existing value. If the target attribute is already present, its values remain unchanged. 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

Overwrite any existing value with the generated adjustment value. This operation is only available when Adjustment for is set to Direction & Length.

Add

Add the generated adjustment value to the existing attribute value.

Subtract

Subtract the generated adjustment value from the existing attribute value.

Multiply

Multiply the existing attribute value by the generated adjustment value. Not available when Adjustment for is set to Direction Only..

Minimum

Output the 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 the maximum of the existing attribute value and the adjustment value. This operation is not available when Adjustment for is set to Direction Only.

Rotate

Rotate the existing attribute value around a specified axis by the generated adjustment value. This operation is only available when Adjustment for is set to Direction Only.

Spread

Use the generated adjustment value to control the angle between the output vector and the existing attribute value. The output vector lies on a cone around the existing attribute value, and the adjustment value controls the cone’s opening angle. This operation is only available when Adjustment for is set to Direction Only.

Interpolate

Use the generated adjustment value to spherically interpolate between the direction of the existing attribute value and a specified 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 uses the same Value for every element. Random and Noise generate values that vary across the geometry. These values fall within a well-defined range or are selected from a list of specific values.

The meaning of the adjustment value depends on Adjustment for and Operation

  • Length & Direction - The adjustment value is a vector that is combined with the existing attribute.

  • Length Only - The adjustment value is a single number that is combined with the incoming vector length. For Direction Only, the adjustment value is a vector when Operation is set to Add or Subtract; otherwise, it is a single number.

  • Rotate and Spread - This number represents the angle used for the operation.

  • Interpolate - The adjustment value is an interpolation bias that controls the blend weights between Goal Direction and the incoming direction.

Constant

Use the same adjustment value 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

Sample fully random adjustment values from a well-defined range or a list of specific values.

Noise

Sample adjustment values from a coherent noise field using the Attribute Noise SOP. The values can fall within a well-defined range or be selected from a list of specific values.

Attribute

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

Range Values

Determines the range used to generate the adjustment value. You can also select Specific Values to provide a list of exact values.

Positive

Generate every component of the adjustment value between 0 and Amplitude. This option is available when the adjustment value is a vector.

Zero Centered

Generate every component of the adjustment value between negative half of Amplitude and positive half of Amplitude. 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

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

Specific Values

Select the adjustment value from 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

Define the range from Min Value through Min Value + Range Length. For example, if Min Value is 2 and Range Length is 5, the minimum limit is 2 and the maximum limit is 7. This option is only available when Adjustment for is set to Length Only.

Middle ± Range Length

Define the range from Middle Value - Range Length / 2 through Middle Value + Range Length / 2. For example, if Middle Value is 8 and Range Length is 4, the minimum limit is 6 and the maximum limit is 10. 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

Scales the generated vector. With Positive Values, the generated vector has a range from 0 to 1. With Zero Centered Values, the vector is shifted to a range from -0.5 to 0.5 before scaling.

Click the button to access per-axis controls.

Amplitude Scale

Multiplies Amplitude by the corresponding component of this parameter for each axis.

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

Multiplies Min Value by the corresponding component of this parameter for each axis. This parameter 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

Multiplies Max Value by the corresponding component of this parameter for each axis. This parameter 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.

When Adjustment for is set to Direction Only, Rotate Angle replaces this parameter for Rotate, Spread Angle replaces it for Spread, and Bias replaces it for Interpolate.

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

Sets the sampling weight for the adjustment value. Values with a lower Weight are selected less frequently. Each adjustment value has the same probability when all weights are equal.

Value List

Sets adjustment values by a list of independent range sequences or numbers. Separate entries with whitespace, commas, or semicolons. 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, this parameter is replaced by Rotate Angle List. For Spread, it is replaced by Spread Angle List. For Interpolate, it is replaced by Bias List.

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

Specifies the axis about which the incoming vector is rotated. When Constant Value is on, all elements in the geometry 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. When Constant Value is on, all elements in the geometry use the same goal direction. Set the menu to From Attribute to use a different goal direction for each element. This parameter is only available when Operation is set to Interpolate.

Axis Attribute

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

Controls the distribution of generated adjustment values. This parameter is only available when modifying Length Only with Noise or Random adjustments.

Uniform

Distribute generated adjustment values uniformly within the custom range.

Elements are distributed within the range from -1 to 1 using different pattern types:

Uniform with Remapping

Pass the generated value through the Remap Ramp to produce the final adjustment value. You can use this option to shift values or create gaps in the specified range.

Elements are distributed within the range from -1 to 1 using different pattern types while values are shifted toward the minimum limit of the range:

Uniform with Outliers

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

Using outliers to extend both the minimum and maximum range limits:

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

Passes the intermediate uniformly distributed value 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 far the outlier range extends beyond the original range. You can extend the maximum, the minimum, or both by multiplication or addition.

Additive

Add Outlier Range to the maximum and/or minimum of the original range.

Elements are distributed within the range from -2 to 2 with Outlier Range set to 3:

Multiplicative

Multiply the maximum and/or minimum of the original range by Outlier Range.

Elements are distributed within the range from -2 to 2 with Outlier Range set to 3:

Below Min Value

Extend only the minimum limit of the range.

Elements are distributed within the range from -2 to 2 with Outlier Range set to 3:

Both

Extend both the minimum and maximum limits of the range.

Elements are distributed within the range from -2 to 2 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

When on, quantizes possible adjustment values to Step Size. For example, if the minimum and maximum of the range are 0.1 and 3, and Step Size is set to 1, 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 pseudorandom number generator is seeded for each element to produce the adjustment value. Element Number uses the point, primitive, or vertex number depending on Attribute Class. Topology changes on the input geometry can shift element numbers, causing different adjustment values. Custom Attribute lets you specify an integer attribute so the random value does not depend on element order.

Custom Attribute

The attribute to use for seeding random number generation.

Seed

Seed for all generated values. Change this 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

A faster and more interesting variant of Perlin noise based on the onoise VEX function.

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.

Post-Process

Enable Post-Process

When on, provides controls for fine-tuning the output attribute value. Unless specified otherwise, all modifications happen after the 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 Type

Sets the interpolation mode used to blend the attribute value.

Linear

Perform linear interpolation between corresponding components. Both direction and magnitude are interpolated linearly.

Spherical

Perform spherical interpolation between corresponding components. Directions are interpolated spherically, and magnitudes are interpolated linearly.

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

When on, scales the output vector’s length by this amount.

Minimum Length

When on, clamps the output attribute’s lengths against the specified Minimum Length.

Maximum Length

When on, clamps the output attribute’s lengths against the specified Maximum Length.

Make Vectors Unit Length

When on, rescales the final attribute values to a length of 1.

Output Attributes

Length

When on, creates an attribute with the specified name on the same elements to store the length of the final vector.

Attribute Properties

Default Value

When on, overwrites the default value property for the target attribute. Merging the output of this node with another geometry that is missing the attribute initializes new values to this Default Value.

Type Qualifier

When on, sets the qualifier property for the target attribute to the selected type. The qualifier controls how the values are modified when the geometry is transformed.

See also

Geometry nodes