Vector Field

Generate a vector field from curves, scalar and distance fields, volumes, images, geometry, or force fields.

What it does

Vector Field produces a flow of directions samplable anywhere in space: the value that pushes particles, bends geometry, or writes a direction into every pixel.

There is no mode to pick. What you wire into Source decides what happens to it.

A toggle appears beside the pin only where the wired input carries two legitimate meanings. Geometry Reading takes a piece of geometry as either its surface normals, flow pointing away from the nearest surface, or the gradient of its own distance field. Vector Reading takes a three-channel field as either a potential to curl, giving the swirling, divergence-free flow used for smoke and fluid-like motion, or as the flow itself, and defaults to Curl. Colour Reading takes a colour field as either a colour-encoded direction, a normal-map or flow-map, or as a heightfield to read the slope of, and defaults to RGB as Direction.

Colour Reading decodes any colour field, not only an imported image: a Noise set to colour, a Solid and a Gradient all read the same way.

The X/Y/Z Source pins override individual axes. Rasterize bakes the result to an image instead of a live field, for previewing or for feeding image-only nodes downstream.

When to use it

ParameterTypeDefaultWhat it does
sourceColor Field or Vector Field or Scalar Field or SDF or Collection or ForceField"None"What to turn into a vector field. A pen stroke becomes tangent flow, a scalar / distance field becomes its gradient, a geometry becomes its surface normals, a force field becomes its own spatial field — all inferred from the type. A 3-channel vector field is read per Vector Reading (curl by default); a raster/colour field per Colour Reading. Picking Radial, Vortex or Constant drops in a Force Field (a point attractor, a rotation around an axis, or a uniform direction) already wired here, so its centre, axis / direction and falloff are editable on that node. One of: None, Noise, Noise (height), Radial, Vortex, Constant.
source_xScalar Field or SDF—Scalar / distance field driving the X component. Unwired, X comes from the decoded source's red channel (or 0).
source_yScalar Field or SDF—Scalar / distance field driving the Y component. Unwired, Y comes from the decoded source's green channel (or 0).
source_zScalar Field or SDF—Scalar / distance field driving the Z component. Unwired, Z comes from the decoded source's blue channel (or 0).
vector_readingString"Curl"What a wired 3-channel vector field means: Curl treats it as a potential and takes its curl (divergence-free flow — this is curl noise), Pass Through uses it as it arrives. One of: Curl, Pass Through.
geometry_readingString"Surface Normals"What a wired geometry means: Surface Normals uses the nearest-surface normal (piecewise, follows the triangles); SDF Gradient builds the mesh's own distance field and differentiates it (smooth, defined everywhere, in/out aware). One of: Surface Normals, SDF Gradient.
color_readingString"RGB as Direction"What a wired colour / raster field means: RGB as Direction decodes the pixels as a normal / flow map (rgb*2−1); Brightness Gradient reads it as a heightfield and takes the gradient of its brightness. One of: RGB as Direction, Brightness Gradient.
epsilonNumber0.010Step size for curl / gradient finite-difference — smaller = sharper, larger = smoother
strengthNumber1Multiplies the output vector magnitude
directionString"Away"Gradient direction: Away = raw ∇f (uphill / outward for a distance field or a bright region); Toward = −∇f (downhill / into the surface). One of: Away, Toward.
flip_yBooleanfalseFlip the decoded Y (green) direction — DirectX vs OpenGL normal-map convention.
falloff_radiusNumber64How far the pen-stroke flow reaches from the curve (world units).
taper_by_widthBooleanfalseDrive flow magnitude by the stroke's per-anchor width (taper).
perpendicularBooleanfalseFlow toward the curve (perpendicular) instead of along it (tangent).
viz_densityNumber8Number of sample seeds per axis for the visualization grid
viz_modeString"Streamlines"Guide preview style: Streamlines threads flow lines through the field; Arrows shows one direction arrow per sample. One of: Streamlines, Arrows.
color_by_directionBooleantrueColor streamlines/arrows by flow direction (RGB = XYZ) instead of a plain color.
rasterizeBooleanfalseEagerly bake field to a GPU raster texture at the specified resolution
raster_widthNumber512Width in pixels (raster resolution and arrow viz extent)
raster_heightNumber512Height in pixels (raster resolution and arrow viz extent)
opacityNumber1Layer opacity (0 = transparent, 1 = opaque). Editable, wirable, keyframable.

Gotchas

This node makes nothing on its own and only converts what is wired in. With Source empty the output is a flat, empty field, not a hidden pattern. Picking Noise on Source adds and connects the node that generates the pattern: Noise for the swirling flow, Noise (height) for the slope of a noisy heightfield instead.

Strength disappears when the wired source is handed straight through: a Force Field, a geometry read as Surface Normals, or a three-channel field on Pass Through. Those keep the magnitude they arrive with. Scale one with a Vector Math node instead.

This node generates or converts a flow and moves nothing itself. Wire its output into a Displace node, or a particle or simulation node, to deform geometry or push particles.

Rasterize also sets the world size of the arrow and streamline preview, so raising Raster Width/Height widens the previewed area, not only the baked image's resolution.

Source is the only thing that decides between the flow-following, slope and surface-normal behaviours. There is no setting for them, and the controls for each appear only once the matching kind of thing is wired. If Reach or Direction is missing, check what Source is connected to.

The preview, streamlines or arrows, always draws from the field the node actually produced, so it disappears when Rasterize is on. The raster image is the preview at that point.

Worked example

  1. Add a Vector Field. There is nothing to configure yet: what it does comes from what you wire into Source.

  2. On Source, pick Noise. A Noise node appears wired in, carrying the pattern being swirled. Vector Reading is already on Curl, which turns the noise into a swirling, divergence-free flow.

  3. On the Noise node, raise Frequency for finer detail or Octaves for more layered complexity, and connect Time to the frame number to animate it.

  4. Wire the Field output into a Displace node's source to push geometry around, or into a particle simulation to drive motion.

  5. Turn on Rasterize to bake the flow to an image for preview or for feeding an image-only node.

See also

SDF · Harmonic Field · Channel Field · Vector fields