Bullet 2.47 released, small constraint solver optimizations

Open source Bullet Physics SDK release information
Post Reply
User avatar
Erwin Coumans
Site Admin
Posts: 4221
Joined: Sun Jun 26, 2005 6:43 pm
Location: California, USA
Contact:

Bullet 2.47 released, small constraint solver optimizations

Post by Erwin Coumans »

Bullet 2.47 is available.

Constraint solver has been optimized with a second path. Avoiding cross products during the iterations and gathering rigid body information into contiguous memory are the main changes. No huge benefits yet, but a good step in the right direction.

It can be disabled by removing 'SOLVER_CACHE_FRIENDLY' from

Code: Select all

solver->setSolverMode(SOLVER_RANDMIZE_ORDER | SOLVER_CACHE_FRIENDLY)
Another stability fix is enabled, that adds some damping for rigid bodies with linear/angular velocity below a treshold. This heuristic is experimental, and can be disabled using

Code: Select all

gJitterVelocityDampingFactor = 0.f;
No proper API for this, as it is experimental.

Enjoy,
Erwin
Last edited by Erwin Coumans on Wed Mar 21, 2007 3:26 pm, edited 1 time in total.
Codepoet
Posts: 1
Joined: Mon Mar 19, 2007 12:15 pm

Post by Codepoet »

Hi!

Compilation fails on linux / systems with case sensitive file names:
Rename
src/BulletDynamics/ConstraintSolver/btsolverbody.h to btSolverBody.h
src/BulletDynamics/ConstraintSolver/btsolverconstraint.h to btSolverConstraint.h
Hamstray
Posts: 15
Joined: Thu Jan 11, 2007 7:45 pm

Post by Hamstray »

is it just me or did setAngularFactor(0.0) become ineffective?
User avatar
Erwin Coumans
Site Admin
Posts: 4221
Joined: Sun Jun 26, 2005 6:43 pm
Location: California, USA
Contact:

Post by Erwin Coumans »

Codepoet, compiler issues have been solved in Bullet 2.48a.

Some features like setAngularFactor, and custom friction model callbacks don't work yet with the 'cache friendly' solver mode.

But you can switch to original (non-cache-friendly) solver mode, and then it should works again:

Code: Select all

btSequentialImpulseConstraintSolver* solver = new btSequentialImpulseConstraintSolver;
//default solverMode is  SOLVER_CACHE_FRIENDLY and SOLVER_RANDMIZE_ORDER.

//Switch back to original solver (non-cache friendly):

solver->setSolverMode(btSequentialImpulseConstraintSolver::SOLVER_RANDMIZE_ORDER);
Hope this helps,
Erwin
Post Reply