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 |
|---|---|---|
source | OneOf([FieldOf(Color), FieldOf(Vector), FieldOf(Scalar), FieldOf(Sdf), Collection, ForceField]) | "None" |
source_x | OneOf([FieldOf(Scalar), FieldOf(Sdf)]) | — |
source_y | OneOf([FieldOf(Scalar), FieldOf(Sdf)]) | — |
source_z | OneOf([FieldOf(Scalar), FieldOf(Sdf)]) | — |
vector_reading | String | "Curl" |
geometry_reading | String | "Surface Normals" |
color_reading | String | "RGB as Direction" |
epsilon | Number | 0.010 |
strength | Number | 1 |
direction | String | "Away" |
flip_y | Boolean | false |
falloff_radius | Number | 64 |
taper_by_width | Boolean | false |
perpendicular | Boolean | false |
viz_density | Number | 8 |
viz_mode | String | "Streamlines" |
color_by_direction | Boolean | true |
rasterize | Boolean | false |
raster_width | Number | 512 |
raster_height | Number | 512 |
opacity | Number | 1 |
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.