Niagara Key Concepts

Critical concepts for working with particles in Unreal and the Niagara, particle editor.

Windows
MacOS
Linux

With the Niagara Editor, you can create a wide range of visual effects to meet any Unreal Engine project needs. For all types of visual effects, Niagara is powerful and flexible enough to handle whatever your project requires. In this document, we will take a high-level look at how Niagara is different from Cascade, and also how all the parts of the Niagara Editor work together.

A Modular Approach to Particle Effects

The primary concept of Cascade was to make the creation of effects modular whenever possible. Cascade achieved this by supplying a default set of modules when any new effect was created, as well as providing tools to add additional modules or entirely new emitters based on what the visual effect artist needed to achieve. While this system worked well for many years, it had some issues that made certain tasks time-consuming and prone to error, such as sharing data between effects, or updating many effects at once.

A Cascade Particle System is made up of a collection of emitters.

Niagara addresses those issues by fully embracing modularity. Niagara separates the individual emitters that make up a particle system. Instead of having the particle system contain each emitter, Niagara Systems are comprised of many individual Niagara Emitters. Each of these Niagara Emitters contains a single effect controlled using modules you are familiar with, such as Lifetime, Location and Size,and these modules adjust how the particles look and behave. However, because these Niagara Emitters are independent actors saved in the Content Browser, they can be updated and shared with any Niagara System that you want to create. This means you can make changes to your emitters in less time.

NiagaraSystemWithEmitters.jpg

A Niagara System is made up of a collection of Niagara Emitters.

Niagara Emitter

Niagara Emitters contain the various settings that create the special effect you want in your project.  The Niagara Emitter Wizard section on this page describes the wizard, and shows you the various options for creating emitters. The Niagara Emitter Modules section on this page lists the default sections in the Selected Emitters panel, and describes when each section runs and what it does.

Niagara Emitter Wizard

When you create a new Niagara Emitter, a dialog displays with a choice of options for creating the emitter.

  • You can create new emitters from a set of templates. These templates present several types of commonly used emitters. If you work with a large development studio, these templates can be curated by the art leads, ensuring that best practices are baked into the templates. The templates also provide a great starting point if you are new to Unreal Engine.
    NiagaraEmitter_FountainTemplate.png

  • You can create new emitters from a list of existing emitters. This can be useful if you need to create several similar emitters, for one system or multiple systems.
    NiagaraEmitter_CopyExistingEmitters.png

  • You can create a new emitter that is entirely empty.
    NiagaraEmitter_BlankEmitter-opt.png

Niagara Emitter Modules

When you create or open up a Niagara Emitter, it will come with some default modules that can be found in the Selected Emitters tab. Inside this tab, you will see the following options that can be expanded and edited. Each of these modules will affect how the emitter spawns and behaves over its lifetime.

NiagaraEmitter.png

Emitter Spawn

The Emitter Spawn section is run when the emitter starts up. This is similar to a Construction Script for Blueprints, in that it performs a one-time setup that can be used in later scripts. It can't reference individual particles, but it can be used to set emitter variables, run emitter modules, and set up variables that will be used in the particle scripts.

Emitter Update

The Emitter Update section is run in every frame that the Emitter is active. Users can determine how many particles to spawn, compute constant values for use in particle update scripts, and do other per-frame "tick" logic for the emitter here. It is important to have the Emitter Lifecycle module in this section, to ensure that all of the lifecycle logic is executed for each emitter. This allows the system to properly shut down.

Particle Spawn

The Particle Spawn section is run once every time a particle is born. Users can use this section to set the initial state for the particle. If the Emitter is not set to use Interpolated Spawn, the output from this section will define the state of the particle for the first frame it is rendered. If Interpolated Spawning does occur, the particles will be evenly spread out in the time range from the previous frame. If not, an instantaneous burst occurs and the update script will be run for each particle, for the fractional amount of the frame since it was created. This allows users to achieve smooth trails, and it can also be used to allow the particle update script to define the state of the particle for the first frame that it is rendered. If you need randomness to differentiate each particle, choose your random values in the spawn script, and store that value for use in each subsequent update "tick."

Particle Update

The Particle Update section controls how an individual particle will behave over its life. The user can make changes to physical simulation attributes, rendering attributes, and so on within this section. If the user wishes to broadcast data to other emitters, modules that emit events can occur in this section. It is important to have the Update Age module in this section to ensure that each particle continues to age and eventually die once it has passed its lifetime.

Add Event Handler

The Add Event Handler section determines how this emitter will respond to incoming events from collision or other emitters.

Render

The Render section includes one or more of the following modules:

  • Niagara Light Renderer Properties: This module includes the Light Rendering and Sort Order settings.

  • Niagara Mesh Renderer Properties: This module includes the Mesh Rendering, Sorting, Bindings, and Sort Order settings.

  • Niagara Ribbon Renderer Properties: This module includes the Ribbon Rendering and Sort Order settings.

  • Niagara Sprite Renderer Properties: This module includes Sprite Rendering, Sorting, Sub UV, Bindings, and Sort Order settings.

You can add variables, parameters or modules to each of the sections shown above by clicking on the Plus (+) icon. You can also delete any variable, setting or module by clicking on the Trashcan icon.

Niagara System

To use a Niagara Emitter in your project, it must be placed into a Niagara System. A Niagara System is used to display the individual Niagara Emitters that have been created to make an effect. This also makes it very easy to mix and match different Niagara emitters, or to create entirely new effects using only the existing emitters.

To create a Niagara System, you will use the Niagara System wizard. There are multiple options listed in the wizard, to make it easier for you to create the Niagara System that best fits your project.

  • You can create a system from a list of templates. These templates present several types of commonly used systems. If you work with a large development studio, these templates can be curated by the art leads, ensuring that best practices are baked into the templates. The templates also provide a great starting point if you are new to Unreal Engine.
    NiagaraSystem_TemplateOptions.png

  • You can create a new system from any emitters you have created. Use this option if you’ve already created the emitters you need.
    NiagaraSystem_CreateFromEmitter.png

  • You can copy a system that already exists in your project.
    NiagaraSystem_CopyFromExisting.png

  • You can create an empty system.
    NiagaraSystem_BlankSystem.png

To add a Niagara Emitter to a Niagara System, drag your Niagara Emitter from the Content Browser onto the Track section of the Timeline.

You can change a property in an emitter after you add it to the system. Find and select the emitter in the Timeline, and the Selected Emitter panel displays the modules and properties for your emitter. Now you can adjust the properties in that emitter.

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback