Issues with Particle Strips in Single Burst Spawn (Visual Effect Graph)

Hi everyone,

I’m running into an issue with the Unity Visual Effect Graph and could use some help.

I’m using a Single Burst Spawn to generate 65 particles for a strip (Particle Per Strip Count: 65), and I’m trying to position them sequentially in a circular arrangement. The idea is for the first and last particles to align, forming a complete loop. However, I’m encountering some strange results:

• The particle IDs appear to be incorrect or start at an unexpected value.

• This causes the particles to position improperly, resulting in a distorted pattern.




Interestingly, when I switch to a Constant Spawn Rate, everything works as expected, and the particles are positioned correctly. The issue seems specific to the Single Burst Spawn mode. EDIT: I’m getting the same issue if my spawn rate is too high. Is this a race condition?

I’m using Unity 2022.3.53f1 (LTS) Apple Silicon, and I’ve attached screenshots of the results to illustrate the problem.

Has anyone else experienced something like this? Is there a workaround or a way to ensure the particle IDs are generated correctly for Single Burst Spawns? Or is something else going on here?

Thanks in advance for any insights!

Best,
Simon

Ok, I solved it by getting particle index in strip and using that to drive the Position Sequential Block. I kiiinda feel like this should be a dropdown option on Position Sequential to avoid confusion because finding Get Particle Index in Strip was quite the journey. EDIT: especially because it almost works so I thought I was on the right track.

Morning. I’m sorry about your experience. There are some technical subtleties and when it comes to Strip/Ribbon because they must be ordered. Particles are processed by 64, and if your particles numbers are lower than 64, using the particle ID can be correct. But I won’t go over the technical details, as I would be afraid of explaining wrongly. So to make it simple, when dealing with strip/ribbon,
it’s better to use the dedicated strip attributes:

* Strip Index
* Spawn Index In Strip
* Particle ID In Strip
* Particle Count int Strip

Now, I agree with you that but should be more straightforward and discoverable. We could add the ParticleID in Strip option in the Block that are based on the ParticleID. Or do something a little more implicit (using either ParticleID, or ParticleID in Strip ) based on the Particle Data.

Thanks for getting back to me, even though I already did find the solution to my problem. But now I’m wondering, what is actually the difference between Spawn Index in Strip and Particle Index in Strip? Are they the same? How do they differ?

The SpawnIndex as for the SpawnIndexinStrip is the Index value that ranges from 0 to the Number of particles spawn in the same frame.
So, from one frame to the other, Two particles can have the same ID:
ex: Frame 01 : Burst of 5 particles → spawnindex values of those particles will range from 0 to 4.
Frame 02: Burst of 10 particles → spawnIndex values of those particles will range from 0 to 9.

For particle ID, this ID is unique.
ex: Frame 01 : Burst of 5 particles → ParitcleID will range from 0 to 4.
Frame 02: Burst of 10 particles → ParitcleID value will range from 5 to 14.

So for spawnIndexinStrip and ParticleIDinStrip it’s the same principle. Now, if you spawn all particles in a single burst and only have one loop. Then they’ll be no differences between spawnIndex and ParticleID values.

Does this help?

Thank you so much for taking the time to answer me. I think that helps a tremendous amount, and it makes it clear to me what they each mean. I think the reference in the documentation could be more thorough in explaining this, but I think your explanation was great. Thanks.

1 Like