About the project
This project started with humble beginnings, a straight forward effect attached to an airplane. It turned into an exploration of vector fields- both authoring and the usage of them, and different ways of creating real-time smoke and clouds. I tried 4-way lightmaps authored in Houdini, and a basic type of raymarching. I use the raymarching technique for the flare smoke, and lightmaps for the explosion. The airplane model wasn’t made by me, it’s made by DM3D on Turbosquid. Environment is from the Landscape Backgrounds content pack by Gokhan Karadayi.
The flares are built using 3 emitters, one CPU-particle for the glowing bit itself, since it has to spawn other particles behind it. Fortunately, it’s this emitter that spawns the fewest particles, only one per system, since each burst is its own system. Studying the references of a flare discharge, I could tell that the movement of the flare was quite interesting, and very spread, which I partly solved using a uniform acceleration module. This made the flares spread out wider, and curve more towards the end of the effect, which brought it closer to my references.
The smoke material is using a sort of basic raymarching where I offset the UVs based on the light vector in tangent space for some number of iterations. It works pretty well for this purpose, but I enjoy the result I got using 4D lightmaps a lot more. It was during this project where I started experimenting with different ways of shading smoke, and I spent some time trying some more advanced raymarching too, just for fun. I knew it would be too much for so many small particles, but I still wanted to explore it.
Since I was going to use GPU-particles for the smoke, I wanted to try and add some interesting movement to it using Vector Fields. Unreal has support for both local and global VFs, global meaning you can attach them to blueprints, or place them in the world as any other object. I got the idea of simulating the velocity around the airplane, sort of like a wind tunnel, and using the result as a VF to make the movement of the smoke more interesting. Houdini was my program of choice for this simulation.
The explosion uses the smoke lighting technique I explain in more detail on its own page. It allowed me to very quickly and easily get a nice looking result, since I was able to reuse most of the assets. I use a sphere mask on each engine to mask out a damaged area, since I didn’t have access to unique UVs from the model.
I got much more comfortable with Houdini during this project. It was the first time I felt like I achieved a result without the assistance of a teacher or a tutorial, with the creation of the lightmap rendering setup. Even though the solution was fairly simple, it will save time every time it gets used; as is the nature of Houdini. If I had more time to spend, I would spend it on two different things: firstly, I would spend more time on the turbulence simulation that I created the vector field from. As of now, it works, but there is some strange movement that doesn’t happen in any reference. Secondly, I would spend more time on the smoke particles. Currently, there is a bit much repetition in the texture, and too much space between the initial particles. A solution I had in mind was to not use a flipbook animation for the smoke, since it is barely visible, and instead get more variation by selecting from a random image in a spritesheet instead.