[Niagara] Module suggestions (and hopes)

This thread has been long coming.
Wanted to write one a while ago but busy life is busy.
With Niagara on the horizon (for quite a while now :p) and me using cascade more often than my front door…
I wanted to write down a list of things I feel are currently missing in ue4’s Cascade.
And I am sure the awesome team working on niagara is adding awesomesauce features, buuuut… just in case I will add my few cents as well :slight_smile:

I will probably update the list quite often when I hit walls, get a spark of inspiration, or after I took one of those philosophical showers.

Keep in mind that I dont know how Niagara will work exactly, so my pov will be that of cascade.
there is always the off- something already exists, and I didn’t know about it, or never learned properly how to use it :slight_smile:
here goes:

anything that is “Over life” could use an “over time” version as well, preferable with a looping time (i.e. after 2 seconds, or loop between each 1.5 - 2.5 seconds thing)
which was available in udk, but just… didn’t make it in ue4

mesh data module where you can input multiple meshes, and either spawn in sequence, or random.

Screen space location module (id sell my soul for that)
so it doesn’t matter where the particle is emitted, it takes screen-space location as its origin, this is handy for 2d sidescrollers
very valuable as it wont take into account that i.e. the character is moving really fast trough world-space, which can bleep-up particles a lot.

required node alts:
emitter duration uniform option (so it can have a min/max)
emitter loops uniform option.
emitter delay uniform option.

spawn module:
burst list count with uniform option.

initial mesh size module:
where XYZ are always identical, but can scale uniformly.

any “vector uniform curve” could use an alteration where there is an option for “only change on spawn”
so if you have a color set to vector uniform curve, it doesn’t change color 100m times over life, but it takes a random start color, random end color, and curves between that.

ribbon orbit module:
one that actually allows ribbons to properly follow particles that have the orbit module.

Camera offset module:
For pgu particles.

Light module
Seriously, that stuff is so bleepin broken and bad for fps atm… really needs an overhaul. (breaks lighting channels and other mumbojumbo)

Pivot offset module:
one that works for meshes would be great, especially if you have two types of rotators, one that rotates the mesh on its original pivot, and another one that takes the offset into account.
Would save me a load of useless blueprints.

location modules:
Besides sphere, cylinder, triangle… a custom shape either trough meshes or splines would be awesome.

Follow spline module
Something that makes emitter particles follow a spline, not the emitter itself, i mean the particles (any, ribbon, gpu, cpu, mesh)
Size by speed module:**
size by speed over time, size by speed over life.
size by speed uniform, etc. (min/size)

Sound module
Add sounds to this stuff, trust me… you’ll make their lives better!

Save/load curves
Please add this back in, i do save some curves in .txt files but its soooo annying.
UDK had this.

Particle instancing
like material instances, but able to disable/disable modules etc.
not sure if there is any performance benefit from it, but it sounds cool in my head.
then again, “get on my horse” also sounds awesome in my mind.

basically anything from the PEX code plugin… (Galaxy, swarm movement, spawn on mesh surface, turbulence, heightmap, colormap, force points, jiggle)

— that’s it for now.
More to come.

Keep up the great work!

Event generator:
event generator with a timed offset. so i.e. 0.5 seconds before/after kill/spawn/etc.

Mesh Surface:
spawn on mesh surface, but with a vertex color option. so it only spawns on vertices with X color, where x is whatever color I input. (or alternatively, use a mask texture for it)

2 words: flow control.

Some internal event graph would be suuuuper handy.

So finally you made the post, nice, not sure if you included what we commented but tbh not sure what was lol

Hope so, though I should have taken notes.
oh well, more to come over time :slight_smile:

I am sure baxter will add a nice list as well.
/me also looks at all the other cascade-using people and hope they contribute :slight_smile:

Hi Luos!

So I thought these would open up a lot of possibilites in Unreal:

  1. Vector aligned particles
    As in orienting a particle according to a custom-set, vector. (And controlling this vector via uniform distribution and/or curves.)

  2. Control parameters with noise (Size, color, velocity, rotation by e.g. curl noise)

  3. Particle emission masks by color, surface, brightness, texture etc.

  4. Better previewing capabilities (e.g. not having to playback from the start each time you make a parameter change)

Yes, I totally just stole those from the inFAMOUS: Second Son talk. :smiley:


  • Nico

Btw, how is niagara preview? same as current one, in the middle of black nowhere? if yes, its need to be changed.

How about some access to global parameters :wink: Like MPC in materials but in any given property of particle. Or some other way to manage large amount of particles on level.

Thanks for all these suggestions, I’m gathering’s ideas up and handing them off where I can. Keep it up :smiley:

I remember media molecule (or sumo digital by then) going “sorry we cant add these because people suggested them publicly, so dont get your hopes up”
Your reply is way better :slight_smile:

update: added two more ideas that popped up in my head.

I’m not that experienced with ue4 particles, so @Luos , can be such a thingmade on unreal particle systems? Particles drop down and when hit spawn mesh per particle, or its basically a part of “internal event graph” suggestion?

can be done :slight_smile: :

There are some more amazing samples floating around on twitter, but this list kind of compresses it to all the new awesomesauce that was added to the latest unity update.
I am sure you dev’s have seen them, but I felt the need to add them nonetheless :slight_smile:

/me really hopes more people will post suggestions.


A module or node or whatever that allows me to change the sorting order in Niagara would be amazing.
The awesome guy who made the PEX plugin added this (and a few other features I suggested) to PEX, and it has been a lifesaver!

Ability to use text characters as particles, so it would be possible to make text/dialogue with particles. PopcornFX has this, it is a bit hard to set up but it works. they use a texture atlas and some code to arrange the characters as words. It can be great to set up UI text and speech bubbles!

A TIMELINE a timeline a timeline…! to navigate easily on the particle preview

And why not some option like Onion skin in Flash/Animate, a real playspeed control

The possibility to copy paste values on constant curve (like form 0 to 2 sec and then past the values to 2 to 4)

Be able to change In val into real sec

and to be able to have Wireframe and lit/unlit

If there will be a timeline, why not a key to frame for like scale, position etc… It can be really handy especially on mesh

I’ll add more if I find anything else useful :3

A better C++ API would be awesome!
Right now you can make a subclass of UParticleModule, but have to reimplement all of its methods. And even then you can only work within your module with the particles you get: no easy interaction with other modules, you can’t spawn new particles, etc.

Also, it would be cool if we had greater control over GPU particles, right now they cannot be updated after they spawned.

We need this:

And after a tiny Nudge, Cultrarius made this:

another great thing that should be in niagara :slight_smile:

Just thought of something (Thanks Shain)

What if there is a global Initial/Size over life/Any scale actually module that scales all the initial size/over life/over time/any other value of the same module?
So a “Global Initial Size” module would scale all the regular Initial Size Modules in the emitter.

That be cash!

I would like to have a parameter module, which can contain basic types like Rotator,Vector2, Vector3, Vector4,int, float etc.

The two features I would like to see are mask driven emission and surface attraction with friction, gravity, jitter…etc.