Clusters and Particle Life

This is another great example of emergence. Complex behavior results from many individual particles following simple rules.

Jeffrey Ventrella explains his Clusters here.

Here is another particle based life model

I learned about Clusters when Code Parade posted the following video explaining his version of Clusters he calls Particle Life.

The source code to Particle Life was generously shared here so I had a go at converting the code and playing with these myself.


Here are some of my results.

Here is another more recent example. This time using 2D metaballs to render the particles. This results in nearby particles merging into blobs.

Extension Into 3D

Once I had the 2D version working, extending into 3D was the next step. These movie parts use the same settings as in the 2D movie above.

The most obvious problem with that movie is all the single particles blocking or obscuring the interesting structures from view. To fix this I added an option for the user to specify to hide particles connected to a small number of others. For example, any particle that has 3 or less “attached” particles is hidden.

I also now have an option to skip a number of initial steps. For the next movie I skipped the first 1000 steps of each part. This helps show the emerged structures more clearly without having to wait for the random dust particles to form into more coherent structures.

Also, now that I got RenderMan implicit blobby surfaces (aka metaballs) supported I used metaballs to show the connected particles. Change the lighting to use the RenderMan DayLight model and you have the following improved examples of how particle life works in 3D.


Both the 2D and 3D Particle Life are included with Visions of Chaos.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s