Spread

Spread an offset across a set's elements, shaped by an ordering, a distribution pattern, and an easing curve. Operates on the ordinal axis (which element, in what order) over collections, number, vector, colour and integer arrays, scalars, and lists; Range, Curve, and Gradient remap the magnitude axis.

What it does

Spread offsets the elements of a set one at a time, staggered by their order rather than by distance from something. Give it an ordering attribute (index, normalised position, or a custom one), pick how that order is reshuffled (sequential, reversed, from the centre out, random, zigzag) and shape the ramp with an easing curve. The result drives a position offset per element, and can also drive a frame delay or a named custom attribute.

This is the ordinal-axis tool: it answers which element, in what order, which is a different job from magnitude remappers like Range, Curve or Gradient. Spread works on Collections directly, and on NumberArray, Vec3Array, ColorArray, IntArray, single numbers, vectors and colours, and Lists. For non-Collection inputs the ordering comes from each element's position in the array.

When to use it

ParameterTypeDefaultWhat it does
inputAny——
orderingString"u"Ordering attribute for Collections. Arrays use element index automatically.
distributionString"Sequential"Reorder elements before applying the easing curve. One of: Sequential, Reverse, From Center, To Center, Random, Zigzag.
easingCurve2D CurveShape of the ramp across elements — edit it here, or wire a Curve to share one. A straight line is no shaping.
strengthNumber1Blend between original (0) and fully spread (1)
seedNumber42Random seed for Random distribution mode
offsetNumber0Offset amount for Number/NumberArray, or opacity offset for Collections
vec3_offsetVec3 or Vec3[]—Vec3 offset for Vec3Array/Vec3, or position offset for Collections
color_offsetColor or Color[]—Color offset for ColorArray/Color, or color offset for Collections
rotation_offsetNumber or Number[]—Rotation offset in degrees (additive) — Collection mode only
scale_offsetVec3 or Vec3[] or Number—Scale offset (vec3, or a number for uniform scale; additive) — Collection mode only
time_offsetNumber0Frame offset per element, shaped by ordering/distribution/easing. Each element evaluates its animation at its own frame. Negative = earlier. Collection mode only.
custom_attributeString""Name of a custom float attribute to offset (Collection mode only)
custom_offsetNumber0Offset amount for the custom attribute

Gotchas

Step Count appears only when Easing is set to Steps, and Seed only when Distribution is set to Random. Controls that do not apply are hidden rather than left inert.

Custom Attribute needs both a name and a non-zero Custom Offset. An empty name or a zero offset leaves that attribute untouched, and it is Collection mode only.

Weight is populated for a Collection input only. Fed a NumberArray, Vec3Array, or a single number, colour or vector, Weight comes back as an empty array: the ordinal ramp is meaningful only across a set of elements.

Worked example

  1. Add a Spread node and feed it a Collection of instances.

  2. Set Ordering to @index, or a custom attribute written earlier, and pick a Distribution. From Center moves the outer elements first.

  3. Raise Strength and wire a value into Vec3 Offset to fan the elements out from their base positions.

  4. Switch Easing to Steps and raise Step Count for a chunky, quantised stagger instead of a smooth ramp.

  5. For an animation cascade, raise Time Offset. It writes @time_offset per element, ready to feed an Iterator's time input.

See also

Displace · Warp · Channel · Collections