Video summary
Touchdesigner Tutorial - Versatile Particles System
Main summary
Key takeaways
Summary
The tutorial explains how to build a flexible particle system in TouchDesigner using TOPs (texture operators). Particle data is stored and processed as images, allowing the work to run primarily on the GPU rather than the CPU. The presenter notes that the system can emit particles from 3D models—including scanned or Gaussian-splat-derived data—and can be combined with a prior point-cloud technique.
Core idea
- Treat each particle as a point whose X, Y, and Z coordinates are encoded in the red, green, and blue channels of a pixel.
- A feedback loop updates the position image every frame. Adding the same values repeatedly produces linear movement; adding noise or other changing values creates less predictable motion.
- Without a lifetime system, particles would continue moving indefinitely. A per-particle life value determines when each particle resets to its original position.
- Because each pixel represents a different particle, the system can give particles different lifetimes, forces, colors, and emission conditions.
- Black-and-white masks can limit which particles are emitted or which forces affect them.
Main construction workflow
-
Create the source points and initial data
- Import a 3D model, align it as needed, and use a Sprinkle SOP to place points on its surface. The tutorial uses 500,000 points as an example.
- Convert the point data from SOPs to CHOPs and then to a TOP, with the data arranged in a square RGB image.
- Set up initial position, emission-mask, and color images. The tutorial begins with a white emission mask and a gray color image.
-
Set up instancing
- Create geometry for the particle instances and configure it to read position and color from the corresponding TOPs.
- Use the RGB channels for the instance translation coordinates and color.
- This provides a way to visualize the particle data as points or geometry.
-
Build the position feedback loop
- Create a Feedback TOP loop to retain the previous frame’s particle positions.
- Use a keyboard input to reset the feedback when needed.
- Add force data to the previous positions each frame. The example uses a Noise TOP; the noise is configured to depend on the position data, then combined with the existing position image.
- The presenter emphasizes that the system’s behavior comes from repeatedly accumulating small changes in the loop.
-
Add particle lifetimes
- Build a separate life image in which each particle has its own countdown.
- The demonstrated approach starts with a randomized life duration, then subtracts an increment each frame through a feedback loop.
- A threshold determines when a particle’s life has ended. The resulting life state controls whether the particle continues to be affected by forces or resets to its original position.
- Combine the life state with the emission mask so particles can be prevented from appearing in disallowed areas.
- The example uses a lifetime value of 300 and an 8-bit threshold mask in part of the setup.
-
Apply and combine forces
- Use position-based thresholds to restrict forces to selected regions—for example, affecting only particles above a certain height.
- Soften thresholds to avoid abrupt boundaries.
- Forces can also affect particle color, not just position.
- A Point Transform TOP can apply operations such as rotation and scale, and can use a second input as a mask.
- Multiple forces can be accumulated to create more complex behavior.
-
Add rotation and scale
- To orient particles along their motion, compare each particle’s current position with its position from the previous frame. Their difference gives the direction and magnitude of movement.
- Feed that direction into the instance rotation-to-vector controls.
- Scale can be based on movement speed, so faster particles become longer or larger.
- Scale can also vary over a particle’s life. The tutorial uses a lookup table driven by life data, with curves that can make particles shrink toward zero as they die.
-
Control where particles emit
- Use thresholds on the position data to select emission regions, such as a particular coordinate range.
- For radial selection, subtract a chosen center position, calculate the resulting vector length, and threshold that distance.
- Noise can also be used to create irregular emission patterns.
- An image texture can serve as an emission mask. In the demonstrated example, an RGB key makes particles emit from the brighter regions of a model’s texture.
Additional notes
- The tutorial’s examples use a simple render setup with a camera, lights, and a Render TOP. An SSAO TOP is suggested as an optional way to add approximate contact shadows.
- The presenter mentions that a prebuilt, performance-oriented version of the particle component is available to Patreon contributors.
- The tutorial explains the underlying logic rather than presenting only a ready-made component.
Speakers and sources mentioned
Speaker
- The video’s presenter and narrator from the B2BK channel. No other speaking voices are clearly identifiable in the subtitles.
Sources and works referenced
- Derivative and Marcus Hegman — an older “Napoleon” tutorial cited as an early example of this particle technique.
- Supermarket Salad — a life-related component or example mentioned by the presenter.
- yfx lab — POP example projects cited as demonstrations of what the newer POP family can do.
- The presenter’s earlier point-cloud manipulation tutorial and a previously shared particle-system component on Patreon.
Rate this summary
Your feedback will help improve summaries.
Improve this summary
Reprocess with a stronger model when the summary feels incomplete or inaccurate.
Translate summary in another language
Ask questions to this video
Chat for follow-up questions, clarifications, and source-backed answers.