Create Smoke Trails in Ue4

How to create smoke trails in Ue4 using Niagara

Tim Engelke
4 min readJul 25, 2020

This tutorial will show you how to create a ribbon-based smoke trail in Niagara. Typical use cases for this type of smoke range from candle smoke to cigarette smoke and more.

Let’s start!

Result

The final result will look like this:

Material

Overview:

To create the material, you need two textures: one Perlin noise and one gradient. Feel free to use these two in your material:

Noise
Gradient
Material overview

The material setup is pretty simple.

Input the panner node into the noise texture to create a slight movement.
With the RaiseBlackLevelsByPercentage node, the black/darker parts of the noise will be raised to a brighter value based on the intensity input. We do this to have control over the maximum opacity of the smoke.

Then, multiply the outcome of the RaiseBlackLevelsByPercentage node with the alpha channel from the Particle color node to give the particle system control over the smoke opacity.

The last step is to subtract the noise texture with the gradient map. To get a curvy border which is more smoke like rather than a straight border.

Niagara particle system

Create a new Niagara System called SmokeTrail_System. Inside the Niagara system editor, create a new Niagara emitter called SmokeTrail.

Overview

Try to recreate this emitter in your project. I will define and explain the settings of each module in the next step.

Settings

Depending on how you want your smoke to look, you have many parameters to change. I will list the parameter values of the smoke trail you see at the start, but I recommend to play with the parameters to get the result you exactly want.

— SpawnRate —
SpawnRate
: 50
Higher spawn rates result in smoother looks and more curling.

— Initialize Ribbon —
Lifetime
: 5
Ribbon Width: 3

— Add Velocity —
Velocity
: Vector (X: 0| Y: 0| Z: 30)
Higher velocity decreases curling.

— Color —

Color/Alpha Curve

— Vortex Force —
Vortex Force Amount
: 1000
Vortex Axis: Vector(X: 0.0| Y: 1.0| Z: 0.0)

The vortex force helps to add more realistic-looking curls to the flame. Try to deactivate it, and see the difference!

— Vector Noise Force —
Force Amount
: 100
Applies a random jitter to the position for each ribbon each frame.
Higher values(+1000) bring a bad result very fast.

— Curl Noise Force —
The curl noise is where most of the magic happens.

Noise Strength:

Linear increase for the noise strength

As the smoke should get curlier in its later life. Simply use a curve to increase the noise strength as time passes.

Scale Curve: 2650
A multiplier of the curve e.g. the strength

Noise Frequency: 0,09
Higher values result in more but smaller curls.

Noise Quality / Cost: Baked(High)
Depending on the platform you develop on, you may want to choose a lower setting.

Pan Noise Field: Vector(X: 0.2 | Y: 0.2 | Z: 0.0)
Movement of the noise — creates a more random look

— Scale Velocity —

Decrease the velocity of the smoke over time. As the velocity decreases, the curl noise has more effect.

— Ribbon Renderer —
Material
: Select the previously created material

That’s all!
As I said, take some time and play with the various parameters to get the result you wish. Sometimes small changes will change the look completely.

Do you want to learn more about game development?
Check out https://gameinspired.substack.com/ and bring yourself to the next level!

--

--

Tim Engelke

Just an aspiring game developer — I write about game development, art and other things that come to my mind.