# Particle Node Groups CC0 for Simulation Nodes

**URL:** <https://blenderartists.org/t/particle-node-groups-cc0-for-simulation-nodes/1496381>\
**Category:** Latest News\
**Tags:** particle, simulation-nodes\
**Created:** [December 5, 2023, 9:27am UTC](https://blenderartists.org/t/particle-node-groups-cc0-for-simulation-nodes/1496381 "2023-12-05T09:27:14Z")\
**Posts on this page:** 15\
**Page:** 1

<div class="post-metadata">

**Author:** ![robin.hohni](https://blenderartists.org/user_avatar/blenderartists.org/robin.hohni/32/1016883_2.png) [@robin.hohni](https://blenderartists.org/u/robin.hohni)\
**Post date:** [December 5, 2023, 9:27am UTC](https://blenderartists.org/t/particle-node-groups-cc0-for-simulation-nodes/1496381/1 "2023-12-05T09:27:14Z")

</div>

Hey everyone,

I spent the last few days working on a set of node groups for particles in geometry nodes, that I now like to share for free. You can see a few demos here:  
 ![blender_gFJN2HRQso](https://blenderartists.org/uploads/default/original/4X/a/9/e/a9e3c2bb7ce567090fafc3c7d6cbafe661031c2a.gif)  
 ![blender_dBm855dfk2](https://blenderartists.org/uploads/default/original/4X/0/9/d/09d8c3172684c65661cd0d477eef354a689dadeb.gif)  
 ![blender_CMkyHqRGL5](https://blenderartists.org/uploads/default/original/4X/6/4/7/6476ac9df630cd3fdd2ad8ab60b38435c4b637d8.gif)

Making particle simulations in geometry nodes always takes a few steps to do. Even if it is just for a few points that fly around. It involves particle lifetime tracking, velocity, and spawning new particles at a certain rate. So I created (hopefully) easy-to-use and understand node groups.

 ![image](https://blenderartists.org/uploads/default/original/4X/8/8/2/8828b94aa4958b5374bb14d3845695375c2df2bd.png)  
There are already quite a few but the most basic setup only requires two nodes (+ simulation nodes).  
 ![image](https://blenderartists.org/uploads/default/original/4X/6/0/5/605eb8c8979320adc399592a46210af3df7cc7f2.png)

The `Simulate Particles` node group moves particles by their velocity but also removes particles whose lifetime exceeds their maximum lifetime. `Spawn Particles By Rate` creates new points with given parameters at a certain rate. I’ve added descriptions to most of the node sockets so you can get more insight if you like.

You can get the blend file from Gumroad (Needs Blender 4.0):

> **[Particle Node Groups for Blender Simulation Nodes \[Free\]](https://robinhohni.gumroad.com/l/BlenderParticleNodeGroups)**
>
> Making particle simulations in geometry nodes always takes a few steps to do. Even if it is just for a few points that fly around. It involves particle lifetime tracking, velocity, and spawning new particles at a certain rate. So I created...

I share it for free and if you like to support me, you can buy me a coffee on ko-fi 🙂

> **[Buy robin.hohni a Coffee. ko-fi.com/robinhohni](https://ko-fi.com/robinhohni)**
>
> Become a supporter of robin.hohni today! ❤️ Ko-fi lets you support the creators you love with no fees on donations.

The blend file contains these groups as assets, so you can save them to your asset library. It also contains a few examples. Many of them were also shown in the video above. I encourage you to look at my example node-setups to see how all these groups can be used together. 🎆

If you have any suggestions or feedback, let me know. ✌

---

<div class="post-metadata">

**Author:** ![ArtPomelo](https://blenderartists.org/user_avatar/blenderartists.org/artpomelo/32/809608_2.png) [@ArtPomelo](https://blenderartists.org/u/ArtPomelo)\
**Post date:** [December 5, 2023, 10:25am UTC](https://blenderartists.org/t/particle-node-groups-cc0-for-simulation-nodes/1496381/2 "2023-12-05T10:25:20Z")

</div>

Ahh, sounds great!  
Yesterday i tried to do particle collisions for a snowing animation and in blender they just bounce and yiggle a lot with standard particles…

I will try to recreate it with your solution, then we finally have a working collision system =D

---

<div class="post-metadata">

**Author:** ![robin.hohni](https://blenderartists.org/user_avatar/blenderartists.org/robin.hohni/32/1016883_2.png) [@robin.hohni](https://blenderartists.org/u/robin.hohni)\
**Post date:** [December 5, 2023, 11:58am UTC](https://blenderartists.org/t/particle-node-groups-cc0-for-simulation-nodes/1496381/3 "2023-12-05T11:58:52Z")

</div>

Excited to hear your feedback 😃

Oh I forgot to mention it requires Blender 4.0, since I used a repeat zone

---

<div class="post-metadata">

**Author:** ![Kologe](https://blenderartists.org/user_avatar/blenderartists.org/kologe/32/1395643_2.png) [@Kologe](https://blenderartists.org/u/Kologe)\
**Post date:** [December 5, 2023, 12:42pm UTC](https://blenderartists.org/t/particle-node-groups-cc0-for-simulation-nodes/1496381/4 "2023-12-05T12:42:20Z")

</div>

Very cool, great work and thanks for sharing. Do you mind adding this to our generalized geometry nodes setup thread (see below)?

> [@The Great Collective Geo Nodes Thread](https://blenderartists.org/t/the-great-collective-geo-nodes-thread/1493683):
>
> Hi everyone. This is intended to be a general community thread where everyone is invited to share their geometry nodes setups/nodegroups they made. Just two rules: No showing off without providing either a fully readable, complete screenshot of all relevant nodegraphs (nothing hidden away in mysterious nodegroups), or a clean .blend which contains the nodegroup/-tree. That said, do feel free to show screenshots/gifs/videos of the results along with it. Unless self-explanatory, some minimal…

Would fit right in with the intention/spirit of that thread and be a welcome addition.

greetings, Kologe

---

<div class="post-metadata">

**Author:** ![robin.hohni](https://blenderartists.org/user_avatar/blenderartists.org/robin.hohni/32/1016883_2.png) [@robin.hohni](https://blenderartists.org/u/robin.hohni)\
**Post date:** [December 5, 2023, 7:09pm UTC](https://blenderartists.org/t/particle-node-groups-cc0-for-simulation-nodes/1496381/5 "2023-12-05T19:09:54Z")

</div>

Thanks!

I’d like to share it in another thread, but these node groups often use a lot of node groups themselves. So it will be hard to make screenshots where people can see what’s going on.  
Should I then just add a few gifs like above from the particle systems and a link to this thread here? Also, I can’t share the blend file directly since it is bigger than 5mb. ^^

---

<div class="post-metadata">

**Author:** ![Kologe](https://blenderartists.org/user_avatar/blenderartists.org/kologe/32/1395643_2.png) [@Kologe](https://blenderartists.org/u/Kologe)\
**Post date:** [December 5, 2023, 7:25pm UTC](https://blenderartists.org/t/particle-node-groups-cc0-for-simulation-nodes/1496381/6 "2023-12-05T19:25:52Z")

</div>

> [@robin.hohni](#):
>
> Should I then just add a few gifs like above from the particle systems and a link to this thread here? Also, I can’t share the blend file directly since it is bigger than 5mb. ^^

Ah yes, I suppose that makes most sense then. I don’t think that ‘readable screenshot’-rule can always be quite applied for practical reasons.  
It’s mainly meant in the sense of asking for something to reproduce or, if that’s not practical, sourcefiles are fine too.

greetings, Kologe

---

<div class="post-metadata">

**Author:** ![robin.hohni](https://blenderartists.org/user_avatar/blenderartists.org/robin.hohni/32/1016883_2.png) [@robin.hohni](https://blenderartists.org/u/robin.hohni)\
**Post date:** [December 6, 2023, 12:31pm UTC](https://blenderartists.org/t/particle-node-groups-cc0-for-simulation-nodes/1496381/7 "2023-12-06T12:31:13Z")

</div>

Alright, will add it there. 🙂

---

<div class="post-metadata">

**Author:** ![robin.hohni](https://blenderartists.org/user_avatar/blenderartists.org/robin.hohni/32/1016883_2.png) [@robin.hohni](https://blenderartists.org/u/robin.hohni)\
**Post date:** [December 7, 2023, 5:36pm UTC](https://blenderartists.org/t/particle-node-groups-cc0-for-simulation-nodes/1496381/8 "2023-12-07T17:36:22Z")

</div>

Small update:

- Added node: `air resistance | drag`
- Added snowing example
- Improved some default node group values
- Marked example modifiers as assets

![blender_kTQpLab8HZ](https://blenderartists.org/uploads/default/original/4X/6/6/f/66fd56b9626e59ffc26958bfbaaef5d4132d4a55.gif)

---

<div class="post-metadata">

**Author:** ![AegonTargaryen](https://blenderartists.org/user_avatar/blenderartists.org/aegontargaryen/32/1084923_2.png) [@AegonTargaryen](https://blenderartists.org/u/AegonTargaryen)\
**Post date:** [December 15, 2023, 1:33pm UTC](https://blenderartists.org/t/particle-node-groups-cc0-for-simulation-nodes/1496381/9 "2023-12-15T13:33:29Z")

</div>

Hello, may I ask how the performance compares to the default Particle System?

---

<div class="post-metadata">

**Author:** ![robin.hohni](https://blenderartists.org/user_avatar/blenderartists.org/robin.hohni/32/1016883_2.png) [@robin.hohni](https://blenderartists.org/u/robin.hohni)\
**Post date:** [December 15, 2023, 6:20pm UTC](https://blenderartists.org/t/particle-node-groups-cc0-for-simulation-nodes/1496381/10 "2023-12-15T18:20:39Z")

</div>

Seems to be faster than the default particle system. Here I’m spawning up to 1 million particles in 100 frames. (My scene was set to 60 fps.)

Default particle system 5.00 fps on frame 97:

 ![image](https://blenderartists.org/uploads/default/original/4X/6/4/c/64cd6d2f5886e67abdc7779ccc1371d05589d4a6.jpeg)

Geometry Nodes 8.74 fps on frame 100:

 ![image](https://blenderartists.org/uploads/default/original/4X/7/e/5/7e5e84b592b7526b7f13f108f1ba002527d65743.jpeg)

Up to this point, both particle systems have spawned around 1 million points while simulating them in parallel.

So in this example, geometry nodes seem to be faster. There might be other cases where the default particle system performs better. Geometry nodes on the other hand seem to cache these points better. So when I run the simulation again at the frames where it uses a cache I have 60 fps. But it uses a lot of VRAM. (It is also a lot of points on the screen 😃 )

 ![image](https://blenderartists.org/uploads/default/original/4X/7/c/9/7c99c6535e09f2e14f40e2ddf099973f94a2061e.jpeg)

You can also bake both geometry nodes and default particle systems to gain more performance if needed.

That said, this example is very basic and if you use collisions and more complex transformations on these points, performance will get worse of course.

Using nodes is just far more modular and flexible IMO that’s why I made these groups in the first place. ^^

---

<div class="post-metadata">

**Author:** ![Laserschwert](https://blenderartists.org/user_avatar/blenderartists.org/laserschwert/32/818494_2.png) [@Laserschwert](https://blenderartists.org/u/Laserschwert)\
**Post date:** [December 18, 2023, 12:01pm UTC](https://blenderartists.org/t/particle-node-groups-cc0-for-simulation-nodes/1496381/11 "2023-12-18T12:01:37Z")

</div>

This little side-chain adds simple inter-particle collision to the Bounce/Slide setup:

 ![grafik](https://blenderartists.org/uploads/default/original/4X/0/4/9/0494571db9a2c44071b56fbb08b08d5101856ad6.jpeg)

 ![grafik](https://blenderartists.org/uploads/default/original/4X/d/6/0/d60d97c1f50afefab5224966d9872f5d2387bf23.jpeg)

I hope simulation nodes will get sub-steps soon, as it’s clearly missing here (however, upping the subdivisions of the collision ico sphere already improves stability - while exponentially increasing the simulation time).

Edit: Ah, well, at 2 subdivs, it’s already damn stable.

---

<div class="post-metadata">

**Author:** ![robin.hohni](https://blenderartists.org/user_avatar/blenderartists.org/robin.hohni/32/1016883_2.png) [@robin.hohni](https://blenderartists.org/u/robin.hohni)\
**Post date:** [December 18, 2023, 6:38pm UTC](https://blenderartists.org/t/particle-node-groups-cc0-for-simulation-nodes/1496381/12 "2023-12-18T18:38:59Z")

</div>

Looks great 😃

Self collision is something I’d like to add in the future presumably a bit more integrated and using less data to evaluate.  
Using the points as icospheres can potentially slow down the computation since every vertex of every icospheres is evaluated. My plan is to check for collisions by distance between points and their radii.

Thanks for sharing though, it is a clever way getting it to work for now ✌

---

<div class="post-metadata">

**Author:** ![Laserschwert](https://blenderartists.org/user_avatar/blenderartists.org/laserschwert/32/818494_2.png) [@Laserschwert](https://blenderartists.org/u/Laserschwert)\
**Post date:** [December 18, 2023, 7:40pm UTC](https://blenderartists.org/t/particle-node-groups-cc0-for-simulation-nodes/1496381/13 "2023-12-18T19:40:36Z")

</div>

Oh yeah, this was just a quick “hack”, and I’m not well-versed enough in GN to add it to your collision group directly. I’ve noticed that your current setup just uses point sizes to calculate collisions, which is probably way faster and more robust, so I’m looking forward to get a proper integration by you! 🙂

---

<div class="post-metadata">

**Author:** ![Laserschwert](https://blenderartists.org/user_avatar/blenderartists.org/laserschwert/32/818494_2.png) [@Laserschwert](https://blenderartists.org/u/Laserschwert)\
**Post date:** [December 19, 2023, 8:23am UTC](https://blenderartists.org/t/particle-node-groups-cc0-for-simulation-nodes/1496381/14 "2023-12-19T08:23:55Z")

</div>

Quick thought here: Could a repeat zone inside of a simulation zone be used for sub-sampling a sim?

---

<div class="post-metadata">

**Author:** ![robin.hohni](https://blenderartists.org/user_avatar/blenderartists.org/robin.hohni/32/1016883_2.png) [@robin.hohni](https://blenderartists.org/u/robin.hohni)\
**Post date:** [December 19, 2023, 8:47am UTC](https://blenderartists.org/t/particle-node-groups-cc0-for-simulation-nodes/1496381/15 "2023-12-19T08:47:10Z")

</div>

Probably  
You could divide the delta time by x substeps and run the particle nodes inside a repeat zone.  
You might need to apply gravity and velocity (move particles) separately (there are separate nodes for it). The simulate particle nodes would otherwise spawn several particles per frame since it depends on the scene time. → put everything in a repeat zone except ‘simulate particles’ and turn off gravity and velocity there. Use ‘Apply velocity’ and ‘add gravity’ node groups at the beginning of the repeat zone. Use divided delta time for all the nodes in the repeat zone.

This could work. Haven’t tried it. ✌
