Max Schwugier showed how the carbonated water simulation was done, talked about how they started working with Houdini, and explained how the bubbles work in the project.
Hi! My name is Max Schwugier, I am a 29-year-old Designer at Man vs Machine, Los Angeles. I have been doing 3D for almost 4 years now and before I went to Man vs Machine, I was working for Aixsponza in Munich.
I started with Cinema 4D and realized relatively early on that the software was limiting me. Especially with things like smoke, water, particles, etc., you always needed plugins that all worked differently and were not consistent in themselves. I then simply looked for a solution that unites everything in itself and is coherent. In the beginning, I used Houdini more as a plugin and created simulations there, which I then exported to Cinema 4D. In the meantime, I try to implement projects completely in Houdini.
The Sparking Water Simulation
I've always found it exciting to interpret everyday objects like a glass of water in the form of 3D animation/simulation and to play with the perception of whether this is a real glass of water or a render. It may be that there will be more to follow in the future.
This is not really a FLIP fluid simulation. I only influenced the surface of a mesh using a ripple solver and used two independent particle simulations both in the fluid and above it. For the caustics, there is a very nice 1-minute tutorial by Ross Mason and exactly after the technique, I set up mine as well. Of course, I tweaked it a bit more and used more samples, but the bottom line is that it works exactly the same.
I hope I'm not offending anyone, but as I said before, the bubble simulations are independent of each other. The particles of the simulation in the liquid I spawned on the ground and influenced the spawn location by means of a noise field. The pscale attribute is influenced by the age attribute of the particle simulation so that the bubbles become slightly larger when they rise. As soon as they touch the surface, the particles die. To make the whole thing melt together, I connected the water and the bubbles with the help of VDBs so that there is nice bubbling on the surface.
The bubbles on the water's surface only have an initial velocity that is coupled with the age attribute. That means that if the particles are younger than a certain time, they get a velocity in the y-axis, after that they are pulled down again by gravity and when they hit the water's surface, they die too.
Last but not least, there are bubbles at the edge of the liquid. These simply spawn by means of a falloff and hardly move, they only grow again by means of the age attribute. After a certain time, they die. These bubbles are also connected to the water surface via VDBs.
I rendered the whole thing with the help of Redshift, but the render time was relatively high. To create such a realistic render, you need a lot of refraction and reflection depth samples, and caustics are also relatively intensive.
With my personal work, I don't care about the render time. Even if I have to wait 1-2 weeks for the final render, I don't care because I don't have a client breathing down my neck who needs his piece by a certain time. I honestly haven't optimized much but what I can recommend is when it gets tight – render in half resolution and upscale with the help of Topaz AI. This has saved my ass many times. The render time for the piece was 15 minutes per frame on a single RTX 3090.
I don't know if there are people out there who stubbornly watch Houdini courses and use them, but it never worked that way for me. I always learned Houdini by trying to implement my own visions and ideas and when I got stuck, I googled tutorials or forum entries that had exactly the same problem. I then tried to apply the solutions to my setup by means of transfer performance and usually did quite well. Nevertheless, I can recommend Entagma for absolute beginners. They have a very nice 5-minute beginner series.
You may find these articles interesting