We’ve been trying to get the physics simulation running in a stable manner under slowed down time (i.e. bullet time) in the Unreal Engine. In our case we slow down time by a factor of 500. When multiple (3 or more) physics objects are stacked however, we often see their collisions being resolved in an extreme manner, resulting in them getting a large impulse from the physics engine and flying away in random directions. This behavior is unexpected and does not look natural at all. We have tried a large range of settings to try get the simulation more stable but without good results.
In our test setup we have 4 objects of different shapes (but all roughly rectangular) and different sizes (smallest 30x20x5 cm, largest 100x70x10 cm) that fall on top of each other under slight angles (rotated 10 degrees). The falling distance is no more than 30 cm. The mass of the colliding objects ranges from 1 to 5 kilos. The game runs at roughly 60 fps.
The whole simulation starts under slowed time. We see the objects falling on top of each other slowly and then suddenly one of the bottom objects gets a strange impulse and that object and the objects on top of it are hurled through the scene (slowly as it is 500 times slower than normal, but a lot faster than they were falling).
On the web we also found the following, which possibly describes the root cause of our problem:
Note that reducing the timestep does not improve the results here. The opposite happens: reducing the timestep makes the explosion even more violent, which is perhaps counter-intuitive. This is because PhysX tries to resolve the overlap in a single simulation call, and to move the object over the same distance in a shorter amount of time, it has to apply a larger force. So everything being otherwise equal, you get a more violent explosion.
We are using the following settings:
Stabilization Threshold: 125.0
Position Solver Iteration Count: 16
Velocity Solver Iteration Count: 4
Restitution combine: Min
Max Depenetration Velocity: 10000
Max Angular Velocity: 3600000
Bounce Threshold Velocity: 800000
Is there anything we can do to improve the situation, or change our setup in any way to make the simulation more stable?