Physics: Incorrect contact normals on rotated components with complex collision meshes

When we updated our local copy of Unreal Engine from 4.11.3 to 4.14.3 we noticed that sometimes collisions against certain walls would produce incorrect responses.

We connected our game to PVD to see if we could visualize the issue.

http://.pixeltailgames.com/i/2017-02-09_19-12-00.png

Each image is a frame of simulation and the white line indicates the velocity of the green ball.
Notice on the frame after contact, the velocity vector is now roughly facing the opposite direction.

We created a test project containing one of our complex meshes and fired golf-balls vertically against a slanted surface of that mesh.

The results of this test seem to indicate that this issue is only happening on complex meshes which had been rotated.

Rotated (0, 0, 90):

http://.pixeltailgames.com/i/2017-02-09_22-07-08.png

Non-Rotated (0, 0, 0):

http://.pixeltailgames.com/i/2017-02-09_22-10-10.png

We were able to reproduce this in an empty project in version 4.14.3 and 4.15 (master branch)
Here is the test project we created to demonstrate the bug: http://.pixeltailgames.com/i/PhysXTest.zip

If there is a simple way to patch out this issue please let us know as soon as possible, we’d like to avoid having to go through all of our maps to un-rotate the offending actors.

Hi ,

I was able to reproduce this in 4.14+ with the test project you provided. However, I attempted to recreate this behavior in 4.11 to verify the regression and I couldn’t get a project that reproduced the issue when it was upgraded. I even exported your assets and used them.

Could you upload a 4.11 version of the test project? Something I can verify that it was working properly and upgrade it to see it break?

Also, as a workaround for the issue; creating collision in the engine or in 3D modeling software before import fixes the issue. ‘Use Complex as Simple’ isn’t incredibly reliable when interacting with physics objects. We always recommend using custom created collision.

We recreated the project in 4.11 (which works fine) and when we tried upgrading it to 4.14.3 / 4.15 by switching the engine version, the problem occurs again.

Thanks for the new test project. I created JIRA UE-41915 for the issue and our developers will be investigating further. Follow that link to monitor the status of the report.

Cheers,

TJ