Description

Consider a Niagara System with an Emitter in "Global Space" that has "Interpolated Spawning" active and a "Spawn Burst Instantaneous" module with a "Spawn Time" of 0.0 (for example, the built-in ConfettiBurst Emitter).

Now consider that the corresponding Niagara Component in the level is moved and then reset and (re)activated in the same Blueprint Event, in the same frame.

In such a scenario, if the Niagara System / Emitter was previously inactive, the burst spawn will correctly happen at the newly set location of the component.

However, if the Niagara System / Emitter was active at the time of the move+reset (for example, while still having live particles from a previous activation), the burst spawn will unexpectedly happen at the old location of the component, where it was in the previous frame before being moved.

This unexpected behavior probably happens because the "Spawn Burst Instantaneous" module with "Interpolated Spawning" ends up using a Spawn Interpolation of 0.0, which results in the previous frame's location being used for the burst.

 

Steps to Reproduce
  • Create a new Niagara System with the built-in ConfettiBurst Emitter (or any other emitter in "Global Space" with "Interpolated Spawning" and a "Spawn Burst Instantaneous" module with a "Spawn Time" of 0.0).
  • Drag the Niagara System in the level. Create a new Blueprint from the resulting actor. Add a small shape (for example, a Sphere or Cube with scale 0.1) as a child of the Niagara Component to visually keep track of its location.
  • On the Event Graph:
  • implement BeginPlay with an EnableInput node
  • add a keyboard event which just calls NiagaraComponent->Activate(Reset = true)
  • add a keyboard event which calls Self->AddActorLocalOffset(0,100,0) followed by NiagaraComponent->Activate(Reset = true)
  • Compile and save
  • Play in Editor
  • Press the key that just activates the NiagaraComponent. The burst happens at the correct location.
  • Press the key that moves and reactivates the NiagaraComponent
  • If the Niagara System was inactive, the component moves and the burst happens at the new location.
  • If the Niagara System was still active, the component moves but the burst happens at the old location.
  • Notes:
  • The behavior is as expected if "Interpolated Spawning" is deactivated, but that might not always be desired.
  • Interestingly, the behavior is as expected if "Spawn Burst Instantaneous" has a "Spawn Time" of a tiny value such as 0.001.
  • The behavior is as expected if "ReinitializeSystem" is called instead of just "Activate", but then particles from any previous activations are killed prematurely.

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-209013 in the post.

0
Login to Vote

Backlogged
ComponentUE - Niagara
Affects Versions5.2.15.3.2
Target Fix5.5
CreatedMar 6, 2024
UpdatedApr 2, 2024