POPX

Flow

v1.3.0
Simulations

Summary

Flow is a GPU-accelerated 3D fluid solver that simulates gaseous fluids using a 3D texture-based approach. This operator creates smoke, fire, and atmospheric effects by solving the Navier-Stokes equations for incompressible flow on the GPU. The simulation operates in a volumetric grid where velocity and substance density are stored as 3D textures, allowing for real-time interactive fluid dynamics.

The solver supports substance injection from POP point sources, volumetric source inputs, and various forces including buoyancy, gravity, external force fields, and optical flow. You can control fluid behavior through viscosity (thickness), vorticity (swirling motion), pressure iterations (incompressibility accuracy), and dissipation rates for both velocity and substance density. The simulation maintains mass conservation through a pressure projection step and supports collision boundaries and obstacles defined via 3D textures.

Flow optionally generates particle systems that are advected by the fluid velocity field, creating wispy smoke trails or fire ember effects. Particles can spawn from density regions and inherit color from the substance field with customizable lifespans and variance. The simulation outputs velocity, substance density, and temperature as 3D textures suitable for volume rendering or further processing, making it ideal for smoke plumes, fire effects, atmospheric disturbances, and abstract fluid art.

Parameters

ResetReset
Pulse to clear simulation and reset to initial state.
Time ScaleTimescale
Simulation speed multiplier per frame (higher = faster evolution).
Time StepTimestep
Read-only display of effective timestep, equal to 1/FPS of TouchDesigner.
Simulation BoundsSimbounds
Physical size of simulation volume in world units.
Simulation BoundsSimboundsxSimulation BoundsSimboundsySimulation BoundsSimboundsz
Max Axis ResolutionMaxaxisres
Maximum voxel resolution for longest axis (other axes scale proportionally).
PrecisionPrecision
Texture precision for simulation data.
16-bit float32-bit float
Simulation ResolutionResolution
Read-only display of actual grid resolution.
Simulation ResolutionResolutionxSimulation ResolutionResolutionySimulation ResolutionResolutionz
Velocity DissipationVeldissipation
Rate at which velocity decays over time (0 = no damping, 1 = instant decay).
Pressure IterationsPressureiters
Number of iterations for pressure solve (higher = more accurate incompressibility).
ViscosityViscosity
Fluid thickness controlling resistance to flow (0 = inviscid, higher = thicker).
Diffusion IterationsDiffusioniters
Solver iterations for viscosity diffusion (only active when viscosity > 0).
VorticityVorticity
Vorticity confinement strength to restore rotational motion (creates swirling detail).
Substance DissipationDissipation
Rate at which substance density fades over time (higher = faster fade).
Substance Color DissipationColordissipation
Per-channel dissipation rates for RGB color (allows colored smoke to fade unevenly).
Substance Color DissipationColordissipationrSubstance Color DissipationColordissipationgSubstance Color DissipationColordissipationb
InjectInject
Enables injection of substance into the simulation.
Injection POPInjectionpop
Reference to a POP containing points to use as injection points when no first input is connected.
Inject PositionInjectpos
Default injection position when no input POP connected and no P attribute present.
Inject PositionInjectposxInject PositionInjectposyInject PositionInjectposz
Inject ScaleInjectscale
Scale multiplier for injection area. Uses 'scale' attribute if present in injection POP.
Inject GainInjectgain
Amount of substance added per injection point. Uses 'gain' attribute if present in injection POP.
Inject StrengthInjectstrength
Strength of force applied at injection points. Uses 'strength' attribute if present in injection POP.
Inject TemperatureInjecttemp
Temperature value for injected substance. Uses 'temperature' attribute if present in injection POP.
Inject ColorInjectcolor
Color of injected substance. Uses 'Cd' attribute if present in injection POP.
Inject ColorInjectcolorrInject ColorInjectcolorgInject ColorInjectcolorb
Add SourceAddsource
Enables continuous source emission into simulation.
Substance GainSubstancegain
Multiplier for substance density from 3D texture source. Enabled when Add Source is on.
Force StrengthForcestrength
Multiplier for force computed internally from change in density. Enabled when Add Source is on.
Temperature GainTemperaturegain
Multiplier for temperature from alpha channel of 3D texture source. Enabled when Add Source is on.
Apply BuoyancyApplybuoyancy
Enables temperature-based buoyancy force (hot rises, cold sinks).
Buoyancy StrengthBuoyancystrength
Overall scale for buoyancy force magnitude.
Gas WeightGasweight
Density-based downward force (creates heavy smoke effect).
Cooling RateCoolingrate
Rate at which temperature decreases over time.
ExpansionExpansion
Volume expansion from heating (creates outward push).
Apply GravityApplygravity
Enables uniform gravity force on velocity field.
GravityGravityvector
Gravity direction vector (default: 0, -1, 0).
GravityGravityvectorxGravityGravityvectoryGravityGravityvectorz
Gravity StrengthGravitystrength
Multiplier for gravity force magnitude.
Surface LevelSurfacelevel
Y-position where gravity begins to take effect.
Add External ForceAddexternalforce
Enables custom 3D vector field force from texture.
External Force TOPExternalforcetop
3D texture containing RGB velocity force vectors.
External Force StrengthExtforcestrength
Multiplier for external force magnitude.
Add Optical Flow ForceAddopticalflowforce
Enables force from 3D optical flow texture.
Optical Flow TOPOpticalflowtop
3D texture input for optical flow motion vector computation.
Optical Flow Force StrengthOptiflowforcestrength
Multiplier for optical flow force magnitude.
Bounds TOPBoundstop
Optional 3D texture defining custom boundary regions.
Show BoundsShowbounds
Visualizes boundary regions in output.
Obstacle TOPObstacletop
3D texture defining solid obstacle regions (white = solid).
Render ObstacleRenderobstacle
Includes obstacle visualization in output.
Obstacle OpacityObstacleopacity
Opacity multiplier for rendered obstacles.
AdvectAdvect
Enables particle system advection by fluid velocity field.
Solver ModeSolvermode
Switches between Simple and Advect modes.
SimplesimpleAdvectadvect
Target Particles Update POPParticlesupdatepop
Reference to a POP node downstream in the network.
Advection Step ScaleAdvectionstep
Multiplier for particle advection speed.
Spawn From DensitySpawn
Spawns particles in regions with substance density above threshold.
Number Of ParticlesNumparticles
Maximum particles spawned.
Density Resolution Scale (Fraction)Densityscale
Fraction of simulation resolution used for the density field when spawning particles (lower = faster, less precise).
Density ThresholdThreshold
Minimum substance density required for particle spawning.
SeedSeed
Random seed for particle spawn positions.
Max AttemptsMaxattempts
Maximum spawn attempts per frame before giving up.
Enable Particle LifeEnableparticlelife
Enables finite particle lifespans with automatic death.
Life SpanLifespan
Base lifespan in seconds before particle dies.
Life VarianceLifevariance
Random variation added to base lifespan.
SeedLifeseed
Random seed for lifespan variance.
Lookup Substance ColorLookupcolor
Particles inherit color from substance field at spawn position.
Channel Mask (RGBA)Channelmask
Selects which RGBA channels are sampled when looking up substance color.
Channel Mask (RGBA)Channelmask1Channel Mask (RGBA)Channelmask2Channel Mask (RGBA)Channelmask3Channel Mask (RGBA)Channelmask4
From LowFromlow
Input range minimum for color remapping (RGBA).
From LowFromlow1From LowFromlow2From LowFromlow3From LowFromlow4
From HighFromhigh
Input range maximum for color remapping (RGBA).
From HighFromhigh1From HighFromhigh2From HighFromhigh3From HighFromhigh4
To LowTolow
Output range minimum for color remapping (RGBA).
To LowTolow1To LowTolow2To LowTolow3To LowTolow4
To HighTohigh
Output range maximum for color remapping (RGBA).
To HighTohigh1To HighTohigh2To HighTohigh3To HighTohigh4
Match Bounds To T3DMatchtot3d
Matches particle advection bounds to the 3D texture input dimensions.
Free Extra GPU MemoryFreeextragpumem
Free memory that has accumulated when output memory has grown and shrunk.

Inputs

Input 0POP
Injection
Input 1TOP
Source
Input 2POP
Particles In

Outputs

Output 0TOP
Substance
Output 1TOP
Velocity
Output 2TOP
Temperature
Output 3POP
Particles Out