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 drawn stroke becomes flow following the stroke. Reach sets how far from the line the flow extends, Taper By Width drives its strength from the stroke's own thickness, and Perpendicular turns the flow toward the line instead of along it.
A scalar field or a Distance Field becomes its slope, the uphill direction at every point, which for a Distance Field is the outward surface normal. Direction flips it to point downhill or inward, and Step Size controls how sharp or smooth the slope reads.
A Force Field becomes the flow it already describes, unchanged.
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
Swirling, natural-looking motion for particles or fluid: Noise on Source, which drops in a wired Noise node whose pattern settings are edited there. Vector Reading is already on Curl.
Flow following a slope, off a Distance Field, a heightfield or any scalar field: wire it into Source.
Flow following a drawn stroke: wire the stroke into Source.
Flow following a surface's normals: wire the geometry into Source.
Particles pulled toward or away from a point, or spinning around an axis: Radial or Vortex on Source. Each drops in a wired Force Field, so its centre, axis and falloff are editable there.
A normal-map, a flow-map or any other colour field turned from colour into direction: wire it into Source. Colour Reading is already on RGB as Direction.
A single uniform push in one direction, wind or gravity: Constant on Source, which drops in a Force Field set to Directional.
| Parameter | Type | Default | What it does |
|---|---|---|---|
source | Color 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_x | Scalar Field or SDF | — | Scalar / distance field driving the X component. Unwired, X comes from the decoded source's red channel (or 0). |
source_y | Scalar Field or SDF | — | Scalar / distance field driving the Y component. Unwired, Y comes from the decoded source's green channel (or 0). |
source_z | Scalar Field or SDF | — | Scalar / distance field driving the Z component. Unwired, Z comes from the decoded source's blue channel (or 0). |
vector_reading | String | "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_reading | String | "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_reading | String | "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. |
epsilon | Number | 0.010 | Step size for curl / gradient finite-difference — smaller = sharper, larger = smoother |
strength | Number | 1 | Multiplies the output vector magnitude |
direction | String | "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_y | Boolean | false | Flip the decoded Y (green) direction — DirectX vs OpenGL normal-map convention. |
falloff_radius | Number | 64 | How far the pen-stroke flow reaches from the curve (world units). |
taper_by_width | Boolean | false | Drive flow magnitude by the stroke's per-anchor width (taper). |
perpendicular | Boolean | false | Flow toward the curve (perpendicular) instead of along it (tangent). |
viz_density | Number | 8 | Number of sample seeds per axis for the visualization grid |
viz_mode | String | "Streamlines" | Guide preview style: Streamlines threads flow lines through the field; Arrows shows one direction arrow per sample. One of: Streamlines, Arrows. |
color_by_direction | Boolean | true | Color streamlines/arrows by flow direction (RGB = XYZ) instead of a plain color. |
rasterize | Boolean | false | Eagerly bake field to a GPU raster texture at the specified resolution |
raster_width | Number | 512 | Width in pixels (raster resolution and arrow viz extent) |
raster_height | Number | 512 | Height in pixels (raster resolution and arrow viz extent) |
opacity | Number | 1 | Layer 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
Add a Vector Field. There is nothing to configure yet: what it does comes from what you wire into Source.
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.
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.
Wire the Field output into a Displace node's source to push geometry around, or into a particle simulation to drive motion.
Turn on Rasterize to bake the flow to an image for preview or for feeding an image-only node.