Niagara Time Dilation?

Hello!

After a bunch of tentatives, I was not able to figure out how to achieve in Niagara a similar result to “Set Custom Time Dilation” for Cascade Particles System.

Is this result not possible for Niagara at the moment, or does somebody have an idea on how to achieve this result in a Niagara Particle System?

Thank you.

Hello,

You can implement a sort of Custom Time Dilation by using that setup:

I hope they will bring back that handy feature because that setup is not very ideal. Also the ‘Set Paused’ is important as the engine will crash at the end of the simulation otherwise.

@xitis
I was trying achieve this in 4.26. There’s now a node called “advance simulation BY TIME” but I’m now sure how to get it working. Do you know if that would help?

@xitis and all others

If your time runs at e.g. 1/20 or 0.05 you can set it up like this to get back to normal speed for the Niagara effect:

Global time dilation affects the whole level. This is not a good option for me. :confused:

1 Like

He’s using Advance Simulation by Time node to negate the effects of global time dilation. EG if you need the global time to be in slowmo, but want the particles to run normal speed, you can multiply the “Simulate Time” by a factor. In this case 20, to counteract the 1/20th global speed.

Hi, I know the thread is a bit old but since I had a working solution I thought I’d share.

It’s true that you can’t access Global Time Dilation value itself through Niagara but you can guess the value pretty easily, since Engine.Time is affected by GlobalTimeDilation.

Create a float emitter variable called PreviousTime, Set it to Engine.Time value at the end of Emitter Update
Create another float emitter variable, Set it to

(Engine.Time - PreviousTime) divided by Engine.DeltaTime
Engine.DeltaTime is the time from one tick to the next.

In theory that should be enough, but I’m not encountering the right results, my guess would be that, somehow, Engine.DeltaTime variable is also affected by GlobalTimeDilation, so just save Engine.DeltaTime into another float emitter variable when GlobalTimeDilation is still 1.0.

If your fps are always capped at a specific rate like 60 fps, you can also enter the value manually, 1/60
I get better results that way so I suppose this is how it works.

Don’t forget to clamp the result to your desired range since fps do vary from one frame to another, you wouldn’t want the sudden difference to be noticeable.

Now if your idea is to have a blueprint change a custom “playrate” value for your niagara, you could just make a user parameter and use it in your system.

Regards.

3 Likes