- Geometry
- Solvers
Force Field
Purpose
Section titled “Purpose”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.
Inputs and outputs
Section titled “Inputs and outputs”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.
Controls
Section titled “Controls”- 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
-
geometrypoints
Outputs
-
velocityvelocity field -
previewlines -
preview_cdlines
Parameters
Section titled “Parameters”Force Field
op('force_field').par.Autorebuild - Default:
On- Options:
- Off, On
op('force_field').par.Rebuildnow - Default:
None
op('force_field').par.Simulate - Default:
On- Options:
- Off, On
op('force_field').par.Resetsolver - Default:
None
Preview
op('force_field').par.Previewshow - Default:
On- Options:
- Off, On
op('force_field').par.Previewdensity - Default:
12- Range:
- 2 to 48
op('force_field').par.Previewlength - Default:
0.6- Range:
- 0 to 2
Outputs
op('force_field').par.Hdrforceout Read only.
- Default:
"" (Empty String)
op('force_field').par.Velocityname - Default:
force_vel
Domain
op('force_field').par.Hdrdomain Read only.
- Default:
"" (Empty String)
op('force_field').par.Resolution - Default:
48- Range:
- 8 to 256
op('force_field').par.Boundsize - Default:
4- Range:
- 0.1 to 20
op('force_field').par.Boundcenterx - Default:
0- Range:
- -100 to 100
op('force_field').par.Boundcentery - Default:
0- Range:
- -100 to 100
op('force_field').par.Boundcenterz - Default:
0- Range:
- -100 to 100
op('force_field').par.Rebuild - Default:
None
Forces
op('force_field').par.Hdrtime Read only.
- Default:
"" (Empty String)
op('force_field').par.Time - Default:
0- Range:
- -100000 to 100000
op('force_field').par.Timescale - Default:
1- Range:
- -10 to 10
op('force_field').par.Hdrwind Read only.
- Default:
"" (Empty String)
op('force_field').par.Windx - Default:
0.25- Range:
- -100 to 100
op('force_field').par.Windy - Default:
0- Range:
- -100 to 100
op('force_field').par.Windz - Default:
0- Range:
- -100 to 100
op('force_field').par.Curlamplitude - Default:
0.8- Range:
- 0 to 20
op('force_field').par.Curlfrequency - Default:
0.8- Range:
- 0.001 to 20
op('force_field').par.Curloctaves - Default:
2- Range:
- 1 to 4
op('force_field').par.Curldriftx - Default:
0.15- Range:
- -20 to 20
op('force_field').par.Curldrifty - Default:
0.08- Range:
- -20 to 20
op('force_field').par.Curldriftz - Default:
0.04- Range:
- -20 to 20
op('force_field').par.Maxspeed - Default:
25- Range:
- 0 to 1000
Vortex
op('force_field').par.Hdrvortex Read only.
- Default:
"" (Empty String)
op('force_field').par.Vortexstrength - Default:
1.5- Range:
- -50 to 50
op('force_field').par.Vortexradius - Default:
1.2- Range:
- 0.001 to 20
op('force_field').par.Vortexcenterx - Default:
0- Range:
- -100 to 100
op('force_field').par.Vortexcentery - Default:
0- Range:
- -100 to 100
op('force_field').par.Vortexcenterz - Default:
0- Range:
- -100 to 100
op('force_field').par.Vortexaxisx - Default:
0- Range:
- -1 to 1
op('force_field').par.Vortexaxisy - Default:
1- Range:
- -1 to 1
op('force_field').par.Vortexaxisz - Default:
0- Range:
- -1 to 1
Attractor
op('force_field').par.Hdrattract Read only.
- Default:
"" (Empty String)
op('force_field').par.Attractstrength - Default:
0- Range:
- -50 to 50
op('force_field').par.Attractradius - Default:
1.5- Range:
- 0.001 to 20
op('force_field').par.Attractcenterx - Default:
0- Range:
- -100 to 100
op('force_field').par.Attractcentery - Default:
0- Range:
- -100 to 100
op('force_field').par.Attractcenterz - Default:
0- Range:
- -100 to 100
op('force_field').par.Maskradius - Default:
0- Range:
- 0 to 20
op('force_field').par.Masksoftness - Default:
0.3- Range:
- 0.01 to 4
op('force_field').par.Maskcenterx - Default:
0- Range:
- -100 to 100
op('force_field').par.Maskcentery - Default:
0- Range:
- -100 to 100
op('force_field').par.Maskcenterz - Default:
0- Range:
- -100 to 100