A work in progress. 🖤
...and now for something completely different.
Earlier this week I was chatting with my friend Dani about interactive 3D art and digital installations. We ended up looking through some of the brilliant work on New Art City, and I started wondering whether I could turn one of my own paintings into something you could actually move around inside.
I’ve been a bit hyper-focused on it ever since, spending most evenings this week trying to do exactly that with my painting Ritual Descent.
The painting shows a reservoir full of black fish spiralling beneath the surface. Rather than just recreating it in 3D, though, I wanted the fish to actually behave like fish.
I decided to use Three.js as an excuse to learn a bit more about it and put some of the coding and shader work I’ve been tinkering with this year into practice.
I’ve kept the graphics fairly simple because the real challenge isn’t making one fish. It’s making hundreds, maybe thousands, all swimming together procedurally.
Teaching a whole shoal how to exist together has turned into a bit of an obsession.
That sent me down the rabbit hole of Craig Reynolds’ classic 1986 Boids algorithm, one of the early artificial life systems.
Give each fish a handful of simple rules and, somehow, they start schooling, spiralling, scattering and regrouping on their own. It’s weirdly satisfying watching something that started as a few bits of code slowly feel like it has a life of its own.
That was really the idea behind the painting, and some of my other fish-related work around Frostmere too.
No leader fish, no central controller telling the others where to go, just lots of individuals responding to those around them.
Out of that you get these huge shifting patterns that nobody planned and nobody owns. Order without authority, movement without command, and a kind of life emerging from cooperation rather than control.
Doing all this has brought back loads of memories too.
Back in the 90s on the Amiga, little aquarium simulators were all the rage. I remember having tiny fish swimming around my Workbench desktop, feeding them and spending far too much time watching them.
I also remember making a little life simulator in AMOS, based on some of the classic artificial-life algorithms. I think that fascination with trying to create little living worlds has probably been lurking in the background ever since.
Painting, coding, shaders, artificial life and old Amiga aquarium simulators have somehow all crashed together into this one little project this week.
It’s still very much a work in progress, but here’s a little preview. I’ll post a reel at some point soon.
Hopefully I’ll get it running smoothly enough to put a live version online so people can have a swim around inside it.
I’ve already caught myself sitting in there for ages, just watching the shoals do their thing.
Would you have a play with it?