GPU Particle collision with normals on material

GPU particle collision seems to not respond well with an object that has a normal map applied to it. I have tried a number of normal maps:

Blank normal seems to be okay,
Aggressive normal is horrible for collision of GPU particles.

Do I need to normalize my normal maps or is this is a bug?

Hi Ryan -

I am not seeing the results that you are showing above in my test project. Can you take a look and make any adjustments you need to the project?

Thank You

Eric Ketchum

Test Project

I’m having trouble attaching my zipped version of your test project, but basically I put an acceleration on the particles of -980 in the Z direction to simulate gravity. 95% of them go through on the first bounce, and about 100% on the second bounce. Take away the normal map and they bounce or slide over the surface until they expire.

Hi Ryan -

Thank you for the additional information. That’s what I needed to get the reproduction. I have entered a bug report as UE-17338. I will keep you informed as we investigate a solution to this issue.

Eric Ketchum

Hi Ryan -

As we investigated this issue, it was pointed out that Scene Depth Collision uses per-pixel normals for collision so changing the normals should change the collision behavior, but in your example and in the original test project multiplying normals by a factor of 10 (very large factor) and then normalizing it likely pushes the normal towards values tangent to the real surface which means when the plane is reconstructed for GPU collision using the normal the two geometries will no longer match each other and you will get this type of behavior.

The functioning of the Scene Depth Collision is working as intended and as designed.

Thank You

Eric Ketchum

It would be nice to turn normal maps, and/or tessellation off for scene depth collision. Is this possible?

Hi Ryan -

Not directly the Scene Depth Collision uses the Z Buffer and short of coding the normal out of the Buffer it is not possible in 4.8. IN 4.9, you will be able to use Mesh Distance Fields for GPU Collisions which will ignore Normals.

Thank You

Eric Ketchum