Thinking Particles – TPgroups & Events

April 6, 2011

In this tutorial Simon will show you how to work with events and particle groups to trigger different behaviours inside thinking particles with Cinema 4D.

Download the Scene File


About Simon
Simon Homedal is a motion designer/3d artist at Man vs Machine before that he was a student at hyper island in Sweden. You can see his work on his site

Tutorial Focus:  ,
Software:  ,

  • first ๐Ÿ™‚

  • Sweet! Keep them coming Simon!

  • Please stop saying “It’s simple”. Clearly it’s not or everyone would do it.

    • a lot of this stuff is pretty straightforward, but you need someone to show it to you first. And then you can experiment. I’m thinking that software manuals should be better at explaining basics, and showing examples. Thanks Simon for sharing your knowledge.

    • Thanks for your input Macitek and Nate! ๐Ÿ™‚ It can be tricky when u first get into tp / xpresso. but give it some time and try it again another day, and with time u will understand it. I havent used tp for more than a few months so I know that its hard to get into, it helps if you are exited about learning it. Its not for everyone

  • thx for HD ;>

  • Thanks! =)

  • When Simon says it’s simple, I think he means it is like seeing a Rorschach test.

    If you do not at first ‘see’ the intended image it appears indecipherable. Once you do see the intended image it is like seeing your own name in print. And you can no longer unsee it.

    Once the purpose of the Xpresso path becomes clear, you will not understand why you never got it in the first place.

  • Thanks Simon!

  • Nice one guys, Keep the TP tutorials coming!

  • Ho man, so hard to follow you, I almost fell sleep. You should try to do this thing like Nick’s, cheers!!

  • Great stuff Simon! Thanks for your time of explaining this!
    Hats of to the Gorilla for having Simon ‘on the blog’ too ๐Ÿ˜‰ You start to have quite a crew who serve up great tutorials!
    Keep it up man!

  • Nice work, thanks for explain and the tutorial.

  • YiannZ (aka mpoulis) April 6, 2011 at 8:48 pm

    At last!!! First time I clearly understood how TP works!!! Although Xpresso knowledge is needed to follow through, this is a TP tutorial and IMHO should focus on TP as Simon thankfully did! Great tutorial!
    For those having difficulties with Xpresso or want to start learning it, take a look at
    Thanks again Simon and Nick !!!

  • Great tutorials, Simon! Between you and Nick, I’ve learned a ton of useful and fun stuff to use in C4D. You guys turned what once looked like a foreboding program into a playground where cool stuff is tons of fun to make.

  • Simon sir you are Great

  • Amazing tutorial.
    Keep tp tuts coming!!!
    love them

  • is this the problem with my speakers or the actual sound is low?

  • Awsome! Thanks so much!

  • Hi Simon,

    The most interesting feature in your tutorial – for me – is : using Mograph features to generate shapes on TP system ! I mean, it’s the first time I saw a TP tutorial without the use of TP Geometry (I didn’t imagine that C4D can generate something TP groups to MOGRAPH cloner or tracer) ! So well done, man !
    Thank you…

    • Im glad that u noticed that. Im gonna make a tutorial for mograph / tp workflow. its interesting, u can go back an forth how u want. to use mograph and tp for what they are good for. if u check out my chiller ident on my page. its all made with TP then used mograph as another layer of animation ontop of the TP. thats probably gonna be the topic of my next tutorial. ๐Ÿ™‚ so stay tune for that.

  • One thing I don’t like about TP is having to just know how to initiate each of the different generator types. The way you initiated pborn is completely different than Pstorm, which is fine…but it’s confusing sometimes(depending on the generator) just to get the first initial particles to be birthed. I’ll have to reference the scene I created with this tutorial probably 4-5 times before I’ll ever just remember how and why PsetData and PSurfacePosition nodes need to be used…

    • Hey Chris.
      I know exactly what u mean, they work abit differently, it took me some time to figure that out aswell, but u can just look what ports are available for the generator and if u cant set the position on the left side of the node, the only otherway is to use the setdata-node. but I agree that the inconsistency is abit confusing sometimes. however becouse the pstorm and the pborn are ment for different uses i guess it kind of make sense if u think about it ๐Ÿ™‚


  • Hey Simon,
    Thanks man… learned a lot and pretty easy for a first time expresso user.
    I’m trying to keyframe when the particles actually start and stop being created. I tried to set keys for the shot of pborn from zero to 1 across time but it will not let me…
    any suggestions on how to do this in expresso maybe?

    • hey Johnny.

      I dont see why thats not working for you, weird. it works for me, another way to birth particles is to use a matrixobject, if u for example set it to linear aligment and set the offset transform to be brithed in the same spot or onto a object, as thinking particles u can just animate the count inside the matrixobject. thats a workaround atleast

    • … or u can use user data(boole) and plug that into the on slot of the emitter. then just animate the userdata. might be your best option to be honest.

    • awesome… thank you, that worked perfectly

  • I appreciate the tutorials for TP, because I wouldn’t even dare attempt using TP on my own; too confusing! I found myself saying, “How did he know to use that?” or “How do you figure out that you have to connect it that way?” during the tutorial. Sometimes I feel like there is some mystical place/resource that these guys (Simon, Mike the Monkey, Nick, etc.) have access to that the rest of us do not… or they spend every waking moment playing with C4D. I love my family too much to do the latter.

    • :)… Nah! All anybody does with Thinky Particulates is pretty much exactly what they do with anything else concerned with any 3D package – start off first just laying down the Xpresso as somebody else shows them first.

      That’s it. That’s all. There’s no magic trick. You don’t have to have graduated from Hogwarts, first.

      It’s practice with it, that’s all. The more you use it the more chance what you’re doing with it or, more accurately – attempting to do with it – sinks in.

      Starting out with it’s the hardest part – other than explaining it. At the end of the day turns out its far easier to just do with it than relay why you’re doing what you are doing to someone else.


  • Hi Simon
    Very useful tutorial. Thank you. PDeflector has an exit port called Event Position, so no need to work with a GetData node to find out the position of the falling particles when they collide with the floor. Just connect directly to PSetData. Rendering the falling tracer with Hair Material only starts after frame 60 in my file, in your file only after frame 70. Any possibility to start the render of the tracer at frame 1?

    • oh had no idea about the event position but thats good to know. I’m kind of a beginner to TP, btw do you know if there is possible to change the substeps for TP collisions and stuff?about the tracer not rendering. dont really know what thats all about. Think its a bug or something. cuz it worked for me at first but then it stopped working. Try pulling down the amount of particles, or… use the sweapnurb;)

    • When using hair with tracer object, i use the add hair option not just the hair mat.
      Set the hair guides to “spline guides ” and hair root to “as guides”,then drag the hair mat. to the tracer and disable the hair object(red cross).
      This stops the render errors you get with the hair mat and tracer.
      No idea why this works, but it never fails for me.
      Also make sure you start the render from first frame, or it will mess-up the trace/hair.

    • P.S. you can see some of my hair/ tracer tests on vimeo (3 vids all use this method)

    • The traces are being inhibited until the first “attract” particle is produced.

    • I will download the scene and see what’s going on. Sounds like it’s not tracing the Pgroup All. Try adding tracer into Xpresso network.

    • Cheebachops
      Sorry to report that your trick didn’t work in this case.
      mr rayne
      That really was the problem. So I duplicated the deflector node system and replaced the floor with a small polygon behind the platonic, which gets hit by a particle early on. Of cours the resulting particles will rush straight to the endtarget. I hid those behind a curtain. Quick and dirty, but in the end only results count.

    • Just had a quick look at the file and it is a bug with the event and hair renderer.
      The tracer is tracing but is not returning a value to the hair until the deflector event.

      When i get time i’ll try a re-write of the network to see if there is a reason for this problem. May just have to create duplicate system with a switch.

      Anyone tried baking the sim?

    • Best I can figure is it’s conditional on ordered events, which has got to be something to do with the Xpresso somehow. I have the initial first stage done up as a separate file:

      As y’can see, everything’s tracing fine. Same with Stage two:

      Problem doesn’t hit until the deflect condition is introduced and two separate groups of particles are produced, stage 3:

      “Attracted” and “Floor”

      :)… It’s quite an interesting bug this. Shpuldn’t be making a single sods worth of difference as far as the tracers are concerned, they’re all tracing separate groups.

      @3dnov – Yeah, just slipping in a “mini-floor”, hiding the visibility and placing it directly adjacent with the platonic towards the back of it so the event gets triggered earlier does the trick right enough. Agreed. ๐Ÿ™‚ As fudges goes it does.

      Pretty sure its down to the dual-particle generation event “attract” and “floor” being produced as a consequence of the same Xpresso command. Basically they need splinting out: separate simultaneous commands instead of the one linked event. That mini chain is throwing the hair render module out.


    • Great to see people attacking this problem, this is the fun stuff!

    • :)… My favorite part of everything. I mean, lets face it. The pay in this line of work isn’t that great. Not the worst in the world by any means, but compared to what a copywriter makes for the comparable hours – it’s herding goat-turds up a hill. A steep one. Voluntarily. If we were actually smart, as human beings, we’d be selling crack.

      Noodling the problem though, its better than Sudoku. Only fun there is. The reason being their ain’t no other bugger dumb enough to be doing this in the first place.

      Proper, heartwarming stuff. Makes one proud to be… whatever.

      R ๐Ÿ˜‰

    • Speaky of which – found the problem. It’s the tracers. More accurately, attract trace.

      Disable the attract tracer. Everything else works from frame 1. Re-enable at any point before attract particles are produced – it prevents the other tracers working.

      Solution: delete “attract tracer” just add a new tracer, don’t re-name it. Drop appropriate particle group in link-box – solved.

      Everything traces from frame 1.

      :)… It’s always the last bladdy thing y’think to check and the first bladdy thing y’should.

      Thank you Simon – I seriously enjoyed that.


    • Nice one mr rayne.
      There are lot’s of glitches in c4d and they are just there to keep us thinking!!

      Can’t wait for the next one to surface.

    • :)… Yeah. As glitches go, its a bit of a weird one. Can’t off hand establish weather its C4D in general or just a glitch generated in Simon’s saved out scene file by C4D as a one off on his machine.

      Could be one or the other or a bit of both.

      Only real way to prove it is basically do the thing over from scratch, clean. See if ones own machine replicates the same fault without using any of the scene elements in Simons file.

      It’s a good thing to run into actually. Nothing here is any fault of Simons – the TP and Xpresso side of things are faultless. Nobody would ever sensibly assume this kind of result would happen but – for whatever reason – as far as the scene file as C4D saved it out on Simons machine goes what Cinema’s doing is reading the TP Group links in the Tracers and basically confusing the Tracers themselves with the order in which the actual particle groups are produced and generated.

      Thus the Tracers are basically acting in accordance with the conditions set in the Xpresso as far as the render engine is concerned. It’s as if C4D is treating them like the particle groups they’re linked to rather than seeing them as simply just the Tracers they’re supposed to be.

      When Simon originally worked up the scene and rendered it I doubt that version was anywhere near as nicely ordered and layed out as the version distributed for the tutorial – if Simons anything like everyone else what he most probably did afterwards was come back to that version of the scene file, re-name things logically and ordered everything out exactly as the final version is. Nice, neat, easy to follow.

      I don’t know – possibly something in the naming convention he chose for the scene objects might have caused it (or, at the very least, allowed it to become possible) – like I say, you’d really have to do the thing out clean from scratch to really find out.

      However, and whatever the case, as far as the distributed scene-file goes – taking out the original attract-tracer appears to break the spell.

      Damn fine tutorial though. Extremely useful, massively informative and very playable with.

      The completed scene-file’s nothing but a genuine bonus. It’s making one aware of possibly more than originally intended, but that of itself is actually a damnably useful thing to actually know. Would never have occurred to me a problem like this might crop up using tracers applied to TP like this.

      Being one up on knowing it can happen – that can save one a lot of seriously expensive time consumption further down the line at some point. You’d not expect the problem to be what it is unless you’d run into it before.

      This is one I haven’t, so I’m well pleased.

      Obviously, if push ever came to shove all one really has to do in a case like this (should the problem persist into render) is just split the render out into two parts – one with the bugged tracer disabled up until the point one frame before the whole chain works and then render the rest as a separate pass with the problem tracer active: stick ’em back together in post.

      I do love a new thing though…. Cheers me up something hellacious.

      Cheer’s, Mr Chops. All teh best with your stuff.


    • Hi mr rayn
      The problem with the tracer seems to be a genuine c4d problem. I have descovered the problem when I built the scene from scratch following Simons tutorial, later on I downloaded the scene from Simon and saw, that his file had the same problem. I have used other names than Simon and I also got the position information about the collision points directly from PDeflector. So, as you said, if you know, theat something causes problems, you just can work around.

    • Ah, well done. Good to know. I was thinking about being diligent and actually testing through, damnably relieved you’re good self did more than just think about that.

      Yup, definitely a good bug to be wise with. Just, indeed, have to work around….

      I liked you’re early-trigger solution. Definitely a keeper, looks like.


  • Hi Simon
    Thank you again. Reducing the number of particles didn’t help and creating sweep nurbs nearly sent me and my machine (new 8core 2,4GhZ) to sleep. Sorry, but I don’t understand the problem with the substeps. What do you try to achieve?

  • Awesome tutorial. Been doing some makeshift TP work with the presets. Didn’t get where any of the nodes and “other thingies” (exactly, thingies) where coming from. Now, thanks to you, I do.

  • so so.

  • Nice stuff, but is the scene file for C4D 12 only? I have 11.5 and cannot open it for some reason?


    • Hi simon sorry about that. dont have r11.5 installed. but if anyone has followed along with the tut maybe they can share there file? anyway try to follow along with the tut, and feel free to ask if u get stuck or need something to be better explained

  • I wish maxon would add something simmilar to what is available in 3DS Max, i would love krakatoa and FumeFX in C4D, it would make tp alot better.

    • totally, 3dsmax is a powerful package, I wish maxon would update the thinking particles version aswell, for true collisions and stuff. it havent really been updated much (I think?)

    • Yep, needs major work.
      I want access to all the collision/simulation data. Maxon have a habbit of adding features without thinking about how people will want to use them.

    • yay! PF, FumeFX, Krakatoa.. truly weapons of mass destructions you got there, nothing even close for Cinema.
      Definitely a particle boost would be much appreciated.

  • Hi Simon, thanks alot for all your sharing… it’s just amazing how fast we can learn things, when the right person expalains it !! you did it in all your tutorials…

    … You mentioned, in an early comment, “becouse the pstorm and the pborn are ment for different uses” can you explain ? :))
    Thanks mate


    • Hi Hamid,
      tanks! what I meant about pstorm & pborn was that pstorm is used to emitt particles forward from a point in space, where the pborn dont have a position or aligment it needs something else to tell it where to birth the particles. U can see in the tutorial how i used it to birth the particles on the floorplane and the platonic. becouse i didnt wanted them to move. and I wanted to feed the position from the setdatanods.


  • I’ve tried to reproduce the teaser before the publication of the tutorial. It wasn’t easy beacause theres is not a lot of ressources about TPs on the internets.
    I’ve ended up with this dirty weird thing :

  • Nice tutorial!!! ๐Ÿ˜€

    I kinda need help on this,
    It’s for the Aruba International Film Festival!

    I need more votes, can anybody please help with some votes ๐Ÿ˜€

    You can vote there, my name is “Mario Gonsalves”

    And you can see my entry here:

    Thanks ๐Ÿ˜€

  • really I don’t know why the first step don’t work if I don’t use pSetData…for me it’s a bit tricky…I’ve a Pborn and set it to a surface position…why my particles don’t begin generate over my platonic and need use set data?..thanks

  • volker zinssmeister April 11, 2011 at 7:45 am

    very cool stuff! thanks a lot simon. here is the 11.5 file, if someone needs it:

  • Hey I am having an issue with my tracer object. The path is never fully disappearing there is always some left from each particle even if the particle is dead. How do I get them to fully go away for each particle?

    • On the Tracer Object Tab, under SPACE there is a parameter called LIMIT, which by default is set to non. Click on its down-arrow and set to FROM END. Set the amount to around 35, see how you get on.


    • Tried that there is always something left. Whats left is bigger or smaller depending on the amount. I just looked at the 11.5 listed above and it looks like there is the same issue in that file too.

  • Does this guy know what a comb is??

  • Nice!

    I thought I was going to know everything you were about to say before you said it ^^
    I was wrong. Very informative ๐Ÿ˜€

  • I think the problems is the Hair Material : If I use just one hair material, everything works from the 1st frame, but right after adding another hair material to the Atrach Tracer, things change. There should be some kind of bug with the way hair materials and hair render engine works.

  • Thx from Chile Simon!!!

    Clear and easy to follow :).

  • thank you! gamsa ham nee da!

  • The tut was great, i just have a problem
    the HAIR MATERIAL for the TRACER, i still can’t figure out, i hope somebody could help me with it, i already have my objects…

  • The tut was great, i just have a problem
    the HAIR MATERIAL for the TRACER, i still can’t figure out,
    i hope somebody could help me with it, i already have my objects…

    • It may seem stupid but, first of all, make sure that you have enabled the Hair Render (under Effects) in the Render Settings, otherwise no hair will be rendered out.

  • Finally got around to doing this tutorial – great job, lots of fun and I learned a lot. You were very easy to follow. Thanks

  • Thanks Simon! very useful tutorial, the first time i did something with Xpresso!

  • for some reason I can’t get my PBorn to connect to my PGroup at all… just installed the new update to 12.043 today would that have anything to do with it??

    • nevermind i was using the one from the TP Helper category instead of the one in the TP Standard… now THAT is confusing!

  • nice work thanks for all the good tips a techniques..

    i Have a little problem i dont know how intall plugins on mi cinema 4d r12…a dont know was is the way to follow.
    i need a little help from my c4d friend thanks man!

  • Hello is a very good tutorial on TP

    but I have great doubt when wanting to render

    nothing is displayed only triangles and cone

    I can explain how to render

    thanks Simon

    from Mexico

  • Hello, iยดm just starting learning about thinking particles, and getting a bit confused about Pblurp (the one used for morphs)… Is it possible to create groups using Pblurp? I couldnยดt find any souluion about that…
    thanks in advance!

  • great insights to be found in this one !
    keep it up !

  • Man, I don’t know about anyone else but Thinking Particles remind me so much of playing with LEGO’s

  • Hey very useful tutorial as usual with you Simon ๐Ÿ˜€

    I managed to achieve all the effects of your teaser, but not to “attach” the “arrow” geometry to the particles and to orient them to the right direction (along their trajectory exactly like in your video)…
    First i tried to clone arrow geometry (a simple little cone) on the TP group 2 but it seemed to be impossible to orient them in right direction… Then i tried the particle geometry and i could “attach” the geometry to but in the wrong orientation too… so…
    How did you achieve that ? Could you help me please ?

    • Hi Fremox, just had same problem! The solution to orient or align a clone according to the direction of travel of a thinking particle… is to connect a “Palignment” node to a PPass of the group which your are trying to align. In Palignment node parameters, select “direction of travel” and the general axis direction of your clone(depending on how you’ve built it).
      It’s actually in the source file downladable above however Simon uses a Pshape node to create arrow end, I use a mogragh cloner with a model of leaf inside… works.

  • Excellent teaching Simon! Love the introduction to Thinking Particles. Here’s my try using the TP setup shown in the video.

  • Hey Simon,

    Thanks a lot, this is such a great inspiration to me.
    Not only that; it also helped me to overcome a kind of TP inertia.
    I will keep following you guys.

    Regards, Robert

  • Well done ๐Ÿ™‚

    I’m very new with c4d, and I’m learning a lot from this great site GSG.

    I have an idea in mind, which I guess TP is the solution to solve it, but I don’t know how to make it happens.

    I modeled a diamond. and what I want to do is a scene where there is a pile of multi-colors particles, then the diamond spins too fast above them, to create some sort of tornado that hits the particles, picking them up around the diamond.. and while spinning around.. each single color group of particles gathers to form small diamonds.. and when the giant diamond stops. the small diamonds fall down on the ground.

    it may be crazy. but I want to believe that its possible to do it.

    If someone know how to do it, I will be grateful to be pointed on the right direction..
    and more grateful if GSG decided to make a tutorial.


  • Could you please say how to set up our UI as urs? ๐Ÿ™‚ And try to go slower on the Xpresso if you can ๐Ÿ™‚

  • Great tutorial, I have a level of understanding of TP and Xpresso I never thought I’d have. Between this and Chris Schmidt’s intro tutorials you’ve made a scary part of Cinema 4D approachable.

    2+ years later than the tutorial was posted, I thank you ๐Ÿ˜‰

  • Great tut communicated very well

    There is one task I can’t seem to do

    I have looked everywhere and I can’t seem to find a way to create an event from 2 different partical groups colliding. I have tried with the partical generator object pshape but there doesn’t seem to be any option on any node to do this, the other way maybe with mograph and xpresso using the collision node to then change to a new partical group

    So basically partical is emitted from pstorm collides with pborn partical then a new partical is birthed in place to replace the pborn

    Any help would be really appreciated

  • Leave a Reply

    Your email address will not be published. Required fields are marked *

    This site uses Akismet to reduce spam. Learn how your comment data is processed.