Repository: godot
Issue: Insufficient processing of RigidBody in the physics engine (Bullet and Godot)
Labels: bug,topic:physics

I sincerely regret that reports of perennial and unrecoverable bugs in basic mechanics of the Godot engine create problems and pressure on participants. However, I am forced to renew this: https://github.com/godotengine/godot/issues/44664. Obviously this is not a duplicate message and redirecting it to: https://github.com/godotengine/godot/issues/9071 was not constructive.


**Godot version:**

2.Х/3.Х/4.Х(?)


**OS/device including version:**

All


**Issue description:**

RigidBody objects fall through meshes of collisions of other bodies (StaticBody, KinematicBody, RigidBody) as a result of interaction with another active RigidBody (for example, the player stepped on or pushed an object) or other force applied to it. 

When using Godot, RigidBody physics (not Bullets physics) with a small colision form can fail on their own or from the slightest interaction with any other object.


**Steps to reproduce:**

1. open the attached demo project;
2. open the project settings and set the physics (Bullet or Godot) that you will test;
3. run the project and select the player's body type from the menu;
4. Use the [o] and [p] keys on the keyboard to generate a SmallObject "Lid" and a BigObject "Figurine" (RigidBody);
5. Controlling the player, press the generated objects to the floor or walls (the simplest thing is to pinch the statues in the corner);

At the top of the screen, you can see statistics for SmallObject and BigObject in section: generated / fall out/ now in the scene.

I see the following result: https://vimple.co/ae96c02e0b99470e8a237412a19350a2


**Minimal reproduction project:**

[TestPhysics.zip](https://github.com/godotengine/godot/files/5814594/TestPhysics.zip)


**More detailed:**

My test results for insufficient RigidBody processing:

Processing of a BigObject occurs in both engines in the same way - the object does not fall through on its own, but when a force is applied from another object, it is easily pushed. The Bulet physics handles SmallObjects the same way. But the Godot physicist practically cannot cope with small objects at all - the vast majority of generated SmallObjects fail through on their own:


https://user-images.githubusercontent.com/11189223/104595829-33395800-5684-11eb-99fb-6311e4f74ee2.mp4

My test results physics engine performance (Bullet and Godot):

For the test, I continuously generate BigObject until the performance drops. The drop in performance occurs sharply, and not progressively as the number of bodies increases. In the system monitor of the OS, you can see that this happens at the moment when one processor core runs into 100% load. What is strange for me is that the render frames drop sharply (up to 6-8 frames per second and this indicator does not decrease with the continuation of object generation), while the physical frames do not change.

As for the performance of the two physics engines in terms of RigidBody processing, it differs by about two in favor of Bulet:

Bullet physics:

![Генерация объектов в Булет физике](https://user-images.githubusercontent.com/11189223/104596007-6c71c800-5684-11eb-9287-87e90ffd25f8.png)

Godot physics:

![Генерация объектов в Годот физике](https://user-images.githubusercontent.com/11189223/104596024-74ca0300-5684-11eb-931b-d59ff6ec7b2e.png)