We are trying to use Niagara Data Channels (NDC) to Simulate Burst Effect which has Multiple Emitters set to Spawn Different Particle Count and Different Timings. However, When the Niagara System is Simulated using NDC, It Spawns all the Emitters with Same Spawn Count and Timings, Disrupting the Visuals. The only proper tutorial we were able to find was demonstrating a Single Emitter System and so it wasn’t clear on steps to take for Multi Emitter ones. Any and all Help/Suggestions are much appreciated.
We referred to the Following resources for our NDC Implementation, In the given order:
Spawning from NDC is fine with multiple emitters. You can just feed a new min/max spawn count into the Spawn Conditional function. Did you use the module wizard or create manaully? If you can share a project or images of your setup I can help debug for you.
As for adding delays, that might be a bit trickier but possible.
You have to consume the NDC data on the frame it exists as that data is entirely transient and will be gone next Tick.
You could spawn your particles at t0 and force their state to remain at the initial state until t > delay?
i.e. add a module that sets Particles.Position = Particlas.Initial.Position etc if t < delay.
I’ve added the Code snippets for Reading from NDC and Writing to NDC respectively. These Niagara Module Scripts were created manually. lastly, I’ve Attached a ScreenShot of how it is attached to the Emitter. Please take a look at these and lemme know if something is wrong with this setup.
I can’t seem to see the code snippets you mention. Looking at your modules they seem correct. A couple of things I can see that may cause issue.
1. You’re using Input.Emitter ID rather than Engine.Emitter.ID. Perhaps you set Input.Emitter ID to the correct value from the modules details but this is not shown. Can you upload a picture of your modules details settings?
2 You could be hitting an aliasing bug we had encountered when Setting one DI to another. Here you’re setting Input.NDCReader into Emitter.NDCReader. In some configurations this kind of aliasing does not work in 5.5. It should be fixed in a future update. I find the best way to use the NDC reader DI is to have one at the System level. System.NDCReader. And then explicitly pass this in as an Input.NDCReader into each user module.
Can you upload screenshots of your module details, including Initialize particle?
If we can’t find the issue here I’m happy to debug if you could upload a test project that show’s the issue?