I have a static "ground plane," 40x40 units, that I've tried constructing a number of different ways:
- btBoxShape of varying thickness
- btConvexHullShape created from a plane geometry
- btBvhTriangleMeshShape created from a plane geometry with varying number of subdivisions.
In my test, I create a number of small dynamic bodies (.5 - 1.5 units on longest axis) using btConvexHullShape, reduced via btShapeHull, and drop them from the air onto the static ground body.
The simulation seems to act normally until it's time for the dynamic bodies to come to rest on the ground. They often do not lie flat on the surface and do strange things like spinning indefinitely on their corners. See gifs below.


I've done a lot of tweaking with friction, restitution, sleeping thresholds, damping, etc on the dynamic objects and on the static ground. Some combinations can somewhat mitigate the issues, but all have undesirable tradeoffs. The closest I've found to making things behave correctly is setting the mass of the dynamic objects to something very high (500+), but this too has undesirable side effects.
Mass == 2000:

What am I doing wrong?
Some other info:
The small grid marks on the ground are 1 unit increments
Timestep is 1.0/120.0 — have tried much smaller
Gravity is -9.8
Using btBoxShape instead of btConvexHullShape for the dynamic objects exhibits the same behavior, only to a lesser severity.