I’ve played with Processing a fair bit over the years, but never really got stuck into anything solid - most of my time has been spent fixing up my students’ projects!
Over the break I’ve been playing with some other ideas, working through the very good book by Casey Reas and Ben Fry, Processing: A Programming Handbook for Visual Designers and Artists. It’s probably one of the best books I’ve ever read in terms of introducing and explaining how to code for people without a computer science background.
Inspired by Robert Hodgin’s wonderful Processing work I thought I’d have another crack at particles as they seem to be all the rage at the moment. The particle creation part is easy, but getting them to interact with decent physics was getting too much for my mathematically challenged brain. Thankfully I came across the Traer Physics Engine by Jeffrey Traer Bernstein, which handles a lot of that maths for you.
My “Hello World!" code for any platform tends to be a bouncing ball (or an array of them) because it covers most of the structures – if…then, variables, arrays, etc.
So I started building and engine that has a bunch of particles that are all attracted to each other, but more attracted to a single one which is following a target invisible bouncing ball around the screen. (It would make more sense to collapse the particles into the ball code, but at the moment I’m just plugging stuff together.)
It’s very simple at the moment - just an ellipse as the graphic with some trails going on. The above is a version that rendered out in non-realtime with 20,000 particles. I like the way they seem to rope together and struggle to break free. Sometimes there’s a kind of breakaway flare.
There’s also a bit of gravity going on, which drags everything down. Any particles that go off the bottom of the screen are simply recycled up the top (you’ll see this in the initial explosion). A interesting upshot of this is that sometimes the tail of the flare/rope falls off the bottom and those particles make a break for it from the top.
There are also a couple of other versions on Vimeo.