This project was another little personal experiment to try to make something a little more abstract than my previous personal project, and to experiment a bit with Houdini’s new-ish Vellum XPBD solver. I was originally trying to see if I could force the Vellum solver to operate purely in 2D, and while that didn’t entirely work out as I’d hoped, the end result is still pretty neat.
The initial arrangement of bubbles was generated out of randomized little loops of “string” that were forced to grow on a 2D plane until they self-collided, and then smaller bubbles were seeded into the gaps between the originals. I converted the hollow loops into thin discs, and then dragged a constraint object that was tied to one of the small moving bubbles through the scene. A custom force field applied pressure to the bubbles to keep them pushing towards the center.
After landing the initial animation and retiming it, I used the velocities of these bubbles to source velocity into a 2-dimensional fluid simulation (cheap and fast!) that was used in turn to push the tiny fizz particles around in little swirls. It was a simple enough trick, but that swirling motion really sells the effect, which would otherwise be over with far too quickly.
I put a lot of sweat into this project to get it looking exactly the way I wanted it to, but I’m glad I didn’t put it down too early… I think the result is really relaxing to watch, and the visual fidelity is pretty good considering it was rendered on just a pair of consumer-grade GPUs overnight. I don’t think I’d be able to render any of my personal projects without Redshift!
If you’re interested in reading a much more detailed technical breakdown of this project, as well as downloading the source files, I have everything available on my blog.