Bullet Collision Detection & Physics Library
Public Member Functions | Public Attributes | Protected Member Functions | Static Protected Member Functions | Protected Attributes | List of all members
btSequentialImpulseConstraintSolver Class Reference

The btSequentialImpulseConstraintSolver is a fast SIMD implementation of the Projected Gauss Seidel (iterative LCP) method. More...

#include <btSequentialImpulseConstraintSolver.h>

Inheritance diagram for btSequentialImpulseConstraintSolver:
Inheritance graph
[legend]
Collaboration diagram for btSequentialImpulseConstraintSolver:
Collaboration graph
[legend]

Public Member Functions

 BT_DECLARE_ALIGNED_ALLOCATOR ()
 
 btSequentialImpulseConstraintSolver ()
 
virtual ~btSequentialImpulseConstraintSolver ()
 
virtual btScalar solveGroup (btCollisionObject **bodies, int numBodies, btPersistentManifold **manifold, int numManifolds, btTypedConstraint **constraints, int numConstraints, const btContactSolverInfo &info, btIDebugDraw *debugDrawer, btDispatcher *dispatcher)
 btSequentialImpulseConstraintSolver Sequentially applies impulses More...
 
virtual void reset ()
 clear internal cached data and reset random seed More...
 
unsigned long btRand2 ()
 
int btRandInt2 (int n)
 
void setRandSeed (unsigned long seed)
 
unsigned long getRandSeed () const
 
virtual btConstraintSolverType getSolverType () const
 
btSingleConstraintRowSolver getActiveConstraintRowSolverGeneric ()
 
void setConstraintRowSolverGeneric (btSingleConstraintRowSolver rowSolver)
 
btSingleConstraintRowSolver getActiveConstraintRowSolverLowerLimit ()
 
void setConstraintRowSolverLowerLimit (btSingleConstraintRowSolver rowSolver)
 
btSingleConstraintRowSolver getScalarConstraintRowSolverGeneric ()
 Various implementations of solving a single constraint row using a generic equality constraint, using scalar reference, SSE2 or SSE4. More...
 
btSingleConstraintRowSolver getSSE2ConstraintRowSolverGeneric ()
 
btSingleConstraintRowSolver getSSE4_1ConstraintRowSolverGeneric ()
 
btSingleConstraintRowSolver getScalarConstraintRowSolverLowerLimit ()
 Various implementations of solving a single constraint row using an inequality (lower limit) constraint, using scalar reference, SSE2 or SSE4. More...
 
btSingleConstraintRowSolver getSSE2ConstraintRowSolverLowerLimit ()
 
btSingleConstraintRowSolver getSSE4_1ConstraintRowSolverLowerLimit ()
 
- Public Member Functions inherited from btConstraintSolver
virtual ~btConstraintSolver ()
 
virtual void prepareSolve (int, int)
 
virtual btScalar solveGroup (btCollisionObject **bodies, int numBodies, btPersistentManifold **manifold, int numManifolds, btTypedConstraint **constraints, int numConstraints, const btContactSolverInfo &info, class btIDebugDraw *debugDrawer, btDispatcher *dispatcher)=0
 solve a group of constraints More...
 
virtual void allSolved (const btContactSolverInfo &, class btIDebugDraw *)
 
virtual void reset ()=0
 clear internal cached data and reset random seed More...
 
virtual btConstraintSolverType getSolverType () const =0
 

Public Attributes

btSolverAnalyticsData m_analyticsData
 

Protected Member Functions

void setupSolverFunctions (bool useSimd)
 
void setupFrictionConstraint (btSolverConstraint &solverConstraint, const btVector3 &normalAxis, int solverBodyIdA, int solverBodyIdB, btManifoldPoint &cp, const btVector3 &rel_pos1, const btVector3 &rel_pos2, btCollisionObject *colObj0, btCollisionObject *colObj1, btScalar relaxation, const btContactSolverInfo &infoGlobal, btScalar desiredVelocity=0., btScalar cfmSlip=0.)
 
void setupTorsionalFrictionConstraint (btSolverConstraint &solverConstraint, const btVector3 &normalAxis, int solverBodyIdA, int solverBodyIdB, btManifoldPoint &cp, btScalar combinedTorsionalFriction, const btVector3 &rel_pos1, const btVector3 &rel_pos2, btCollisionObject *colObj0, btCollisionObject *colObj1, btScalar relaxation, btScalar desiredVelocity=0., btScalar cfmSlip=0.)
 
btSolverConstraintaddFrictionConstraint (const btVector3 &normalAxis, int solverBodyIdA, int solverBodyIdB, int frictionIndex, btManifoldPoint &cp, const btVector3 &rel_pos1, const btVector3 &rel_pos2, btCollisionObject *colObj0, btCollisionObject *colObj1, btScalar relaxation, const btContactSolverInfo &infoGlobal, btScalar desiredVelocity=0., btScalar cfmSlip=0.)
 
btSolverConstraintaddTorsionalFrictionConstraint (const btVector3 &normalAxis, int solverBodyIdA, int solverBodyIdB, int frictionIndex, btManifoldPoint &cp, btScalar torsionalFriction, const btVector3 &rel_pos1, const btVector3 &rel_pos2, btCollisionObject *colObj0, btCollisionObject *colObj1, btScalar relaxation, btScalar desiredVelocity=0, btScalar cfmSlip=0.f)
 
void setupContactConstraint (btSolverConstraint &solverConstraint, int solverBodyIdA, int solverBodyIdB, btManifoldPoint &cp, const btContactSolverInfo &infoGlobal, btScalar &relaxation, const btVector3 &rel_pos1, const btVector3 &rel_pos2)
 
void setFrictionConstraintImpulse (btSolverConstraint &solverConstraint, int solverBodyIdA, int solverBodyIdB, btManifoldPoint &cp, const btContactSolverInfo &infoGlobal)
 
btScalar restitutionCurve (btScalar rel_vel, btScalar restitution, btScalar velocityThreshold)
 
virtual void convertContacts (btPersistentManifold **manifoldPtr, int numManifolds, const btContactSolverInfo &infoGlobal)
 
void convertContact (btPersistentManifold *manifold, const btContactSolverInfo &infoGlobal)
 
virtual void convertJoints (btTypedConstraint **constraints, int numConstraints, const btContactSolverInfo &infoGlobal)
 
void convertJoint (btSolverConstraint *currentConstraintRow, btTypedConstraint *constraint, const btTypedConstraint::btConstraintInfo1 &info1, int solverBodyIdA, int solverBodyIdB, const btContactSolverInfo &infoGlobal)
 
virtual void convertBodies (btCollisionObject **bodies, int numBodies, const btContactSolverInfo &infoGlobal)
 
btScalar resolveSplitPenetrationSIMD (btSolverBody &bodyA, btSolverBody &bodyB, const btSolverConstraint &contactConstraint)
 
btScalar resolveSplitPenetrationImpulseCacheFriendly (btSolverBody &bodyA, btSolverBody &bodyB, const btSolverConstraint &contactConstraint)
 
int getOrInitSolverBody (btCollisionObject &body, btScalar timeStep)
 
void initSolverBody (btSolverBody *solverBody, btCollisionObject *collisionObject, btScalar timeStep)
 
btScalar resolveSingleConstraintRowGeneric (btSolverBody &bodyA, btSolverBody &bodyB, const btSolverConstraint &contactConstraint)
 
btScalar resolveSingleConstraintRowGenericSIMD (btSolverBody &bodyA, btSolverBody &bodyB, const btSolverConstraint &contactConstraint)
 
btScalar resolveSingleConstraintRowLowerLimit (btSolverBody &bodyA, btSolverBody &bodyB, const btSolverConstraint &contactConstraint)
 
btScalar resolveSingleConstraintRowLowerLimitSIMD (btSolverBody &bodyA, btSolverBody &bodyB, const btSolverConstraint &contactConstraint)
 
btScalar resolveSplitPenetrationImpulse (btSolverBody &bodyA, btSolverBody &bodyB, const btSolverConstraint &contactConstraint)
 
void writeBackContacts (int iBegin, int iEnd, const btContactSolverInfo &infoGlobal)
 
void writeBackJoints (int iBegin, int iEnd, const btContactSolverInfo &infoGlobal)
 
void writeBackBodies (int iBegin, int iEnd, const btContactSolverInfo &infoGlobal)
 
virtual void solveGroupCacheFriendlySplitImpulseIterations (btCollisionObject **bodies, int numBodies, btPersistentManifold **manifoldPtr, int numManifolds, btTypedConstraint **constraints, int numConstraints, const btContactSolverInfo &infoGlobal, btIDebugDraw *debugDrawer)
 
virtual btScalar solveGroupCacheFriendlyFinish (btCollisionObject **bodies, int numBodies, const btContactSolverInfo &infoGlobal)
 
virtual btScalar solveSingleIteration (int iteration, btCollisionObject **bodies, int numBodies, btPersistentManifold **manifoldPtr, int numManifolds, btTypedConstraint **constraints, int numConstraints, const btContactSolverInfo &infoGlobal, btIDebugDraw *debugDrawer)
 
virtual btScalar solveGroupCacheFriendlySetup (btCollisionObject **bodies, int numBodies, btPersistentManifold **manifoldPtr, int numManifolds, btTypedConstraint **constraints, int numConstraints, const btContactSolverInfo &infoGlobal, btIDebugDraw *debugDrawer)
 
virtual btScalar solveGroupCacheFriendlyIterations (btCollisionObject **bodies, int numBodies, btPersistentManifold **manifoldPtr, int numManifolds, btTypedConstraint **constraints, int numConstraints, const btContactSolverInfo &infoGlobal, btIDebugDraw *debugDrawer)
 

Static Protected Member Functions

static void applyAnisotropicFriction (btCollisionObject *colObj, btVector3 &frictionDirection, int frictionMode)
 

Protected Attributes

btAlignedObjectArray< btSolverBodym_tmpSolverBodyPool
 
btConstraintArray m_tmpSolverContactConstraintPool
 
btConstraintArray m_tmpSolverNonContactConstraintPool
 
btConstraintArray m_tmpSolverContactFrictionConstraintPool
 
btConstraintArray m_tmpSolverContactRollingFrictionConstraintPool
 
btAlignedObjectArray< int > m_orderTmpConstraintPool
 
btAlignedObjectArray< int > m_orderNonContactConstraintPool
 
btAlignedObjectArray< int > m_orderFrictionConstraintPool
 
btAlignedObjectArray< btTypedConstraint::btConstraintInfo1m_tmpConstraintSizesPool
 
int m_maxOverrideNumSolverIterations
 
int m_fixedBodyId
 
btAlignedObjectArray< int > m_kinematicBodyUniqueIdToSolverBodyTable
 
btSingleConstraintRowSolver m_resolveSingleConstraintRowGeneric
 
btSingleConstraintRowSolver m_resolveSingleConstraintRowLowerLimit
 
btSingleConstraintRowSolver m_resolveSplitPenetrationImpulse
 
int m_cachedSolverMode
 
btScalar m_leastSquaresResidual
 
unsigned long m_btSeed2
 m_btSeed2 is used for re-arranging the constraint rows. improves convergence/quality of friction More...
 

Detailed Description

The btSequentialImpulseConstraintSolver is a fast SIMD implementation of the Projected Gauss Seidel (iterative LCP) method.

Definition at line 50 of file btSequentialImpulseConstraintSolver.h.

Constructor & Destructor Documentation

◆ btSequentialImpulseConstraintSolver()

btSequentialImpulseConstraintSolver::btSequentialImpulseConstraintSolver ( )

Definition at line 353 of file btSequentialImpulseConstraintSolver.cpp.

◆ ~btSequentialImpulseConstraintSolver()

btSequentialImpulseConstraintSolver::~btSequentialImpulseConstraintSolver ( )
virtual

Definition at line 385 of file btSequentialImpulseConstraintSolver.cpp.

Member Function Documentation

◆ addFrictionConstraint()

btSolverConstraint & btSequentialImpulseConstraintSolver::addFrictionConstraint ( const btVector3 normalAxis,
int  solverBodyIdA,
int  solverBodyIdB,
int  frictionIndex,
btManifoldPoint cp,
const btVector3 rel_pos1,
const btVector3 rel_pos2,
btCollisionObject colObj0,
btCollisionObject colObj1,
btScalar  relaxation,
const btContactSolverInfo infoGlobal,
btScalar  desiredVelocity = 0.,
btScalar  cfmSlip = 0. 
)
protected

Definition at line 610 of file btSequentialImpulseConstraintSolver.cpp.

◆ addTorsionalFrictionConstraint()

btSolverConstraint & btSequentialImpulseConstraintSolver::addTorsionalFrictionConstraint ( const btVector3 normalAxis,
int  solverBodyIdA,
int  solverBodyIdB,
int  frictionIndex,
btManifoldPoint cp,
btScalar  torsionalFriction,
const btVector3 rel_pos1,
const btVector3 rel_pos2,
btCollisionObject colObj0,
btCollisionObject colObj1,
btScalar  relaxation,
btScalar  desiredVelocity = 0,
btScalar  cfmSlip = 0.f 
)
protected

Definition at line 682 of file btSequentialImpulseConstraintSolver.cpp.

◆ applyAnisotropicFriction()

void btSequentialImpulseConstraintSolver::applyAnisotropicFriction ( btCollisionObject colObj,
btVector3 frictionDirection,
int  frictionMode 
)
staticprotected

Definition at line 504 of file btSequentialImpulseConstraintSolver.cpp.

◆ BT_DECLARE_ALIGNED_ALLOCATOR()

btSequentialImpulseConstraintSolver::BT_DECLARE_ALIGNED_ALLOCATOR ( )

◆ btRand2()

unsigned long btSequentialImpulseConstraintSolver::btRand2 ( )

Definition at line 420 of file btSequentialImpulseConstraintSolver.cpp.

◆ btRandInt2()

int btSequentialImpulseConstraintSolver::btRandInt2 ( int  n)

Definition at line 427 of file btSequentialImpulseConstraintSolver.cpp.

◆ convertBodies()

void btSequentialImpulseConstraintSolver::convertBodies ( btCollisionObject **  bodies,
int  numBodies,
const btContactSolverInfo infoGlobal 
)
protectedvirtual

◆ convertContact()

void btSequentialImpulseConstraintSolver::convertContact ( btPersistentManifold manifold,
const btContactSolverInfo infoGlobal 
)
protected

avoid collision response between two static objects

Bullet has several options to set the friction directions By default, each contact has only a single friction direction that is recomputed automatically very frame based on the relative linear velocity. If the relative velocity it zero, it will automatically compute a friction direction.

You can also enable two friction directions, using the SOLVER_USE_2_FRICTION_DIRECTIONS. In that case, the second friction direction will be orthogonal to both contact normal and first friction direction.

If you choose SOLVER_DISABLE_VELOCITY_DEPENDENT_FRICTION_DIRECTION, then the friction will be independent from the relative projected velocity.

The user can manually override the friction directions for certain contacts using a contact callback, and use contactPoint.m_contactPointFlags |= BT_CONTACT_FLAG_LATERAL_FRICTION_INITIALIZED In that case, you can set the target relative motion in each friction direction (cp.m_contactMotion1 and cp.m_contactMotion2) this will give a conveyor belt effect

Definition at line 999 of file btSequentialImpulseConstraintSolver.cpp.

◆ convertContacts()

void btSequentialImpulseConstraintSolver::convertContacts ( btPersistentManifold **  manifoldPtr,
int  numManifolds,
const btContactSolverInfo infoGlobal 
)
protectedvirtual

◆ convertJoint()

void btSequentialImpulseConstraintSolver::convertJoint ( btSolverConstraint currentConstraintRow,
btTypedConstraint constraint,
const btTypedConstraint::btConstraintInfo1 info1,
int  solverBodyIdA,
int  solverBodyIdB,
const btContactSolverInfo infoGlobal 
)
protected

the size of btSolverConstraint needs be a multiple of btScalar

finalize the constraint setup

Definition at line 1162 of file btSequentialImpulseConstraintSolver.cpp.

◆ convertJoints()

void btSequentialImpulseConstraintSolver::convertJoints ( btTypedConstraint **  constraints,
int  numConstraints,
const btContactSolverInfo infoGlobal 
)
protectedvirtual

setup the btSolverConstraints

Reimplemented in btSequentialImpulseConstraintSolverMt.

Definition at line 1294 of file btSequentialImpulseConstraintSolver.cpp.

◆ getActiveConstraintRowSolverGeneric()

btSingleConstraintRowSolver btSequentialImpulseConstraintSolver::getActiveConstraintRowSolverGeneric ( )
inline

Definition at line 184 of file btSequentialImpulseConstraintSolver.h.

◆ getActiveConstraintRowSolverLowerLimit()

btSingleConstraintRowSolver btSequentialImpulseConstraintSolver::getActiveConstraintRowSolverLowerLimit ( )
inline

Definition at line 192 of file btSequentialImpulseConstraintSolver.h.

◆ getOrInitSolverBody()

int btSequentialImpulseConstraintSolver::getOrInitSolverBody ( btCollisionObject body,
btScalar  timeStep 
)
protected

Definition at line 691 of file btSequentialImpulseConstraintSolver.cpp.

◆ getRandSeed()

unsigned long btSequentialImpulseConstraintSolver::getRandSeed ( ) const
inline

Definition at line 174 of file btSequentialImpulseConstraintSolver.h.

◆ getScalarConstraintRowSolverGeneric()

btSingleConstraintRowSolver btSequentialImpulseConstraintSolver::getScalarConstraintRowSolverGeneric ( )

Various implementations of solving a single constraint row using a generic equality constraint, using scalar reference, SSE2 or SSE4.

Definition at line 389 of file btSequentialImpulseConstraintSolver.cpp.

◆ getScalarConstraintRowSolverLowerLimit()

btSingleConstraintRowSolver btSequentialImpulseConstraintSolver::getScalarConstraintRowSolverLowerLimit ( )

Various implementations of solving a single constraint row using an inequality (lower limit) constraint, using scalar reference, SSE2 or SSE4.

Definition at line 394 of file btSequentialImpulseConstraintSolver.cpp.

◆ getSolverType()

virtual btConstraintSolverType btSequentialImpulseConstraintSolver::getSolverType ( ) const
inlinevirtual

◆ getSSE2ConstraintRowSolverGeneric()

btSingleConstraintRowSolver btSequentialImpulseConstraintSolver::getSSE2ConstraintRowSolverGeneric ( )

◆ getSSE2ConstraintRowSolverLowerLimit()

btSingleConstraintRowSolver btSequentialImpulseConstraintSolver::getSSE2ConstraintRowSolverLowerLimit ( )

◆ getSSE4_1ConstraintRowSolverGeneric()

btSingleConstraintRowSolver btSequentialImpulseConstraintSolver::getSSE4_1ConstraintRowSolverGeneric ( )

◆ getSSE4_1ConstraintRowSolverLowerLimit()

btSingleConstraintRowSolver btSequentialImpulseConstraintSolver::getSSE4_1ConstraintRowSolverLowerLimit ( )

◆ initSolverBody()

void btSequentialImpulseConstraintSolver::initSolverBody ( btSolverBody solverBody,
btCollisionObject collisionObject,
btScalar  timeStep 
)
protected

Definition at line 459 of file btSequentialImpulseConstraintSolver.cpp.

◆ reset()

void btSequentialImpulseConstraintSolver::reset ( )
virtual

clear internal cached data and reset random seed

Implements btConstraintSolver.

Definition at line 1872 of file btSequentialImpulseConstraintSolver.cpp.

◆ resolveSingleConstraintRowGeneric()

btScalar btSequentialImpulseConstraintSolver::resolveSingleConstraintRowGeneric ( btSolverBody bodyA,
btSolverBody bodyB,
const btSolverConstraint contactConstraint 
)
protected

Definition at line 269 of file btSequentialImpulseConstraintSolver.cpp.

◆ resolveSingleConstraintRowGenericSIMD()

btScalar btSequentialImpulseConstraintSolver::resolveSingleConstraintRowGenericSIMD ( btSolverBody bodyA,
btSolverBody bodyB,
const btSolverConstraint contactConstraint 
)
protected

Definition at line 263 of file btSequentialImpulseConstraintSolver.cpp.

◆ resolveSingleConstraintRowLowerLimit()

btScalar btSequentialImpulseConstraintSolver::resolveSingleConstraintRowLowerLimit ( btSolverBody bodyA,
btSolverBody bodyB,
const btSolverConstraint contactConstraint 
)
protected

Definition at line 279 of file btSequentialImpulseConstraintSolver.cpp.

◆ resolveSingleConstraintRowLowerLimitSIMD()

btScalar btSequentialImpulseConstraintSolver::resolveSingleConstraintRowLowerLimitSIMD ( btSolverBody bodyA,
btSolverBody bodyB,
const btSolverConstraint contactConstraint 
)
protected

Definition at line 274 of file btSequentialImpulseConstraintSolver.cpp.

◆ resolveSplitPenetrationImpulse()

btScalar btSequentialImpulseConstraintSolver::resolveSplitPenetrationImpulse ( btSolverBody bodyA,
btSolverBody bodyB,
const btSolverConstraint contactConstraint 
)
inlineprotected

Definition at line 139 of file btSequentialImpulseConstraintSolver.h.

◆ resolveSplitPenetrationImpulseCacheFriendly()

btScalar btSequentialImpulseConstraintSolver::resolveSplitPenetrationImpulseCacheFriendly ( btSolverBody bodyA,
btSolverBody bodyB,
const btSolverConstraint contactConstraint 
)
inlineprotected

Definition at line 126 of file btSequentialImpulseConstraintSolver.h.

◆ resolveSplitPenetrationSIMD()

btScalar btSequentialImpulseConstraintSolver::resolveSplitPenetrationSIMD ( btSolverBody bodyA,
btSolverBody bodyB,
const btSolverConstraint contactConstraint 
)
inlineprotected

Definition at line 121 of file btSequentialImpulseConstraintSolver.h.

◆ restitutionCurve()

btScalar btSequentialImpulseConstraintSolver::restitutionCurve ( btScalar  rel_vel,
btScalar  restitution,
btScalar  velocityThreshold 
)
protected

Definition at line 494 of file btSequentialImpulseConstraintSolver.cpp.

◆ setConstraintRowSolverGeneric()

void btSequentialImpulseConstraintSolver::setConstraintRowSolverGeneric ( btSingleConstraintRowSolver  rowSolver)
inline

Definition at line 188 of file btSequentialImpulseConstraintSolver.h.

◆ setConstraintRowSolverLowerLimit()

void btSequentialImpulseConstraintSolver::setConstraintRowSolverLowerLimit ( btSingleConstraintRowSolver  rowSolver)
inline

Definition at line 196 of file btSequentialImpulseConstraintSolver.h.

◆ setFrictionConstraintImpulse()

void btSequentialImpulseConstraintSolver::setFrictionConstraintImpulse ( btSolverConstraint solverConstraint,
int  solverBodyIdA,
int  solverBodyIdB,
btManifoldPoint cp,
const btContactSolverInfo infoGlobal 
)
protected

Definition at line 981 of file btSequentialImpulseConstraintSolver.cpp.

◆ setRandSeed()

void btSequentialImpulseConstraintSolver::setRandSeed ( unsigned long  seed)
inline

Definition at line 170 of file btSequentialImpulseConstraintSolver.h.

◆ setupContactConstraint()

void btSequentialImpulseConstraintSolver::setupContactConstraint ( btSolverConstraint solverConstraint,
int  solverBodyIdA,
int  solverBodyIdB,
btManifoldPoint cp,
const btContactSolverInfo infoGlobal,
btScalar relaxation,
const btVector3 rel_pos1,
const btVector3 rel_pos2 
)
protected

warm starting (or zero if disabled)

Definition at line 796 of file btSequentialImpulseConstraintSolver.cpp.

◆ setupFrictionConstraint()

void btSequentialImpulseConstraintSolver::setupFrictionConstraint ( btSolverConstraint solverConstraint,
const btVector3 normalAxis,
int  solverBodyIdA,
int  solverBodyIdB,
btManifoldPoint cp,
const btVector3 rel_pos1,
const btVector3 rel_pos2,
btCollisionObject colObj0,
btCollisionObject colObj1,
btScalar  relaxation,
const btContactSolverInfo infoGlobal,
btScalar  desiredVelocity = 0.,
btScalar  cfmSlip = 0. 
)
protected

Definition at line 518 of file btSequentialImpulseConstraintSolver.cpp.

◆ setupSolverFunctions()

void btSequentialImpulseConstraintSolver::setupSolverFunctions ( bool  useSimd)
protected

Definition at line 360 of file btSequentialImpulseConstraintSolver.cpp.

◆ setupTorsionalFrictionConstraint()

void btSequentialImpulseConstraintSolver::setupTorsionalFrictionConstraint ( btSolverConstraint solverConstraint,
const btVector3 normalAxis,
int  solverBodyIdA,
int  solverBodyIdB,
btManifoldPoint cp,
btScalar  combinedTorsionalFriction,
const btVector3 rel_pos1,
const btVector3 rel_pos2,
btCollisionObject colObj0,
btCollisionObject colObj1,
btScalar  relaxation,
btScalar  desiredVelocity = 0.,
btScalar  cfmSlip = 0. 
)
protected

Definition at line 619 of file btSequentialImpulseConstraintSolver.cpp.

◆ solveGroup()

btScalar btSequentialImpulseConstraintSolver::solveGroup ( btCollisionObject **  bodies,
int  numBodies,
btPersistentManifold **  manifold,
int  numManifolds,
btTypedConstraint **  constraints,
int  numConstraints,
const btContactSolverInfo info,
btIDebugDraw debugDrawer,
btDispatcher dispatcher 
)
virtual

btSequentialImpulseConstraintSolver Sequentially applies impulses

Implements btConstraintSolver.

Reimplemented in btMultiBodyConstraintSolver.

Definition at line 1858 of file btSequentialImpulseConstraintSolver.cpp.

◆ solveGroupCacheFriendlyFinish()

btScalar btSequentialImpulseConstraintSolver::solveGroupCacheFriendlyFinish ( btCollisionObject **  bodies,
int  numBodies,
const btContactSolverInfo infoGlobal 
)
protectedvirtual

◆ solveGroupCacheFriendlyIterations()

btScalar btSequentialImpulseConstraintSolver::solveGroupCacheFriendlyIterations ( btCollisionObject **  bodies,
int  numBodies,
btPersistentManifold **  manifoldPtr,
int  numManifolds,
btTypedConstraint **  constraints,
int  numConstraints,
const btContactSolverInfo infoGlobal,
btIDebugDraw debugDrawer 
)
protectedvirtual

this is a special step to resolve penetrations (just for contacts)

Reimplemented in btMultiBodyMLCPConstraintSolver, and btMLCPSolver.

Definition at line 1730 of file btSequentialImpulseConstraintSolver.cpp.

◆ solveGroupCacheFriendlySetup()

btScalar btSequentialImpulseConstraintSolver::solveGroupCacheFriendlySetup ( btCollisionObject **  bodies,
int  numBodies,
btPersistentManifold **  manifoldPtr,
int  numManifolds,
btTypedConstraint **  constraints,
int  numConstraints,
const btContactSolverInfo infoGlobal,
btIDebugDraw debugDrawer 
)
protectedvirtual

◆ solveGroupCacheFriendlySplitImpulseIterations()

void btSequentialImpulseConstraintSolver::solveGroupCacheFriendlySplitImpulseIterations ( btCollisionObject **  bodies,
int  numBodies,
btPersistentManifold **  manifoldPtr,
int  numManifolds,
btTypedConstraint **  constraints,
int  numConstraints,
const btContactSolverInfo infoGlobal,
btIDebugDraw debugDrawer 
)
protectedvirtual

◆ solveSingleIteration()

btScalar btSequentialImpulseConstraintSolver::solveSingleIteration ( int  iteration,
btCollisionObject **  bodies,
int  numBodies,
btPersistentManifold **  manifoldPtr,
int  numManifolds,
btTypedConstraint **  constraints,
int  numConstraints,
const btContactSolverInfo infoGlobal,
btIDebugDraw debugDrawer 
)
protectedvirtual

solve all joint constraints

solve all contact constraints

solve all friction constraints

Reimplemented in btNNCGConstraintSolver, btMultiBodyConstraintSolver, and btSequentialImpulseConstraintSolverMt.

Definition at line 1526 of file btSequentialImpulseConstraintSolver.cpp.

◆ writeBackBodies()

void btSequentialImpulseConstraintSolver::writeBackBodies ( int  iBegin,
int  iEnd,
const btContactSolverInfo infoGlobal 
)
protected

Definition at line 1808 of file btSequentialImpulseConstraintSolver.cpp.

◆ writeBackContacts()

void btSequentialImpulseConstraintSolver::writeBackContacts ( int  iBegin,
int  iEnd,
const btContactSolverInfo infoGlobal 
)
protected

Definition at line 1765 of file btSequentialImpulseConstraintSolver.cpp.

◆ writeBackJoints()

void btSequentialImpulseConstraintSolver::writeBackJoints ( int  iBegin,
int  iEnd,
const btContactSolverInfo infoGlobal 
)
protected

Definition at line 1785 of file btSequentialImpulseConstraintSolver.cpp.

Member Data Documentation

◆ m_analyticsData

btSolverAnalyticsData btSequentialImpulseConstraintSolver::m_analyticsData

Definition at line 212 of file btSequentialImpulseConstraintSolver.h.

◆ m_btSeed2

unsigned long btSequentialImpulseConstraintSolver::m_btSeed2
protected

m_btSeed2 is used for re-arranging the constraint rows. improves convergence/quality of friction

Definition at line 108 of file btSequentialImpulseConstraintSolver.h.

◆ m_cachedSolverMode

int btSequentialImpulseConstraintSolver::m_cachedSolverMode
protected

Definition at line 80 of file btSequentialImpulseConstraintSolver.h.

◆ m_fixedBodyId

int btSequentialImpulseConstraintSolver::m_fixedBodyId
protected

Definition at line 67 of file btSequentialImpulseConstraintSolver.h.

◆ m_kinematicBodyUniqueIdToSolverBodyTable

btAlignedObjectArray<int> btSequentialImpulseConstraintSolver::m_kinematicBodyUniqueIdToSolverBodyTable
protected

Definition at line 75 of file btSequentialImpulseConstraintSolver.h.

◆ m_leastSquaresResidual

btScalar btSequentialImpulseConstraintSolver::m_leastSquaresResidual
protected

Definition at line 83 of file btSequentialImpulseConstraintSolver.h.

◆ m_maxOverrideNumSolverIterations

int btSequentialImpulseConstraintSolver::m_maxOverrideNumSolverIterations
protected

Definition at line 66 of file btSequentialImpulseConstraintSolver.h.

◆ m_orderFrictionConstraintPool

btAlignedObjectArray<int> btSequentialImpulseConstraintSolver::m_orderFrictionConstraintPool
protected

Definition at line 64 of file btSequentialImpulseConstraintSolver.h.

◆ m_orderNonContactConstraintPool

btAlignedObjectArray<int> btSequentialImpulseConstraintSolver::m_orderNonContactConstraintPool
protected

Definition at line 63 of file btSequentialImpulseConstraintSolver.h.

◆ m_orderTmpConstraintPool

btAlignedObjectArray<int> btSequentialImpulseConstraintSolver::m_orderTmpConstraintPool
protected

Definition at line 62 of file btSequentialImpulseConstraintSolver.h.

◆ m_resolveSingleConstraintRowGeneric

btSingleConstraintRowSolver btSequentialImpulseConstraintSolver::m_resolveSingleConstraintRowGeneric
protected

Definition at line 77 of file btSequentialImpulseConstraintSolver.h.

◆ m_resolveSingleConstraintRowLowerLimit

btSingleConstraintRowSolver btSequentialImpulseConstraintSolver::m_resolveSingleConstraintRowLowerLimit
protected

Definition at line 78 of file btSequentialImpulseConstraintSolver.h.

◆ m_resolveSplitPenetrationImpulse

btSingleConstraintRowSolver btSequentialImpulseConstraintSolver::m_resolveSplitPenetrationImpulse
protected

Definition at line 79 of file btSequentialImpulseConstraintSolver.h.

◆ m_tmpConstraintSizesPool

btAlignedObjectArray<btTypedConstraint::btConstraintInfo1> btSequentialImpulseConstraintSolver::m_tmpConstraintSizesPool
protected

Definition at line 65 of file btSequentialImpulseConstraintSolver.h.

◆ m_tmpSolverBodyPool

btAlignedObjectArray<btSolverBody> btSequentialImpulseConstraintSolver::m_tmpSolverBodyPool
protected

Definition at line 56 of file btSequentialImpulseConstraintSolver.h.

◆ m_tmpSolverContactConstraintPool

btConstraintArray btSequentialImpulseConstraintSolver::m_tmpSolverContactConstraintPool
protected

Definition at line 57 of file btSequentialImpulseConstraintSolver.h.

◆ m_tmpSolverContactFrictionConstraintPool

btConstraintArray btSequentialImpulseConstraintSolver::m_tmpSolverContactFrictionConstraintPool
protected

Definition at line 59 of file btSequentialImpulseConstraintSolver.h.

◆ m_tmpSolverContactRollingFrictionConstraintPool

btConstraintArray btSequentialImpulseConstraintSolver::m_tmpSolverContactRollingFrictionConstraintPool
protected

Definition at line 60 of file btSequentialImpulseConstraintSolver.h.

◆ m_tmpSolverNonContactConstraintPool

btConstraintArray btSequentialImpulseConstraintSolver::m_tmpSolverNonContactConstraintPool
protected

Definition at line 58 of file btSequentialImpulseConstraintSolver.h.


The documentation for this class was generated from the following files: