Skip to content
Voro
  1. Geometry
  2. Solvers

Force Field

Force Field combines wind, curl noise, a vortex and attraction into a velocity grid. Use one field to direct several solvers, with each solver controlling how strongly it responds. The node generates flow values without solving a fluid simulation.

Place Force Field in the Geometry view, under Solvers. For a clear first test, set Curl Amplitude and Vortex Strength to 0 and Wind to 1, 0, 0. Keep Resolution at 48 and Bound Size at 4. The preview should show a uniform direction within that domain.

On a receiving solver’s Resources page, add a velocity Connection and select this field’s velocity resource. Raise the receiver’s coupling control where it starts at 0, as it does on FLIP Liquid, Rigid, Soft Body and Deform. Connect Field Lines to the same resource for a separate view.

The velocity output is a world-space vector grid. Its bounds come from Bound Size and Bound Center. Geometry is an optional declared input; the procedural field can be built without it.

A resource connection chooses the field. It does not set the receiving solver’s coupling strength or expand that solver’s domain.

  • Wind sets the constant vector. Curl Amplitude and Frequency add noise; Octaves adds detail and Curl Drift moves the noise through space.
  • Vortex Strength, Radius, Center and Axis shape rotation. Start by changing Strength while keeping the default Y axis.
  • Positive Attract Strength pulls inward; negative values push outward. Attract Radius and Center locate the effect.
  • Mask Radius at 0 disables the mask. A positive radius confines the field around Mask Center, with Mask Softness controlling the edge.
  • Time Offset and Time Scale control procedural animation. Max Speed Clamp caps the resulting field speed.
  • Resolution and bounds affect the field build. With Auto-Rebuild off, press Rebuild to apply pending structural changes. Preview controls change the displayed samples without changing field resolution.

The default field already combines wind, curl and a vortex. Isolate one contribution while learning what it does, then mix them.

Field strength and the receiving solver’s response are separate. If the preview looks right but the simulation does not move, check the velocity Connection, coupling value and domain placement.

Inputs

  • geometry points

Outputs

  • velocity velocity field
  • preview lines
  • preview_cd lines

Force Field

Auto-Rebuild on Build Params (Autorebuild) Toggle op('force_field').par.Autorebuild
Default:
On
Options:
Off, On
Rebuild (Rebuildnow) Pulse op('force_field').par.Rebuildnow
Default:
None
Simulate (Simulate) Toggle op('force_field').par.Simulate
Default:
On
Options:
Off, On
Reset (Resetsolver) Pulse op('force_field').par.Resetsolver
Default:
None

Preview

Show Preview (Previewshow) Toggle op('force_field').par.Previewshow
Default:
On
Options:
Off, On
Preview Density (Previewdensity) Int op('force_field').par.Previewdensity
Default:
12
Range:
2 to 48
Preview Length (cells) (Previewlength) Float op('force_field').par.Previewlength
Default:
0.6
Range:
0 to 2

Outputs

Force Field Resource (Hdrforceout) Str op('force_field').par.Hdrforceout

Read only.

Default:
"" (Empty String)
Velocity Output Resource (Velocityname) Str op('force_field').par.Velocityname
Default:
force_vel

Domain

Domain (Hdrdomain) Str op('force_field').par.Hdrdomain

Read only.

Default:
"" (Empty String)
Resolution (Resolution) Int op('force_field').par.Resolution
Default:
48
Range:
8 to 256
Bound Size (cube) (Boundsize) Float op('force_field').par.Boundsize
Default:
4
Range:
0.1 to 20
Bound Center X (Boundcenterx) Float op('force_field').par.Boundcenterx
Default:
0
Range:
-100 to 100
Bound Center Y (Boundcentery) Float op('force_field').par.Boundcentery
Default:
0
Range:
-100 to 100
Bound Center Z (Boundcenterz) Float op('force_field').par.Boundcenterz
Default:
0
Range:
-100 to 100
Rebuild Field (Rebuild) Pulse op('force_field').par.Rebuild
Default:
None

Forces

Time (Hdrtime) Str op('force_field').par.Hdrtime

Read only.

Default:
"" (Empty String)
Time Offset (Time) Float op('force_field').par.Time
Default:
0
Range:
-100000 to 100000
Time Scale (Timescale) Float op('force_field').par.Timescale
Default:
1
Range:
-10 to 10
Wind / Curl (Hdrwind) Str op('force_field').par.Hdrwind

Read only.

Default:
"" (Empty String)
Wind (Windx) Float op('force_field').par.Windx
Default:
0.25
Range:
-100 to 100
Wind Y (Windy) Float op('force_field').par.Windy
Default:
0
Range:
-100 to 100
Wind Z (Windz) Float op('force_field').par.Windz
Default:
0
Range:
-100 to 100
Curl Amplitude (Curlamplitude) Float op('force_field').par.Curlamplitude
Default:
0.8
Range:
0 to 20
Curl Frequency (Curlfrequency) Float op('force_field').par.Curlfrequency
Default:
0.8
Range:
0.001 to 20
Curl Octaves (Curloctaves) Int op('force_field').par.Curloctaves
Default:
2
Range:
1 to 4
Curl Drift (Curldriftx) Float op('force_field').par.Curldriftx
Default:
0.15
Range:
-20 to 20
Curl Drift Y (Curldrifty) Float op('force_field').par.Curldrifty
Default:
0.08
Range:
-20 to 20
Curl Drift Z (Curldriftz) Float op('force_field').par.Curldriftz
Default:
0.04
Range:
-20 to 20
Max Speed Clamp (Maxspeed) Float op('force_field').par.Maxspeed
Default:
25
Range:
0 to 1000

Vortex

Vortex (Hdrvortex) Str op('force_field').par.Hdrvortex

Read only.

Default:
"" (Empty String)
Vortex Strength (Vortexstrength) Float op('force_field').par.Vortexstrength
Default:
1.5
Range:
-50 to 50
Vortex Radius (Vortexradius) Float op('force_field').par.Vortexradius
Default:
1.2
Range:
0.001 to 20
Vortex Center (Vortexcenterx) Float op('force_field').par.Vortexcenterx
Default:
0
Range:
-100 to 100
Vortex Center Y (Vortexcentery) Float op('force_field').par.Vortexcentery
Default:
0
Range:
-100 to 100
Vortex Center Z (Vortexcenterz) Float op('force_field').par.Vortexcenterz
Default:
0
Range:
-100 to 100
Vortex Axis (Vortexaxisx) Float op('force_field').par.Vortexaxisx
Default:
0
Range:
-1 to 1
Vortex Axis Y (Vortexaxisy) Float op('force_field').par.Vortexaxisy
Default:
1
Range:
-1 to 1
Vortex Axis Z (Vortexaxisz) Float op('force_field').par.Vortexaxisz
Default:
0
Range:
-1 to 1

Attractor

Attractor / Mask (Hdrattract) Str op('force_field').par.Hdrattract

Read only.

Default:
"" (Empty String)
Attract Strength (+in/-out) (Attractstrength) Float op('force_field').par.Attractstrength
Default:
0
Range:
-50 to 50
Attract Radius (Attractradius) Float op('force_field').par.Attractradius
Default:
1.5
Range:
0.001 to 20
Attract Center (Attractcenterx) Float op('force_field').par.Attractcenterx
Default:
0
Range:
-100 to 100
Attract Center Y (Attractcentery) Float op('force_field').par.Attractcentery
Default:
0
Range:
-100 to 100
Attract Center Z (Attractcenterz) Float op('force_field').par.Attractcenterz
Default:
0
Range:
-100 to 100
Mask Radius (0 = off) (Maskradius) Float op('force_field').par.Maskradius
Default:
0
Range:
0 to 20
Mask Softness (Masksoftness) Float op('force_field').par.Masksoftness
Default:
0.3
Range:
0.01 to 4
Mask Center (Maskcenterx) Float op('force_field').par.Maskcenterx
Default:
0
Range:
-100 to 100
Mask Center Y (Maskcentery) Float op('force_field').par.Maskcentery
Default:
0
Range:
-100 to 100
Mask Center Z (Maskcenterz) Float op('force_field').par.Maskcenterz
Default:
0
Range:
-100 to 100