Houdini 20.5 Nodes Geometry nodes

Attribute Adjust Float geometry node

Modifies floating point attribute values on the incoming geometry.

On this page
Since 18.5

Overview

The Attribute Adjust Float SOP provides an interface to vary float type 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 element. The varying values can be generated fully randomly or sampled from a spatially-coherent noise pattern.

This node can also post-process the values, for example by blending them with another attribute or limiting them to the specified range. Additionally, it has the functionality to convert between units of frame and time or between degrees and radians.

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.

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.

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

Units

Unit Settings

You may want to specify parameter values in different units from the ones the attribute is stored in. As an example, a life attribute stores its values in seconds, while it might be more intuitive to set it in terms of frames. Unit Settings allows you to specify units for the attribute and parameters, and the node will internally perform the conversions. There are presets for commonly-used combinations, as well as the Custom option if you'd like to provide your own conversion formula.

Attribute

Sets the units for attribute values. The node will internally convert relevant parameter values from units of Parameters to units of Attribute.

Parameters

Sets the units of parameter values. The node will internally convert relevant parameter values from these units to units of Attribute.

Some example uses of of Units are given below.

To...Do this

Set particles to live for exactly 10 frames

  1. Set Attribute Name to life.

  2. Set Operation to Set Always.

  3. Set Constant Value to 10.

  4. Set Unit Settings to Duration, make sure Attribute is Seconds and Parameters is set to Frames.

This will give you the value, 0.416667 and your particles will live for exactly 10 frames.

Extend particle’s life attribute exactly 14 frames

  1. Set Attribute Name to life.

  2. Set Operation to Add.

  3. Set Constant Value to 14.

  4. Set Unit Settings to Duration, make sure Attribute is Seconds and Parameters is set to Frames.

Limit the life attribute to 5 frames

  1. Set Attribute Name to life.

  2. Set Operation to Set Always.

  3. Disable Adjust Value.

  4. Turn on Enable Post-Process.

  5. Turn on Maximum and set it to 5. After this no value will be larger than 0.208333.

Limit the life attribute between 24 to 72 frames

  1. Set Attribute Name to life.

  2. Set Pattern Type to Random.

  3. Set Operation to Minimum. This will pick the lowest value between the incoming attribute and the adjustment value.

  4. Set Min Value to 24 and Max Value to 72.

  5. Optionally, set Enable Stepping with a Step Size of 1.

  6. Set Unit Settings to Duration, make sure Attribute is Seconds and Parameters is set to Frames.

Set starttime attribute as unit of frame to 10, then offset it by 14 frames.

  1. Set Attribute Name to starttime.

  2. Set Operation to Set Always.

  3. Set Constant Value to 10.

  4. Set Unit Settings to Time, make sure Attribute is Seconds and Parameters is set to Frames.

This will output the value of 0.375, which is equal to frame 10. You have to use Time, as frame one is equal to time zero, which requires you to offset the frame unit for the correct conversion. To offset this value by 14 frames:

  1. Append an other Attribute Adjust Float .

  2. Set Attribute Name to starttime.

  3. Make sure Operation is set to Add.

  4. Set Constant Value to 14.

  5. Set Unit Settings to Duration, make sure Attribute is Seconds and Parameters is set to Frames. This will output the value of 0.958333, which is equal to frame 24 as the correct output. Here Duration is used instead, as we need to offset the value by an interval.

Set startframe attribute as unit of time to half a second

  1. Set Attribute Name to startframe.

  2. Set Operation to Set Always.

  3. Set Constant Value to 0.5, which represents half a second.

  4. Set Unit Settings to Time, make sure Attribute is Frames and Parameters is set to Seconds. This will output the value of 13, which is the frame at half a second.

Offset startframe attribute as unit of time by one and a half seconds

  1. Set Attribute Name to startframe.

  2. Set Operation to Add.

  3. Set Constant Value to 1.5, which represents one and a half seconds.

  4. Set Unit Settings to Time, make sure Attribute is Frames and Parameters is set to Seconds.

Convert startframe attribute to a new starttime attribute.

  1. Set Attribute Name to starttime, this is the attribute we are converting to.

  2. Set Operation to Set Always.

  3. Set Pattern Type to Attribute and Adjustment Attribute to startframe, which is the attribute we want to convert.

  4. Set Unit Settings to Time, make sure Attribute is Seconds and Parameters is set to Frames. This will create a new attribute with the name starttime, and it’s value is equal to startframe in units of time.

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.

Operation

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

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.

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

Minimum

Output will be minimum of the existing attribute value and the adjustment value.

Maximum

Output will be maximum of the existing attribute value and the adjustment value.

Pattern Type

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. Additionally, you can provide another attribute to use as the adjustment value for every element.

Constant

The adjustment value will be the same for all elements in the geometry. Use this to do simple math operations for all elements. For example, to offset all element 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 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 in Attribute Name will be used as the adjustment value.

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 attribute values representing specific trigger frames.

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

Constant Value

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

Min Value

Sets the minimum limit of the custom range.

Max Value

Sets the maximum limit of the custom range.

Middle Value

This value lies in the center of the custom range.

Range Length

Sets the length of the custom range; that is, the difference between the maximum and minimum of the range will be equal to the value of this parameter.

Value Distribution

Provides a way to control distribution of the generated adjustment values.

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, when modifying a life attribute, you can set Outlier Percent to 15 and Outlier Range to 2, forcing 15% of the points to live up to 2 seconds longer (in Additive mode) or twice as long (in Multiplicative mode).

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 to precisely control the proportion of points that fall outside the proper range.

Remap Ramp

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

Outlier Percent

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

Outlier Attribute

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

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 the outlier selection is undesirable.

Enable Stepping

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

Tip

To create a float type attribute startframe with values rounded to integer values, turn on this checkbox and set the Step Size to 1.

Step Size

Controls the spacing between the generated adjustment values.

Number of Values

Controls the number of sets of possible adjustment values. Each set can be a single value or a list of numbers. Probability of selecting each adjustment from each set is proportional to its Weight.

Value

Sets an exact adjustment value.

Value Type

In Constant mode, the set will only contain the Value. In List of Values mode, Value List defines the set of values.

Weight

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

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.

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

Adjustment Attribute

Specifies the attribute storing the adjustment value to use. The attribute value can be pre-scaled (Scale Value), pre-offset (Offset Value) or both (Apply Both) before it is combined with the incoming attribute value.

Scale

Scales the adjustment value before it is combined with the incoming attribute value.

Offset

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

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.

Tip

In case of a particle simulation, use id attribute to apply the same random value to the particles throughout their lifetime. You can also use Custom Attribute to apply the same random value to multiple elements.

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

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

Minimum

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

Maximum

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

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.

See also

Geometry nodes