Skip to content

Draw Field ​

Visualize a scalar, vector, or color field as a texture — either as a bare raster (default), a heatmap with a custom color ramp, arrow glyphs, or integrated streamlines.

Category: Render Menu path: Render > Draw Field

Ports ​

PortTypeDirectionDescription
field_inscalarField (polymorphic — also accepts vectorField / colorField)inputField to visualize
outimageRgba16foutputRasterized or visualized texture

Parameters ​

ParamTypeDefaultDescription
visualizationenumNoneNone / Heatmap / Arrows / Streamlines — see below
colorRampGradientRampblack→whiteHeatmap mode — scalar value [0, 1] maps through this ramp
densityscalar16Arrows / Streamlines — count along the shorter axis (longer axis scales to keep cells square)
arrowColorcolorcyanArrows / Streamlines — stroke color
arrowLengthscalar30Arrows — arrow shaft length in comp pixels at magnitude=1
stepsscalar30Streamlines — integration steps per seed
stepSizescalar4Streamlines — distance in comp pixels per step

Inspector hides params not relevant to the active mode.

Visualization Modes ​

None (default, backward compatible) ​

Straight rasterization of whatever field is connected. Scalar → grayscale. Vector → R=u, G=v, B=0. Color → RGBA directly. Same behavior Draw Field had before visualization modes existed, and identical to what resolve_as_texture() does automatically when you wire a field into any imageRgba16f input.

Heatmap (scalar fields) ​

Each pixel's scalar value (clamped to [0, 1]) is fed through colorRamp to produce an RGBA. Useful for visualizing distance fields, noise, curvature, or any 1D signal where a named color palette helps legibility. Drop in a "viridis"/"inferno"/"thermal" style ramp for scientific-visualization looks; use a custom 3-stop ramp for branded palettes.

Vector and color inputs fall back to None rendering when Heatmap is selected (no canonical heatmap of an RGBA or 2D signal).

Arrows (vector fields) ​

Draws a grid of arrow glyphs at evenly-spaced comp positions. Each arrow:

  • Sits at a grid cell center
  • Points in the direction of the field at that location
  • Has shaft length proportional to field magnitude × arrowLength
  • Gets a proper arrowhead (two wings at 25° from the shaft)

Arrows are drawn on a transparent background — merge over a Heatmap or the original content for context.

Streamlines (vector fields) ​

Seeds particles at a grid, integrates each forward through the vector field for steps steps of length stepSize, and draws the resulting polyline. Gives an "iron filings around a magnet" look — reveals field topology far more clearly than discrete arrows or raw color.

Alpha fades ~50% from head to tail across the streamline length, hinting at direction of flow. Seeds that enter zero-magnitude regions stop early.

Usage Examples ​

Inspect a Noise vector field ​

Noise.vectorField → DrawField (visualization: Streamlines, density: 16, steps: 40) → Output

See the flow topology at a glance. Great for tuning Noise params until the flow feels right for downstream particle work.

Heatmap a DistanceField ​

DistanceField (shape: your_shape).scalarField → DrawField (visualization: Heatmap, colorRamp: viridis) → Output

Falloff surface gets a clean false-color rendering — useful for previewing what a particle attribute driven by this field will look like.

Visualize Optical Flow ​

VideoSource → OpticalFlow → ImageSample (as vectorField) → DrawField (Streamlines) → Output

Live flow visualization on video — great for tuning OpticalFlow's smoothness and iterations against real footage.

Arrows overlay on source ​

Noise.vectorField → DrawField (Arrows) → Merge ← Source → Output

Field direction overlaid on the source image (merge as Normal / Add for different looks).

Tips ​

  • Density vs count: the actual arrow / streamline count is density × density × (aspect ratio) — at density 16 on a 16:9 comp you get ~144 elements. Raise to 24-32 for finer sampling; lower to 8-10 for minimalist visualization.
  • Streamlines are cheap: CPU integration of a few thousand points per frame is sub-millisecond. Density 32 + 60 steps ≈ 30k points — still fast.
  • Heatmap + scalar noise is a very common scientific-viz pairing. Combine with a Colorize node on a texture for even more control (Colorize operates per-pixel like DrawField Heatmap mode, just on a texture rather than a field).
  • Step size tradeoff (streamlines): small stepSize (1-2) = precise flow tracing but needs more steps to travel visible distance. Large stepSize (8-16) = longer streaks per step but overshoots sharp turns. Default 4 works for most fields.
  • Background is transparent in Arrows / Streamlines mode. Merge or place against a solid color / heatmap underneath for readability.

When to Use ​

  • None: you just want a texture out of a field. Unless you're using Draw Field as a visual marker in the graph, you can skip the node entirely — wire the field port directly into Output and the engine auto-rasterizes.
  • Heatmap: visualizing scalar signals — distance fields, noise, any 1D data — with a meaningful color palette.
  • Arrows: visualizing vector field direction at discrete positions. Good when you want to see exact values at specific places.
  • Streamlines: visualizing vector field topology. Best for understanding what particles will do when advected through the field.
  • Colorize — per-pixel scalar → color via ramp on textures (not fields). Useful parallel to Heatmap mode.
  • OpticalFlow — the canonical source of vector fields that benefit from streamline visualization
  • Noise, Voronoi, Gradient — field sources to inspect
  • DistanceField — scalar field source, classic heatmap candidate
  • PointAdvect — if streamlines look interesting, this is how you put real particles through the same field