Page 1 of 1

If I want hard constraints is featherstone and multibody the only effective solution?

Posted: Wed Nov 11, 2020 8:05 pm
by Octavius_Ace
Hi,
For context, I don't use the python binding and only use the core Dynamic, Collision and LinearMaths libraries in my code.

I've had a rag doll implementation, using the sequential impulse solver for years and ignored the "elasticity" in the constraint chains.
I've read most posts relating to this lack of hard constraints in ragdolls and don't want to go over old ground. (I've experimented with damping, softness bias limits, error reduction, CFM, similar mass ratios, using hinge in place of 6DoF etc.)
I've reduced test cases down to a single constraint between a static RB and a dynamic RB, and I can still apply moderate impulses that visibly violate the constraint.

All of the above is recounted in many other posts and I noticed that while the old rag doll demo is gone, it's still in one of the stress tests and still uses Seq Imp Solver and has the same limitations.
So it feels like I'm at the end of the road with the Seq Imp Solver.

Options appear to be:
  • Featherstone / Multibody
  • An MLCP solver
  • Switch physics engines - I'd rather not, as I like Bullet and have invested a fair amount of time understanding it and integrating it.
So questions:
1) Am I missing a trick with Seq Impulse and there is a way to harden up constraints? (Using btNNCGConstraintSolver didn't improve things )
2) Do any of the MLCP solvers offer a solution?
1) Does Featherstone provide genuinely hard constraints or will I find the softness problem reduced but still present?
2) Does Featherstone support more than slider and hinge - I'm unclear on this?
3) Is PhysX (for instance) going to suffer the same problems or is that framework's TGS solver a better option?

Happy to take any advice/experience around this.

Cheers.