[Niagara 4.25] Ribbon Trail Mini Tutorial

[Niagara 4.25] Ribbon Trail Mini Tutorial

Ribbons show some really strange behaviour, so I wanted to create a quick writeup on how I setup particle trails to work quite reliably (for now).

  1. Create a new empty Niagara particle system
    image

  2. Add a new emitter from the fountain template and add a Generate Location Event Module inside of the particle update stage.
    You can call it something like source.
    Note: This should work on every cpu particle system, not on gpu though


    You can remove inheritance by right clicking on the emitter in the system view and clicking Remove Parent Emitter
    image

  3. Niagara will throw an error here asking to enable persistent Id’s, so let’s just tick this box here.
    Under the Emitter properties module
    image

  4. Create a new emitter empty emitter, add Initialize Ribbon, and ribbon renderer modules to the emitter. (You can use the sprite renderer to debug if you want, but for now, just delete it.)

  5. In the event handler, press the “Plus sign” once to add the Event Handler Properties module.
    Then press it once more and add a Recieve Location Event Module.

  6. Under Event Handler Properties, Set these settings.
    image
    _You should be able to find your Source emitters location event in the drop down box.
    image

  7. In the ribbon render, make sure you set UV0Tiling Distance to a high number (Like 500)
    The default value causes the ribbons to flicker when using uv’s in your material
    image

The end result should look something like this:
RibbonExample

tldr: Use location event generater and reciever with spawned particles to spawn ribbon particles, make sure you UV0Tiling Distance is a large number to stop flickering.

Hopefully that helps.

16 Likes

thanks for the tutorial! <3 on nice addition would be, to fade the trail out before the particle dies so that the trail never stops all the sudden but fades out while still in motion.

3 Likes

Source particle age is part of the payload, you can set the reciever to inherit the normalized age of the source using this tickbox.
image

However, this doesn’t seem to work particularly well with ribbons. I’m still looking into it though, perhaps there is a better way.


Update

So here is a work around.
RibbonExample2


Copy this into a module script


This will read the source particles Normalized Age so we can use it later.


Add the module in particle update after Particle State, but before any other update scripts (At least before any that you are planning to be affected by your source particle)
image

Now you can use a color module and use Particles.SourceParticleAge to animate the alpha of the trail.
image

Hopefully that helps!

11 Likes

wow, thanks for putting in the work to go this extra-mile! <3

4 Likes

Hello

Ask elementary questions.

I don’t know how to create Input in MapScript of Module Script.

Where did you call Get Float by ID?

1 Like

英語のバージョンはこっち

Press the plus icon, then under Create New Parameter, choose New Particle Attribute Reader
プラスアイコンを押してCreate New Particle にNew Particle attribute Readerを作ってください。
image
image

Then pull a line from the new parameter and choose Get Float By ID under the Particle Attribute Reader section
そしてそのParticle Attribute Readerから線を繋げてGet Float By Id を選んでください。
image

多分日本語のバージョンちょっと違うかな :thinking:

3 Likes

Thanks for the quick reply

Thank you for quick reply even if you connect from Out put of If to Map set

Souce Particle Age does not appear even if connected from Out put of If to Map set.

How did this come from?

1 Like

That’s because it is not a default parameter, you’re gona have to add it like this.
デフォルトパラメタじゃないので、ここに追加した方がいいですね。


image

1 Like

I have the same Node combination as you.
Thank you.

However, adding this Module to the Task gives me an error.
Do you know what the cause is?

1 Like

In GetFloatById, you typed [NormalizeAge] instead of [NormalizedAge], It probably doesn’t find the attribute because of that.
If that doesn’t fix the problem, could you pm me the message log?

GetFloatByIdのAttributeはNormalizeAgeじゃなくてNormalizedAgeに直すべき。NormalizeAgeがないから見つけれない。
問題が解決しない場合メッセージログをメイルで見せてください。

1 Like

Really appreciate you taking the time to do this Wyvery, this is invaluable as we start to amass more group knowledge about these basic processes and take them to advanced uses. Arigato!

3 Likes

Thank you for making a rudimentary mistake.

Hmm, but the error continues.

Is the error log OK with these images?

2 Likes

You’ll want to set Emitter Name field to the source emitter.

1 Like

I typed it in capital letters but it didn’t work…
SnapCrab_NoName_2020-6-16_1-18-10_No-00

1 Like

彼はエミッターの実際の名前を意味します。
Kare wa emittā no jissai no namae o imi shimasu.

He means the Actual name of the emitter. :slight_smile:

2 Likes

FYI ticking ‘Inherit Normalized Age’ was the only thing that seemed to prevent the trails from occasionally flickering.

1 Like

As far as I remember, ticking it will cause it to flicker at the end.

However, if your tiling distance isn’t set, and you have a lot of trails, that might also cause it to flicker in some cases. (unless if they fixed that allready)

1 Like

Yeah I’d need to experiment around with it more. Setting it up the way you show gives me occasional flicker (and it seems like it’s the trail flickering specifically, and only after a certain period of time). But ticking that box eliminated the flicker for me. I need to basically turn everything off and start adding elements to pinpoint where the issue begins. I know I’ve been several complaints about flickering ribbons in the last few months, but am not sure what the 100% definitive answer is.

1 Like

Thank you very much.

It worked well :スマイリー:

4 Likes

This is a brilliant tutorial thank you so much for posting! I’ve found the best results with this come from declaring a colour in spawn, then in a scale colour module multiply the alpha by a curve based on the ribbons life and a curve based on the output from the module.

1 Like