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
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.
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.
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.
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.
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 type
The type of noise to generate. Different algorithms give noise with different characteristics.
Value noise types
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 noise types
Perlin
A noise where the visual details are the same size. Wikipedia article
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.
Worley/Cellular noise types
F1
Produces cellular features similar to plant cells, ocean waves, honeycombs, cratered landscapes, and so on. Wikipedia article
F2-F1
A variant of Worley noise that produces blunted and cornered features.
Manhattan F1
A variant of Worley F1 noise that uses Manhattan distance calculation. Useful when you want unusual-looking noise.
Manhattan F2-F1
A variant of Worley F2-F1 noise that uses Manhattan distance calculation. Useful when you want unusual-looking noise.
Chebyshev F1
A variant of Worley F1 noise that uses Chebyshev distance calculation. Useful when you want unusual-looking noise.
Chebyshev 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 abitrary attribute values.
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.
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.
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
.
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 (Blend by Constant) or by value of the Blend Attribute (when the menu on the right of this parameter is set to Blend by 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.
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.
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 |