Help! Niagara collision with other emitters or camera

Hi guys, I am currently having huge issue. I am trying to make a particle effect that would hit a ‘‘screen’’
just imagine sparks that burst in to more sparks when hitting the screen and leaving there a little black stain for a second.

What I tried to do: create a particle with collision event and death event - basic stuff, particle upon collision dies and spawns the burst of more sparks and leaves a little hanging stain. I used analytical plane on collision module to sort of simulate the screen, the issue is I cant put that analytical plane to a camera since I dont have control over its positioning in world space. and also the stain should stick to the stuff it hits.

Other thing I am trying is to make two different emitters to collide with each other. The sparks and mesh plane hanging in the air. Is it even possible for these two to collide thus creating the death event particles? So far the particles always goes through the plane.

Third thing that I am thinking about is to make two systems somehow collide with each other.

Is there a standard way how to do these particles somehow interacting with screen? Please if anybody know I would be happy for your answer.

I’ve done the camera collision before. You’ll need to use the camera interface to get the depth of the particle in update, if particle depth is smaller than your collision depth (and on screen) you have a collision.

In my use case I had a run once function store the camera local position of the particle so I could have it stick to the view after collision.

Thank you, I would like to try what u did. I guess you dont have any step by step how to do this right?

I’m not at my PC but this is roughly what I did.

I used a GPU sim which gives you more information from the camera interface and makes it a bit easier

  • use the world to clip transform matrix from the camera interface to transform the world position of the particle into clip space using Matrix multiply vector4, append a 1 to your position vector to turn it into a vector 4. The result should give you the X, Y position and depth in the W component I think.

  • compare the depth against what you want to use for your collision plane. If it is smaller then check X, Y to make sure the particle was on screen I think you need to divide by W to get it in the range -1…1 then if abs(X) or abs(y) greater than 1 then it is offscreen