GPU particle collision only working partially

Hi there

I have encountered an issue with GPU particles: Based on the GPU particle collision sample in the sample content provided by Epic, I have created a rain system. My problem now is that the collision with geometry in the scene only works partially.
I would say that 50% of the particles do collide with scene geometry, the other 50% don’t (e.g. they fall through several layers of objects). This is true for BSP brushes as well as static meshes.

Is there a workaround / fix to get this working?

Cheers,
Michael

Remember that GPU particles can only collide with surfaces you actively see on screen. So let’s say you set up a rain emitter that is emitting particles. You add a two-sided static mesh plane below it.

If you position the camera above it and can see the entire plane, you should see that the collision response is fairly reliable. Few if any particles should fall below the plane.

If you position the camera below it and can see the entire plane, you should again see that collision is fairly reliable and that particles are killed when they pass through the backface.

If you now position the camera below it like a first person camera only a portion of the plane will be visible to the camera. You will start seeing particles falling through the plane because the portion with which they should collide is no longer being rendered.

For occluding environmental effects you need something more reliable. In the past our artists usually fake it. E.g. you attach the rain emitter to the character and disable it when he walks indoors. That can be combined with some level placed effects around doors and windows.

A better technical solution would be to render out a low res top-down shadow map and use that information to cull particles when they collide with an upward facing surface.

Hi Nick

Thanks for clarifying. These facts make GPU particles very cumbersome to use for environmental effects in many cases for our current project, which is a bit dissapointing.

I see how to go ahead with your proposed “fake” solution, where I would wish a bit more background or a tutorial is on how to solve this using the top-down shadow map approach (Haven’t seen/done this yet).

In general: Is there any better solution on the horizon? Are CPU particles the way to go here?

Cheers,
Michael

There are a number of ways you can consider implementing this type of effect. I’d suggest posting on the forums to get advice and feedback from other FX artists on how they’d approach the problem.

I have, and they’ve sent me here to clarify the collision issue for them too :wink:

Anyways, I’ll find a way…

@senress Then I suppose this means that gpu particle collision with the ground is effective, since the ground is seen, nothing below it is seen and as such any particls passing through it are effectively blocked.