diff options
author | PouleyKetchoupp <pouleyketchoup@gmail.com> | 2021-12-03 10:38:40 -0700 |
---|---|---|
committer | PouleyKetchoupp <pouleyketchoup@gmail.com> | 2021-12-03 10:40:15 -0700 |
commit | 5cbc7149a1cd9a55ffccf8ca96e48b872417ce89 (patch) | |
tree | 9de8fbff38701bf81ded98d8bbf7f3d877df308b /servers/physics_3d/godot_space_3d.cpp | |
parent | 80e292b3e019d4084b09431572bba12f87e81023 (diff) |
Improve RigidDynamicBody contacts in 2D and 3D
Changed the algorithm for solving contacts to keep previous contacts as
long as they are under the max separation threshold to keep contact
impulses more consistent and contacts more stable.
Also made 2D consistent with 3D and changed some default parameters:
-Contact bias is now 0.8 instead of 0.3 to avoid springy contacts
-Solver iterations are 16 instead of 8 by default for better stability
Performance considerations:
Tested with stress tests that include lots of contacts from overlapping
bodies.
3D: There's no measurable difference in performance.
2D: Performance is a bit lower (close to 10% slower in extreme cases)
The benefit for 2D physics to be much more stable outweighs the slight
decrease in performance, and this could be alleviated by changing the
algorithm to use jacobians for contact solving to help with cache
efficiency and memory allocations.
Diffstat (limited to 'servers/physics_3d/godot_space_3d.cpp')
0 files changed, 0 insertions, 0 deletions