fbpx

Blowing Up a Bridge in Unreal Engine 4: A Step-by-Step Breakdown from War Mongrels

By: Marcin Kazmierczak

FX artist Marcin Kazmierczak shares how he approached a realtime FX project using Unreal Engine 4.​

For the reveal trailer for the game War Mongrels, I was asked to make a bridge explosion. The idea was very simple – make in-engine effects composed of Niagara FX and animation. It was supposed to be real-time and without any tricks like adding explosions in outside software. All materials needed to work well during gameplay so optimization was key.

You can see the bridge collapse at 1:12 in this reveal trailer.

Starting the Project

Before any work in Unreal Engine, I needed to make the bridge collapse in Houdini. The collapse was rather simple and the only challenge was to make a metal bend on the bullet. For optimization purposes, I needed to use FBX format, so I decided to stick to rigid bodies. I did some research and found inspiration on this Orbolt forum.

It’s from the research that I was able to make a believable metal bending effect with simple pieces.

I started by dividing Bridge mesh into parts sorted by material.

Real-Time FX Unreal Engine Breakdown - 01_Divide

Then I started normal fracturing. I was trying to limit bones as much as I could to stay within certain limits.

Real-Time FX Unreal Engine Breakdown - 02_Fracturing

The next step was to make constraints for each part and make special constraints for the metal pieces.

Real-Time FX Unreal Engine Breakdown - 03_Constraints

The next step was simulations and many changes into previous parts. I tried to make everything procedurally so changing fractures would not force me to do any manual work.

From a fracturing perspective, the procedural approach was useful, for staging the end effect it was not… As a result, in the end I decided to use SOP solvers to delete various constraints on fixed times.

The animation ended up as this:

04.5_SpawnPointsBreakdown
04.6_SpawnPointsSolver

After animation I wanted to use a new feature from Side Fx Labs – Baking the source position of particles in Houdini to use them inside Unreal Engine 4. I made smoke points by using a debris source and simple solver.

Pure smoke was boring, so I added sparks from the metal parts of the simulation.

Then as it still looked artificial, I added water ripples on the nearby river to catch an eye a little and distract.

The next big question was to import the project into Unreal. I tried Vertex Animation, but that feature is more fitting for destructions that are made at once. Considering I have lengthy animation and some parts split later on in the simulation, I decided to use normal FBX. 

Niagara FX

After making the animation I started making Niagara Effects. I imported all smokes, sparks, and ripple starting points with the Niagara Houdini Plugin. The last big task was to make good looking smoke that fit in the background. I wanted it to be fairly universal and usable in gameplay on other effects.

As the camera rotated I needed to be mindful of an inconsistent source of light. Also, I wanted it to be as cheap as possible. I tried many methods, from 6-point lightning to traditional normals, but everything was expensive or looked bad.

As a result, I made my own method. 

I decided to use only directional light from the scene for the smoke. I made Material Parameter Collections and stored the direction of light, its color, and intensity on it. I treated every vertex of a plane as a vector from the particle center to it. Then, I multiplied the heightmap from the texture by using a Camera Direction Vector.

Those two vectors were added and normalized. It is my normal vector that I used to calculate light in every pixel of the particle plane. This method works on heightmaps that have no holes in the middle of it. This method is an approximation, but a very useful one nonetheless. The static effect looked like this:

Real-Time FX Unreal Engine Breakdown - 08_OnlySmokeCore

Texture color is stored on red channel:

Real-Time FX Unreal Engine Breakdown - 09_SmokeAlbedo

Heightmap is stored in blue channel:

Real-Time FX Unreal Engine Breakdown - 10_SmokeHeightmap

Alpha looks like this:

Real-Time FX Unreal Engine Breakdown - 11_SmokeAlpha

Optional Motion Vectors (Used on higher graphics setting):

Real-Time FX Unreal Engine Breakdown - 12_MotionVectors

The lightning part of shader looks like this:

Real-Time FX Unreal Engine Breakdown - 13_LightMaterial

The Motion Vector part is here:

Real-Time FX Unreal Engine Breakdown - 14_MotionVectorsMaterial

For this texture simulation and rendering I used EmberGen.

Real-Time FX Unreal Engine Breakdown - 15_SimFromEmberGen

The tool is a new real time simulation tool for volumetrics. All textures were composited in Houdini to speed up the iteration process.

Real-Time FX Unreal Engine Breakdown - 16_CompositingTexture

Pure FX without animation looks like this:

And when everything is combined in a cutscene, the final result looks like this:

Thank you for taking the time to check out this breakdown. If you want to see more of my work you can check out my ArtStation profile. And of course, if you ever want to learn how to create Real-Time FX, the Realtime FX for Games and Cinematics course here at Rebelway is incredible.

Get Free Realtime FX Course Lessons

You can get free course lessons from Realtime FX for Games and Cinematics by simply filling out the box below. Just follow the prompts after you fill out the box.

Want to Access Free Lessons from This Course? Fill out the form to receive the lessons directly to your inbox.

By filling out this form you agree to receive email communications from Rebelway.

More Inspiration

SideFX Logo

SideFX Certified

Houdini Training

Reeblway Badges

Satisfaction Guaranteed

No risk. Just results.

Autodesk Certified Logo

Autodesk Certified

CG Courses