Playing a Niagara System in Reverse

Hey all again,

Been awhile and thanks again for all the help in past times.

So I wanted to ask everyone their thoughts on reversing a Niagara system, as in playing a Niagara system in realtime backwards.

From initial experiments I thought as it could play backwards in the sequencer, that I would be able to do the same in real time. However after investigation, it seems like technically when you are playing a Niagara system backwards its actually doing another sim, so in my situation that is not what I’m looking for.

After looking further into it, I have read about driving a Niagara systems not by time but by a value that I pass in.

The end goal is to be able to play a Niagara system by a parameter (set between 0-1) so that at 1 its the end of the systems life cycle and 0 is the start, so it can be played back and forth.

I wondered if this was a valid way of going? Anyone had experience in this or have a better recommendation?

All input is always appreciated, cheers all!

It sounds like something in Life Is Strange 1, isn’t it? I don’t have any actual experience in such effect, but I think UE 5.1’s new feature for Niagara “Simulation Cache” would interest you, but it’s an early experimental feature. There is no official documentation about it whatsoever, I don’t see any relevant resource in Epic’s Content Examples either, but I could be wrong. Even if you could get Sim Cache to work now, there is no guarantee it would work in the next UE update.

A rather primitive approach as you’ve already suggested is to use a float user parameter to act as a lerp alpha/curve index/time base to slide between the initial and destination positions of all particles. You can’t rewind velocity/force driven motion (not without Sim Cache anyway), so all particle movements have to be faked by direct manipulation of the binding position attribute.

I set the System attribute “CustomTime” in System Update stage so I don’t need to use a BP to control the user parameter or slide the time value manually. Again you’d expose the float value via user parameter and fetch the time value from blueprint.

1 Like