Let's take a look.
Dumbo2007 seems to be taking the lead now, and Martins is presumed to make some sort of collision detection as well, but i'm not familiar enough with details to comment.
I'll mostly describe what i was working on, which is almost all of the legacy stuff out there.
Maybe add this thread to a FAQ?
To avoid periodic confusions on what Orulex-Meshland-Bullet physics-etc is.
So, there is collision
detection and there is collision
handling.
First determines if two meshes/whatever intersected, second makes the appropriate alterations in the state vectors.
These two tasks go hand to hand, but are quite separate.
Orulex is a terrain generator.
It does not provide any collisions, but it can feed the terrain data into any of the add-ons below that can receive it.
This task is absolutely separate from the other two.
Collision detection
What collides?
Terrain and vessel (orulex-collision, moonland, bullet).
Terrain is a heightmap, vessel is points.
+Extremely simple detection.
-Specific to that one task
Vessel and ummu/pilot (Shukra engine).
Vessel is a geometry, ummu is a sphere/OBB
+Not too hard to detect
-Specific to that one task
-Needs defining geometry
Vessel against vessel, high velocity case.
Vessels are bounding boxes or spheres.
+Easy to detect, easy to handle
-Only works when at hight speeds or in other situations where accuracy is not required
Vessel against vessel, generic case.
Mesh against mesh
+No need to alter stuff
+Realistic collisions
-Highest complexity of detection known, beyond capabilities of home PCs
Convex mesh against convex mesh
+Realistic collisions
-Nearly the highest complexity of detection known, existing real-time solutions are large projects by respectable teams
-Needs defining of collision meshes with non-trivial rules
Geometry against geometry.
+Doable level of complexity
-Average accuracy
-Needs definition of said geometry
Collision handling
The actual response generation to collisions detected.
Can be solved analytically, but that requires a deep integration with the core (variable time step, exact formulas for every perturbation, etc) and well-developed system. Not worth considering.
Situations:
Vessels in space (Meshland 1.9.2, Soyuz collision demo?)
No such thing as resting on or wedging in.
Response with basic newton's laws.
+Easy, needs no special cases, just push away
-Only works in space and with sharply defined collisions
Walking on the ground, single point (Meshland 1.2, Moonland, Orulex-collision).
An object is constantly in contact with another object.
Repulsing will produce shaking.
Time acceleration or low FPS turns the shaking into chaos.
-Needs handling for non-moving objects, at rest with others - freezing. Core support helps a lot (that is what LANDING in Orbiter and Spaceway is - core handled, super stable), or some hard tricks to emulate (attachment points to Orulex planet vessel - Moonland, newer Orulex-collision).
-Needs prior knowledge of next time step length - core integration, can be skipped at cost of some precision.
+Simplistic to implement, makes sufficient illusion of collisions (Meshand 1.2, abuses Orbiter LANDED system by extending touchdown points)
Walking on the ground, multiple points (Meshland 1.9.2, bullet).
Same as above, but harder.
-Needs basic constraint solving - sitting on a curved terrain, push one point, another gets in deeper, push that one harder, first gets even deeper, runaway bouncing.
-Needs next time step information
-Needs freezing, absolutely
-Time acceleration provides a challenge - no freezing=every landed vessels jumps into space at 100x.
Walking on another vessel (Shukra engine, Collision SDK, Meshland 1.9.2).
Same as above, only without any easy trick like using LANDED points.
Freezing can be implemented by attachments.
Single-point system of walking a ummu is actually kind of easy.
Multi-point is the next one
Arbitrary collisions between arbitrary vessels
Everything above plus full constraint solver
+Maximum realism
Solutions (chronologically)
Meshland legacy: