Very Nice, Love the rocks man!
Awesome walkthrough, I really learnt a lot. It was great that Adrienne give links to other people tutorials too!
Anybody get that?
Paweł Rutkowski discussed his work with Houdini and explained the workflow for the production of high-quality 3d destruction simulation.
My name is Paweł Rutkowski and I’m a 3D artist from Poland. Before I landed my first job in the CG industry at the age of 18, I developed my interest in 3D video production and computer graphics by teaching myself at home. After five years of working at Lokomotion Studio in Gdańsk, I started my freelance career, which continues to this day.
I never had the opportunity to study CG-related subjects or to take part in any formal courses or classes. All my knowledge stems from video tutorials, personal experiments and advice from work colleagues.
At the beginning (like most of us!) I had no clue what would be my specialization. Consequently, I learned about every aspect of 3D production, which was very enlightening but also required a lot of time and energy. It was only about three years ago that I discovered FX as the true trajectory of my career. Currently, I’m a 3D Generalist Freelancer, but I’m seeking an FX Artist position.
Why do I love destruction simulation so much? Let’s be honest, who doesn’t!
Destruction simulation was the first subject I learned using Houdini and it’s still my favorite—I have tons of fun blowing things up!
However, creating this type of effect is a complex process because there are many facets of a destruction-simulation project. Starting from proper modeling (or model preparation if one gets geometry from a modeler) through fracturing, Rigid Body Simulations (RBS), particles and smoke simulations and ending at model upressing, shading and rendering.
Of course, I also aim to create a full range of other effects, like fluids and particles, but lately I’ve been completely absorbed by destruction-simulation projects.
In my opinion, the most important thing when starting a new project is a clear, specific and achievable idea of how the project should appear at the end. I assume that plenty of people (myself included) have been largely dissatisfied with their work when they fail to plan from the beginning.
As a result, each time I commence a new project, I start by rethinking my idea in multiple ways to land on the concept that yields the most interesting potential. I also study the work of other artists that inspire me to imagine new ways of approaching a subject, which sharpens my skill and brings all of my projects to another level.
Then, it’s time to collect references. And personally, I don’t look for tons of photos and videos! I save a few images that I most like, and I also don’t try to match my results to them at every stage of the creative process. Rather, I use references to understand how specific materials behave in different situations.
I start everything by creating destructible models within the scene, which is crucial when working with dynamic simulations in Houdini because every solver accepts specific types of input geometry.
Bullets, for example, work best with convex geometry representations to compute collisions, whereas the Native Houdini RBD solver uses concave geometry instead that gives more accurate results. It’s quite a bit of work and also takes a lot more time. There is a third built-in possibility that allows individuals to solve dynamics simulations in the form of the Finite Element Method (FEM). This give people the ability to simulate soft bodies as well and requires geometry to be converted to tetrahedrons.
As a result, individuals have to know the possibilities that every solver gives and choose the one that will be the most suitable for realizing their ideas.
Personally, I prefer to use Bullet Solver in almost every destruction situation. As I previously mentioned, this method copes best with convex geometry, so models should be prepared preserving a few rules. First of all, every intersecting geometry has the potential to cause instability during simulation. Second, we have to consider getting rid of pieces that are too small and also can cause issues.
Another important aspect to account for is proper model scale. Forces in Houdini work in real-world units. Consequently, to create a realistic and reliable simulation, you need to make sure any and all models are properly scaled to accurately reflect their real-world counterparts.
The next step is pre-fracturing geometry, which will be held together later with constraints and will break apart when specific conditions are met. There are many ways to fracture geometry but the most common method is using a Voronoi Fracture pattern. This option gives artists convex pieces that are almost ready to throw into a Dynamic Operator (DOP) network.
Before we jump into dynamic simulations, it’s necessary to set up a constraints network. At this stage, I determine which pieces of geometry are connected to each other and how strong of an impact is required to break each model apart.
Then, you have to choose from several different kinds of constraints.
The simplest ones are Glue constraints that are the most suitable for hard objects that don’t bend before breaking, like glass. More advanced yet giving a far better look of breakage are Cone Twist constraints that allow geometry to bend and break only when reaching a critical point. In most cases, I set up constraints easily and quickly by using my “Constrain It” digital asset, which is available to download on my website.
All simulations take place in a DOP context, wherein I drag all previously prepared elements. In this step, I add physical properties to geometry, such as density, friction, bounce and so on. The simulation process goes automatically based on variables I provided at every previous stage.
And the first simulation is never perfect! To get the best results, I have to go through many iterations and come back into the network to refine parameters and attributes until I get a look that is more satisfying. Every simulation is different and every time I create a simulation I will undoubtedly encounter different issues. Many people have a problem with unstable or flickering chunks, so here is small tip that made my life much easier. When working with Bullet and packed geometry, I have ability to control them using POP micro solvers.
This way, I decrease the velocity of pieces by 5% every frame starting from frame 70. If velocity length is less than 0.02 units, then turn them into static objects.
Another way to address chunks that are flying out at crazy speeds is to use the POP Speed Limit node, wherein individuals can set a maximum speed and rotation values for pieces in their scene.
Even when I end up with a simulation that has lots of pieces, it usually still looks poor and needs some extra details. This is where particle simulation comes in clutch!
Thanks to particles, I can add tons of tiny pieces to my destruction scenes that give them finer detail and imbue them with a more natural look. Of course, it’s easy to exaggerate the number of particles in any given scene, which is where my artistic sense comes into play. Particles can be emitted in many different ways and simulating them isn’t too difficult. The tricky part, however, is when I want to copy geometry chunks to particles. By their nature, particles have only one attribute, which is their position in 3D space. All other properties, like orientation or scale, I have to create on my own.
This setup illustrates the creation of a coordinate system for every particle based on its velocity direction when adding rotation to it.
When the entire geometry simulation is ready and cached, it’s time to take care of the smoke! This is the most time-consuming process and take hours—sometimes even long nights—to simulate. At this stage, I use a previously prepared geometry simulation to create a collision object for the smoke. In this way, the smoke is nicely integrated and is influenced by flying chunks of debris within the scene. Producing a more desirable look to the smoke is called shaping. At the end of the day, there is a large amount of micro solvers that can help throughout this process.
Other extra, little details that can improve the overall look of a destruction simulation are small dust particles that fly inside areas of smoke. This can be achieved by advecting particles via the smoke simulation in a separate simulation.
Regarding realism, I have to mention a final step that needs to be done before diving into shading and rendering. Geometry that was created for the simulation is low poly and unsuitable for use in any final image. Use the upressing process to give extra details on the edges and prevent it from fracturing the uniform patterns.
For example, let’s consider a geometry simulation that has 15,000 polygons. After upressing, the same geometry simulation is about 1,200,000 polygons.
After applying all these elements to destruction and spending some time on every one of them, the final image should look just as you planned! The entire process can be divided into smaller steps and you can move from one step to the next once you’re happy with your results. This approach is thorough and guarantees quality work throughout one’s entire project.
The entire process can take anywhere from days to weeks, depending on the complexity of the scene and the amount of elements that need to be prepared. Over the course of the production, simulating smoke is definitely the most time consuming aspect of the project. Other simulations like RBS and particles don’t take long but setting them up takes time. For example, this “Wall Smash” project took about a week and a half to set up. I did some experiments during this period and also spent time setting up render in Arnold, which I’m not very familiar with yet.
Time efficiency is a very important skill to develop especially in terms of production. Fortunately, Houdini gives me plenty of tools that can help save time! One of them, the “Takes” system, is very useful because it allows me to work on a low-resolution version of a project and then change it to a high-resolution version with a single click.
So, this is the way that I approach my Houdini destruction-simulation works! And I’ve still got plenty of things to learn and familiarize myself with when it comes to Houdini. My advice for people that are just starting to learn Houdini is to keep at it even if you don’t understand how certain things work. It’s a difficult software to learn but once you start seeing your results, you’ll never regret all the hard work it took to get you there!
Thanks for reading about my work, 80.lv! I hope you enjoyed learning about destruction simulation and can apply some of what I discussed to your future projects!