Expresso: Controlling speed on ThinkingParticles


Hi all,

I’m trying to figure out how I might set up a particle emitter system using TP so that EACH particle that is birthed from a sphere moves at high speed at first and then slows down the farther it travels from its source, at which point a wind or gravity force carries it off in new linear direction. I was playing around with the Texture & Light parameters in the PMatterWaves node, along with some forces nodes (Gravity, Wind, etc) but not really getting the results I’m after.

Another potential solution I figure might work would be some kind of setup based on each particles’ distance traveled, where a particle can only be affected by an extraneous force after it has traveled past a distance threshold, though I don’t know how to set this up either.

Link here to a downloadable file where I’m trying number of different things (but again, not quite getting the results I’m after.) Hoping someone can lend some insight.

Many thanks!



You could store the original emission position in a data channel and slow the particle down according to the distance to that. Or if the particles all travel at the same speed use the particle age for this.


Hi Srek,

Many thanks for the reply!
I was able to accomplish what I needed using the PAge node , so thanks a lot for the suggestion. It’s still not entirely clear to me what all the various parameters of this node are useful for, and also how the functionality differs from PAge output port on GetData node. When I get a little free time I’ll be looking for tutorials on the topic.

I’d like to try the other method you suggested as well, though I’m still somewhat of a novice with Xpresso so I only have the faintest clue on how to begin setting that up. I imagine some basic math nodes would be employed here (Compare node, for example)? Would you happen to know of any tutorials that shed light on the topic?

Thank you again!


please be aware that from a physics pov you have a bit of a problem with what you want. The particles are basically balistic after emission, this means that there is no force connecting them to their origin in any way that you could reduce. This means you have to create a force that stops them over time/age/distance. At the same time you want another force to push them in a specific direction. These two forces will act against each other. You should make realy clear to yourself what you expect to happen exactly, otherwise you won’t be able to create a satisfying solution.
Please find attached an example on how to use data channels to store initial values and evaluate them.
I haven’t kept track of what is available regarding Xpresso/TP Tutorials, sorry.
ReduceVelocityOverDistance.c4d (127.5 KB)