About the Bullet SimpleConstraintSolver:
The solver uses a Propagation Method, from Baraff
"Analytical Methods for Dynamic Simulation of Non-penetrating Rigid Bodies". Bullet SimpleConstraintSolver applies penalty impulses to recover from penetration.
http://www-2.cs.cmu.edu/~baraff/papers/sig89.pdf
See section "Simultaneous Collisions", propagation method.
Implementation: http://www.continuousphysics.com/Bullet ... tml#l00054
The friction cone approximation is applied inside the propagation iterations too:
the impulse magnitude is related to the current applied impulse this iteration.
Implementation: http://www.continuousphysics.com/Bullet ... tml#l00213
At the moment, the error correction term is merged with the velocity correction term, however this adds energy. I'm considering splitting this.
See Michael Clines paper "Post-Stabilization for Rigid Body Simulation
with Contact and Constraints"
About the Baumgarte stabilization, basically the term 'g', is a positional error term.
This position error can be caused by numerical drift penetration due to bad time of impact estimation (no estimation at all;-).
The basic idea is that you either merge the velocity and positional terms in 1 lcp, or split it.
At the moment, the convergence of the SimpleConstraintSolver is not great, but it works. I will add some comparison demos with ODE quickstep soon.
Bullet SimpleConstraintSolver
- Erwin Coumans
- Site Admin
- Posts: 4221
- Joined: Sun Jun 26, 2005 6:43 pm
- Location: California, USA
- Contact: