I made various changes to the Generic Particle System because there were some things there that weren’t quite right.
Rather than taking one velocity attribute and updating it over time based on various conditions, such as collision, proximity to attraction and repulsion objects, etc, I was instead using multiple Set Position nodes, which made all movement be at a constant rate, rather than accelerating based on time spent meeting the conditions.
To address this, I modified all the calculations inside to instead update a new attribute, velocity, which is used in one final Set Position node to yield the final actual movement vector and speed.
Other improvements:
- I also added gravity controls! That means you can have an initial velocity where the particles are shot, and then over time gravity accumulates and causes them to fall.
- I added bounciness and stickiness to collisions, which use the hit normal of a collision to make them bounce off surfaces.
- I also added seed value controls to the particle generation, as well as the random rotation and random size seeds.
One thing that is still a bummer is that I haven’t found an elegant way to implement substeps. The methods I’ve seen involve using repeat zones, which then require a lot of fiddling with adding divisions to practically all calculations inside the simulation zone, which I’m not sure I want to do. Here’s hoping that one day Blender will just add a substep control to the simulation zones.
Get the new file in the page below!
Leave a Reply