Making an Assembling Bridge Simulation With Houdini & UE5

Lucas "Nae" Monnet has explained how the recent assembling bridge project was set up, demonstrated the working process in Houdini and Unreal Engine 5's Niagara, and shared some useful tutorials that might help you get started with VFX.

In case you missed it

You may find these articles interesting

Introduction

Hello! I'm Lucas "Nae" Monnet and I'm a French and Swiss VFX Artist. I started to learn real-time VFX seriously three months ago, so it's really an honor to see my work featured on an online website such as 80 Level!

Until March 2022, I worked as a Game Designer for a studio located in the north of France called Ankama, but I decided to come to Japan and try to find a job here since it was always a dream of mine. I knew it would be hard to find a job here with my current experience, but luckily, I have amazing parents that support me both motivationally and financially, which allowed me to take my chance in Tokyo.

Even after learning Japanese for a year in a Japanese school in Tokyo, it was still hard to find a position as a Game Designer, so I decided to learn more about real-time VFX since it's something I had an interest in while working on some projects. There is a lot of demand for real-time VFX Artists right now, and I already have some technical skills and a few artistic skills gained through personal, student, and professional projects.

I used Unreal Engine over its competitors simply because I was much more used to it. I think the time when I learned the most about it was when I was working on my end of studies project. I was working mainly on the game/level design, narration, and programming with a team of wonderful artists. Since I was the person who knew the most about the engine in the team at that time, I also helped them with some integration/optimizations for the materials, animations, and VFX. The Art Director of the project and a good friend of mine, Francesc Loyo Valls, introduced me to Substance 3D Designer, which helped me a lot when I started with VFX.

Since the beginning of December 2022, my weekdays consist of four hours at the Japanese school in the morning, grabbing some food at a konbini on my way back to my apartment, and spending the rest of my free time working on VFX using Unreal Engine's Niagara. My goal was to try to make a demo reel by February since my Japanese school term ends in April, and it's also the time when Japanese companies recruit the most.

Getting Started With Houdini

As I was creating effects for my demo reel, I was also looking at job offers in Tokyo. I was quite stressed, not sure if I would be able to find a job since my Japanese abilities are far from perfect, and I don't have any professional experience in VFX yet. I wanted to find a way to make my profile stand out from the other candidates, and some offers had a preference for applicants with an experience with Houdini, so I decided to give it a try. Fortunately for me, Houdini was giving away two free months of Houdini Indie license for an Epic Games' VFX Contest.

I might still be looking for work at the time, so if you have a position in Tokyo and can sponsor my work visa, don't hesitate to contact me on my Twitter or LinkedIn.

When I started with Houdini, I already had experience with coding and nodal scripting, but it was still tough, and I spent a lot of time struggling to understand the software at first. After understanding the general node structures, it got easier to wrap my head around them. Another problem is that there are few Houdini resources/tutorials for real-time VFX.

I still have a lot to learn about Houdini, but at least I have a greater understanding of it now. This series of tutorials helped me a lot to understand the Houdini to Unreal Engine workflow:

The  Assembling Path Simulation Project

I tried to replicate a similar effect I saw in the tutorial above, where pieces interpolate between positions depending on the player's proximity to each bridge piece.

It made me wonder – "How would it look if we do something similar, but instead of the player proximity having an influence directly on the position, it would have an influence on the time of a simulation?" I wanted to try how to make a fracture in Houdini after this effect, so I just decided to get a shortcut and mixed both!

I can separate the different steps in Houdini as follows:

  1. Generation of the bridge and fractures
  2. Simulation and exportation of the data to Niagara
  3. Cleaning and exportation of each bridge piece to Unreal

Generation of the bridge and fractures

Working on the first and second parts, I relied heavily on this video tutorial from 1MaFX:

To do that in Houdini, I took a Box, scaled it, and fractured it. Compared to the video above, I wanted to have a smaller amount of pieces for aesthetic and performance reasons.

Polybevel was added later on, to soften the edges a bit. The Assemble node allows me to pack each piece together, which will be useful during the exportation and the simulation.

Simulation and exportation of the data to Niagara

For the simulation, the setup is really similar to the video above, except I also added two grounds to the two extremities of the bridge, because I didn't want the pieces to go where the borders would be.

I also tweaked the initial velocity and modified the friction of the pieces to make sure they separate more properly from each other, but at the same time don't have too much rotation or move too fast suddenly, which would look a bit weird for my effect.

The exportation of the data is made using the Labs Niagara node.

Cleaning and exportation of each bridge piece to Unreal

For this third part, I had to make a script in Python to export each fragment. I had a huge help from this tutorial:

I modified the script to do everything that I needed: center the piece to their volume, calculated the normals, set different material indexes for the outside/inside, made sure that each piece had the material index for the inside/outside using the sort node, and generated the UV.

When the resulting FBX is exported to Unreal Engine, I can have each piece as an individual mesh, which I can then use in Niagara.

The Niagara Workflow

In Niagara, I put all the meshes exported in a mesh renderer. I made sure to export each mesh to its corresponding index. 

At the particle spawn, it allows me to select the right meshes for each particle sampled by the "Sample Spawned Houdini Point Cache" module by modifying the mesh index of that mesh renderer by the ID of the particle in Houdini.

Now comes the most important part of the effect in Niagara – the player proximity.

In the Particle Update category of Niagara, I set a variable PlayerProximity, which is a variable that goes from 0 to 1 depending on the distance between the player position, which I just get in Blueprint, and the position of the particle at the time 0 of the simulation, so the position of each piece when the bridge is "constructed".

I used a curve to smooth the effect a bit.

Using the "Sample Houdini Point Cache" module I then just sample the data using a custom age equal to the proximity of the player (multiplied by 10, the simulation duration).

Nearly all the effects (dust, wind, fresnel on the pieces) use this variable to know when to be displayed and their opacity.

Conclusion

I think it took me just under two weeks to complete the project. During that time I was working at least 4-6 hours a day on it, sometimes more. I wasn't always producing something during that time. I spent a lot of time doing research, watching tutorials, and looking through documentation. I think the most difficult challenge was the export of the meshes from Houdini to Unreal. It took me a while to find a way to export them one by one (thanks a lot to 3DY from RealtimeVFX community Discord, who gave me a link to a tutorial), and every time a different problem happened and I had to figure out what was happening and how to fix it.

When it comes to learning (and it can be applied to anything), the most important part is to stay motivated. Start small, finish it, then do something new that will allow you to use the knowledge you just learned and add a few new things. You will really see yourself progress this way, and that's what will keep you motivated. Without even knowing it, you will have enough effects to make your first demo reel!

Currently, the way I learn new things about VFX, I learn by looking at an effect, trying to reproduce it by myself, then making something new out of it. I try to not always do super big projects because they tend to be really draining, so I like to do small VFX between more ambitious ones. I think it helps to keep the motivation and to realize how much we progress. Each person has a different way of thinking and might not be at the same level of knowledge, so it's possible the way I do it might now work with everyone.

I want to thank the RealtimeVFX community and Discord for the help they provided for this project and those past few months. 

Lucas "Nae" Monnet, VFX Artist

Interview conducted by Theodore McKenzie

Join discussion

Comments 0

    You might also like

    We need your consent

    We use cookies on this website to make your browsing experience better. By using the site you agree to our use of cookies.Learn more