Skip to main content

The Interactive & Immersive HQ

TouchDesigner Tutorial: POPs in TouchDesigner

TouchDesigner Tutorial 16: Working with TouchDesigner POPs

Join The HQ PRO: Get a 7-Day Free Trial!

Join The Interactive & Immersive HQ PRO and get access to over 300+ hours of structured, professional course content, 200+ hours of Accelerator Session masterclass recordings, and access to a private mentorship community with experienced pros like Matthew Ragan and Elburz Sorkhabi.

In 2026, we now have a new operator family inside of TouchDesigner that builds on the ideas we looked at in the last section, where we were looking at SOPs and how those are used for 3D inside of TouchDesigner.

This new family of operators is POPs (Point Operators). They take SOPs and accelerate them on the GPU, which means they can scale and be run in real time much more effectively than SOPs can. Even with just a few nodes, you can make really compelling 3D environments, content, and systems with POPs.

In this example, we’re going to import a point cloud of a banana, hook it up to a particle system, add some noise and some feedback, and then even give it a fun plexus effect, all with just a handful of nodes.

The difference between POPs and SOPs is that POPs are all running on the GPU, whereas SOPs run exclusively on the CPU. SOPs can get really slow and tax your system very quickly.

You might try to do something with a Particle SOP and find that after 5,000 or 10,000 particles, your frame rate starts to drop. With POPs, and all of the advancements in GPUs that we have now, you’re going to see how far we can push even basic laptops.

Getting Started with our POPs Example

To get started, we’re going to use something called a Point File In POP. This is a really fun operator because it works similarly to a Movie File In TOP, except that it’s built to take in these special files that have point cloud data inside of them.

If you expand the parameters, you should be looking at a default file called banananorm.ply, and this is found inside of the TouchDesigner samples folder. By default, it’s also going to have the positions, the normals, and the colors selected. You can always click on the different triangles on the right side and see all of the different attributes inside of this file.

This single PLY file is holding XYZ positions, Normal X, Normal Y, and Normal Z. If you’re new to 3D, you can think of a normal as simply which direction a point is pointing in 3D space. Is the point pointing up, down, on the X axis, or across the Y axis? That’s what our normal represents, and it’s used a lot for lighting calculations.

You can also see we have RGB and A, so we have colored points as well. All of these are already mapped for us, so we don’t have to stress too much.

The next thing we’re going to do is plug the Point File In POP into a Particle POP.

Particle POP has some features that are shared with Particle SOP, but a lot of it is quite different. 

The first thing we’re going to do is start turning up the amount of points, because that’s one of the most valuable and fun things about POPs.

If you middle-click on the Particle POP, you should have 100 points in existence out of a maximum of 1,000. Let’s turn this up much higher.

Under the Particles page of parameters, set the Maximum Particles to 10,000.

The Birth Rate is measured in particles per second, so set that to 1,000 per second. The life expectancy parameter is already set to 10 seconds, so if you middle-click again, you’ll see that this fills all the way up to 10,000 points.

You can also see the cook times here. We’re at 0.22 milliseconds of CPU cook time and 0.08 milliseconds of GPU cook time.

If you push the Maximum Particles parameter to 50,000 particles and increase the birth rate to 5,000, the amount of processing power you’re using stays relatively the same. That’s really the beauty of working with POPs. 

Adding a Fun Plexus Effect

Now that we’ve got a lot of points on the surface of this banana, the next thing we’re going to do is add a fun plexus effect. It used to require a bit of GLSL or some really complicated TOP networks, but now with POPs we can create it using a Proximity POP.

Add a Proximity POP operator to your network and plug your Particle POP into it. Zoom into the banana in the Proximity POP so you can see it up closer.

Go into the parameters and start turning the Maximum Distance down.

As you reduce it, fewer and fewer points become connected, making it much easier to understand what’s happening. From there, you can slowly increase it again.

You can also experiment with the rest of the parameters. You can create fewer short connections, more long connections, or increase the Maximum Lines Per Point. Right now, each point only gets three line connections, but if you increase that to five, you start to get this mesh being formed in real time.

The exciting part is that we’re emitting 50,000 particles while simultaneously calculating this plexus effect and generating all of this connection geometry, and we’re still running at 60 FPS.

Adding Movement

One of the really fun things about Particle POP is the ability to create a feedback loop directly with itself. If you’ve watched fluid simulation tutorials or other particle simulations, you’ve probably seen the idea of adding a tiny amount of noise every frame and feeding that result back into the particle positions to create really nice organic movement.

Particle POP makes this very easy with the Target Feedback Loop POP parameter.

So, right-click on the wire in between the Particle POP and the Proximity POP, click Insert Operator, and create a Noise POP.

Go back to your Particle POP, and click on it so that its parameters appear on the right. Then drag the Noise POP onto the Target Feedback Loop POP parameter.

At first, everything goes a little crazy because the amount of noise is too high. When you’re working with feedback loops, you always want to add only a tiny amount of force into the system.

In the Noise POP, turn the amplitude parameter all the way down to about 0.006.

You can see it starts to resemble a space nebula type of effect. The different noise types also have very different characteristics and visualizations, so it’s fun to experiment and compare them.

Adjusting the Parameters of the Plexus Effect

Now that we have this movement, we can return to our plexus effect in the Proximity POP.

Since the particles are no longer constrained to the shape of the banana, we may want to adjust some of these parameters again.

Increase the Maximum Distance, then increase the Minimum Distance as well (because you often don’t want points that are right beside each other connecting; it ends up making things a little messy).

Continue playing around with these settings to your heart’s content.

But with just these four nodes, we’ve imported a 3D banana with all of its attributes, generated 50,000 particles from it, created a simple feedback loop using a tiny amount of Simplex 4D noise to give it this organic movement, and connected everything together with a plexus effect.

All of this is running in real time at 60 FPS on my laptop. That is the power of POPs.

Let’s crank up the particle system to see how far we could push it.

Go back to the parameters of the Particle POP. Change the Maximum Particles to 100,000, and increase the birth rate to 10,000 particles per second.

Now you’ve doubled the number of particles, but everything is still running at 60 FPS with our feedback loop and our plexus effect.

If you have a powerful GPU, you can push this into the millions.

If I set the maximum particles to one million and birth rate to 100,000 particles per second, it does start to slow down my laptop. Feel free to play around with it and see how far you can push it to find the limits of your own system.

That’s one of the best things about POPs: just how far you can push these real-time 3D systems.

Further Learning

If you’re interested in learning more about POPs, check out our POPs Fundamentals 101 and 201 courses, where we go much deeper into the topic. The example we covered in this tutorial is about as simple as we can make it, but once you start getting into POP attributes and attribute processing, things become much more powerful.

One Final Trick

If I can leave you with one trick, it’s to think about each POP as an operator that’s manipulating an invisible spreadsheet.

A good way to visualize this is by adding in a POP to DAT.

These spreadsheets of attributes are what we’re working with in every single operator. If you start thinking, “I have this spreadsheet with all these different attributes and data points. How do I want to process each one? How do I compare them? How can I take one attribute and use it to influence another?” then you’ll understand the mindset behind many POP workflows.

Wrap Up

So that’s a quick introduction to POPs, the newest operator family, which everyone is very excited about. 

In our next tutorial, we’re going to look at how to output content so that whatever you’re making, you can display it on screens or projectors.

About The Author
Picture of Elburz Sorkhabi

Elburz Sorkhabi

I possess a deep knowledge in many professional fields from creative arts, technology development, to business strategy, having created solutions for Google, IBM, Armani, and more. I'm the co-founder of The Interactive & Immersive HQ. Yo!