Thibaut Van Waeyenbergh dissected the powder fireworks and ocean simulations made in Houdini and mentioned a couple of online resources that can help with learning the software.
Hi everyone, my name is Thibaut Van Waeyenbergh, a junior FX Artist from Antwerp, Belgium, and I currently work as a Tech Runner at DNEG London. Being a recent graduate from Digital Arts and Entertainment, Howest, I’m at the very beginning of my journey. My first experience with 3D took place about a couple of years earlier when I used Cinema 4D for my first little projects. It was at that point when I decided to become an artist.
I first encountered Houdini and FX during college about 2 years ago. They had just introduced a course called “VFX Simulations” and as I thought it looked interesting, I decided to follow it. The course was far from perfect since it was the first time it was offered, and I still needed to do a LOT of self-study, but it did give me the right introduction to Houdini Proceduralism and its FX capabilities.
During the summer vacation prior to the final year in college, I made a radical decision. I pushed other software I knew aside (like 3ds Max and Maya) and decided to focus solely on Houdini because it needed a different mindset than most other software. Focusing on crowd simulations in Houdini for my graduation work, I did extensive research to study the software. There are different paths to learning Houdini, from starting with a code-less, small model of a cube, to modeling a fully procedural house right away. The most important thing is to do it all at your own tempo. Start off by understanding its workflow and proceduralism and then move on to the bigger stuff. It’s better to have perfect, small projects than big projects that are unfinished because you don’t know how to push it. And yes, in my opinion, programming is important. Or at least the knowledge of the concept of programming. It will definitely help.
When it comes to learning all these things, I found that the internet is your best friend. Stuff like CGwiki, Entagma, tutorials from SideFX, and other resources are goldmines of knowledge. I strongly suggest you use them. The more you learn, the more it will all make sense. I was lucky to learn most of these things in college, but with new software releases, learning never stops. Houdini has one of the steepest learning curves, but there is no better feeling than climbing that curve and succeeding at it.
As a conclusion to my internship, my supervisor, Eckhart Piqueur, tasked me with a 5-week project. Together, we found a video on YouTube from the Slow Mo Guys showing these amazing fireworks.
We decided this video would be the main inspiration for the project. I divided it up into three parts: the powder, the smoke from the explosions, and the boxes on the ground. I started with placing the right number of boxes and making sure these were ready to be used as the source of my particle simulations which I would later use to source my pyro with. In my eagerness to work on the project, I made a mistake that I think most junior artists make. It is very important to break up the project and work as light as possible. In my case, I was using all the boxes and sourcing them all at the same time, thus increasing sim time immensely. Using only one box gives the same individual result and is way lighter for the machine to handle. It is also more organized.
Using my reference and the source points, I made a particle simulation that resembles the way the fireworks shoot up. Using some multipliers and expressions, I made a small control node with a null node. This gave me the possibility to quickly make different variations and cache them out. By loading them back in and putting them in the right place with the boxes along with some rotation, I could have 10 different-looking particle sims using only 3-5 caches. This way I could iterate fast and efficient. I did this for the fireworks and for the particle sims that would drive the smoke from the explosions.
Dealing with Powder Smoke
With this project, I had two choices: use 2 different solvers or DOP Networks, one for the fireworks and one for the explosions, or combine everything in one DOP Network and one smoke solver. I used one smoke solver for two main reasons: everything is driven by the same solver so that all smoke is driven by the exact same physical laws and parameters, and the fireworks were needed to blend with the white smoke from the explosions. Using one smoke solver made this possible.
When working on different smoke simulations, it is important to fully understand each type of smoke and its attributes. Smoke as the result of combustion has buoyancy which makes it rise, whereas the firework trail isn’t smoke, but powder. Powder behaves differently e.g. it doesn’t need a temperature field since it doesn’t have any buoyancy, so I put this value to 0.001 when sourcing the powder trail. As for the density sourcing, the powder has a scale of 1 and the explosion smoke has a scale of 10 to make sure there is enough emission for the little number of frames it is active.
The velocity is sourced from the velocity of the particle simulations that I made to use as a base for my smoke simulations. I played around with the scaling of this until I was happy with the motion and velocity of the smoke. Using a turbulence noise, I made a custom velocity field which I used to create the small amount of wind in the scene. I sourced this separately in my smoke solver and used the velocity scaling to tweak the strength. The turbulence noise provides swirls in the velocity field which makes for some nice secondary motion of the powder.
The color blends because of the color and alpha fields and the source method that is set to “blend”. The color attribute is determined with a simple color node on the particles earlier in the network. Then it is rasterized along with the density, temperature and velocity attributes.
One of the final steps I did was breaking up the excessive shrooming of the explosion smoke. I did this by pushing the voxels outwards when the smoke starts curling. This is masked by the temperature field so it would only happen at the top of the simulation.
Because of the massive number of voxels, the size of the scene and the camera distance, I decided to keep the voxel size at 0.1. This value is one to play with carefully as it is exponential. It becomes very heavy very fast. In order to stay on schedule, I chose this value because it had enough definition and the simulation time was reasonable.
I learned a great deal from this project and I’m very pleased with the result. I’d like to thank my supervisor, Eckhart Piqueur, for teaching me a lot and helping me whenever I was stuck.
Ever since I was a kid, sailing ships have always been fascinating, especially the 18th-century kind. So, I decided it would make for a great, little project for my first ocean simulation. Apart from splashes, I’d never done anything related to the water tools in Houdini and it was time to change that.
I started off by getting a ship model, optimizing it and animating it. The animation was done using a simple sines and cosines expression on a null node. However, it isn’t very detailed because it wasn’t the focus of the project and I was anxious to start on the ocean simulation. Later, I was told I could’ve used the normal from the ocean spectrum, something to keep in mind for future projects.
At first, I wanted to explore the tools myself. I started off by using the shelf tools and messing around with the nodes. Some fast-forwarding through some YouTube tutorials and I was well on my way. I didn’t stray too far from the ocean shelf tool workflow since that would’ve made things unnecessarily difficult. As for the sails and ropes, I used Vellum to simulate the wind. It allows for fast iteration and a quick result which was exactly what I needed.
After getting the ocean spectrum parameters right, I copied, randomized and blended them so I would get an infinite ocean effect. The animated ship is brought into a flip tank as a collision object and these water particles are later converted to polygons and blended with the ocean spectrum. This way, nothing would look out of place. I spend several weeks iterating the ocean spectrum and flip tank in my free time. When I decided I was happy with it, I moved on to white water. Again, a lot of tweaking and experimenting. I would recommend the White-Water Masterclass that can be found on SideFX’s Vimeo channel. It helped me a great deal with understanding all the different parameters and what they exactly did.
This project gave me a great insight into the ocean tools, and it is something every starting FX artist should do. It might not be perfect for the first time, but the most important part is that you learn a lot from it. And that’s better than knowing nothing about it at all.
What I really love about Houdini is its non-destructive workflow and proceduralism. It encourages trying out different methods and techniques. One can easily branch off into a whole new network to try out new things.
Pyro is one of my favorite subjects to work with. The pyro solver allows for a lot of customization even with the already build in micro solvers. I also really enjoy particle tools. They function as a powerful simulation tool but also as the base for many other sim tools as Houdini mainly works with the concept of points. Cloth is one of those other subjects that I really like. Every time, I simulate some cloth, I am thrilled to see the result. There is something special about the smooth way it moves.
I could go on for hours about what I like about Houdini: its tools, the problem-solving mindset that is needed for it, the ever-ongoing learning curve and much more. I hope I could have the chance to enhance my skills in the future and use them to contribute to the industry.