Docs 3D and Particles

Particles2D_POP

A 2D particle simulation as a POP loop: a source image emits particles, curl noise and wind effectors steer them with lookup ranges, trails stretch them, and the loop rides out as points for your own render.

⁂ 3D and Particles ◆ Patreon:Base

This tool unlocks with Patreon. It installs through the same picker as everything else and unlocks with the Patreon Base tier or higher, connected from inside TouchDesigner. Everything else in the toolkit stays free and MIT, and the membership is what keeps that work moving.

Join on Patreon → How unlocking works →

What it is

Particles2D_POP is a particle simulation built on POPs, so it runs on the GPU and hands you points. A source image decides where particles are born; each one gets a life, a mass and a drag, and two effectors move it: a curl noise field with its own speed and a wind with variance, each read through an image lookup so a texture can steer the flow. Trails stretch the points along their motion. What comes out is the point cloud, ready for a Render TOP with your own material, or for any POP that takes points.

It is a member of the FNS operator family: pick it from the FNS tab of the OP Create dialog and it lands as one node.

Inputs and output

  • in_loopin (POP): optional; points to carry into the loop.
  • in_source (TOP): the image particles are born from.
  • in_effector_curl (TOP), in_effector_wind (TOP): optional images that steer the curl and wind effectors through their lookups.
  • out_loopout (POP): the simulated points.

Parameters

Custom

ControlType / defaultWhat it does
Particles
Start PulseStartpulse button Start the simulation.
Maximum ParticlesMaxparticles number921600 How many particles can live at once.
BirthrateBirthrate number50000 How many particles are born per second.
LifeLife number2 How long a particle lives, in seconds.
Life VarianceLifevariance number0.5 Random variation of the life of each particle.
Initial MassInitmass number2 Mass of a new particle: heavier particles react less to forces.
Initial DragInitdrag number1 Drag of a new particle: how quickly it loses speed.
Velocity DampingDamping number0.1 Slows every particle down each frame.
SpeedSpeed2 number1 Overall speed of the simulation.
Trails
LengthLength number0.037 How far trails stretch the points along their motion.
Reset PulseResetpulse button Clear the simulation.

Curl

ControlType / defaultWhat it does
CurlCurl xyzw0.5 Strength of the curl noise field on each axis.
SpeedSpeed xyzw0.04 How fast the curl noise field moves.
Open Curl NoiseOpennoise button Open the curl noise generator to edit it.
Lookup
RgbRgb menuLuminance Which channel of the curl effector image is read.
Options: Luminance, Red, Green, Blue, Alpha, RGB Average, RGBA Average, RGB Maximum and 3 more
NormalizeNorm on / offoff Normalize the curl effector image before it is remapped.
FromrangeFromrange number0 The input range of the curl effector image.
TorangeTorange number0 The range the curl effector image is mapped to.
Exponent ValueExpval number1 Exponent applied to the curl effector image: 1 is linear.
UpdateUpdatecurl on / offon Apply the curl effector.

Wind

ControlType / defaultWhat it does
WindWind xyzw0 Wind force on each axis.
VarianceWindvariance xyzw0 Random variation of the wind on each axis.
Wind Variance SpeedWindvariancespeed xyzw0 How fast the wind variation changes.
Open VarianceOpennoise2 button Open the wind variance noise generator to edit it.
Lookup
RGBRgbwind menuRGBA Average Which channel of the wind effector image is read.
Options: Luminance, Red, Green, Blue, Alpha, RGB Average, RGBA Average, RGB Maximum and 3 more
NormalizeNormwind on / offon Normalize the wind effector image before it is remapped.
From RangeFromrangewind number0 The input range of the wind effector image.
To RangeTorangewind number0 The range the wind effector image is mapped to.
Exponent ValueExpvalwind number1 Exponent applied to the wind effector image: 1 is linear.
UpdateUpdatewind on / offoff Apply the wind effector.

Edit this page on GitHub →