Blender  V3.3
Classes | Typedefs | Functions | Variables
btSequentialImpulseConstraintSolver.h File Reference
#include "BulletDynamics/ConstraintSolver/btTypedConstraint.h"
#include "BulletDynamics/ConstraintSolver/btContactSolverInfo.h"
#include "BulletDynamics/ConstraintSolver/btSolverBody.h"
#include "BulletDynamics/ConstraintSolver/btSolverConstraint.h"
#include "BulletCollision/NarrowPhaseCollision/btManifoldPoint.h"
#include "BulletDynamics/ConstraintSolver/btConstraintSolver.h"

Go to the source code of this file.

Classes

struct  btSolverAnalyticsData
 

Typedefs

typedef btScalar(* btSingleConstraintRowSolver) (btSolverBody &, btSolverBody &, const btSolverConstraint &)
 

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)
 
static void applyAnisotropicFriction (btCollisionObject *colObj, btVector3 &frictionDirection, int frictionMode)
 
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)
 
 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)
 
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 ()
 

Variables

btSequentialImpulseConstraintSolver __pad0__
 The btSequentialImpulseConstraintSolver is a fast SIMD implementation of the Projected Gauss Seidel (iterative LCP) method. More...
 
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::btConstraintInfo1 > m_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...
 
btSolverAnalyticsData m_analyticsData
 

Typedef Documentation

◆ btSingleConstraintRowSolver

typedef btScalar(* btSingleConstraintRowSolver) (btSolverBody &, btSolverBody &, const btSolverConstraint &)

Definition at line 30 of file btSequentialImpulseConstraintSolver.h.

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. 
)

◆ 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 
)

◆ applyAnisotropicFriction()

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

◆ BT_DECLARE_ALIGNED_ALLOCATOR()

BT_DECLARE_ALIGNED_ALLOCATOR ( )

◆ btRand2()

unsigned long btSequentialImpulseConstraintSolver::btRand2 ( )

Definition at line 420 of file btSequentialImpulseConstraintSolver.cpp.

References m_btSeed2.

Referenced by btRandInt2().

◆ btRandInt2()

int btSequentialImpulseConstraintSolver::btRandInt2 ( int  n)

◆ btSequentialImpulseConstraintSolver()

btSequentialImpulseConstraintSolver::btSequentialImpulseConstraintSolver ( )

◆ convertBodies()

void btSequentialImpulseConstraintSolverMt::convertBodies ( btCollisionObject **  bodies,
int  numBodies,
const btContactSolverInfo infoGlobal 
)
virtual

◆ convertContact()

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

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.

References addFrictionConstraint(), addTorsionalFrictionConstraint(), applyAnisotropicFriction(), BT_CONTACT_FLAG_LATERAL_FRICTION_INITIALIZED, btCollisionObject, btPlaneSpace1(), btSolverBody, btSolverConstraint, btSqrt(), btVector3, CF_ANISOTROPIC_FRICTION, CF_ANISOTROPIC_ROLLING_FRICTION, btAlignedObjectArray< T >::expandNonInitializing(), btManifoldPoint::getDistance(), getOrInitSolverBody(), btManifoldPoint::getPositionWorldOnA(), btManifoldPoint::getPositionWorldOnB(), infoGlobal, btManifoldPoint::m_combinedRollingFriction, btManifoldPoint::m_combinedSpinningFriction, btManifoldPoint::m_contactMotion1, btManifoldPoint::m_contactMotion2, btManifoldPoint::m_contactPointFlags, btManifoldPoint::m_frictionCFM, btManifoldPoint::m_lateralFrictionDir1, btManifoldPoint::m_lateralFrictionDir2, btManifoldPoint::m_normalWorldOnB, btContactSolverInfoData::m_solverMode, btContactSolverInfoData::m_timeStep, m_tmpSolverContactConstraintPool, m_tmpSolverContactFrictionConstraintPool, setFrictionConstraintImpulse(), setupContactConstraint(), SIMD_EPSILON, btAlignedObjectArray< T >::size(), SOLVER_DISABLE_VELOCITY_DEPENDENT_FRICTION_DIRECTION, SOLVER_ENABLE_FRICTION_DIRECTION_CACHING, and SOLVER_USE_2_FRICTION_DIRECTIONS.

Referenced by convertContacts().

◆ convertContacts()

void btMultiBodyConstraintSolver::convertContacts ( btPersistentManifold **  manifoldPtr,
int  numManifolds,
const btContactSolverInfo infoGlobal 
)
virtual

◆ convertJoint()

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

◆ convertJoints()

void btSequentialImpulseConstraintSolverMt::convertJoints ( btTypedConstraint **  constraints,
int  numConstraints,
const btContactSolverInfo infoGlobal 
)
virtual

◆ getActiveConstraintRowSolverGeneric()

btSingleConstraintRowSolver getActiveConstraintRowSolverGeneric ( )

◆ getActiveConstraintRowSolverLowerLimit()

btSingleConstraintRowSolver getActiveConstraintRowSolverLowerLimit ( )

◆ getOrInitSolverBody()

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

◆ getRandSeed()

unsigned long getRandSeed ( ) const

Definition at line 174 of file btSequentialImpulseConstraintSolver.h.

References m_btSeed2.

◆ 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.

References gResolveSingleConstraintRowGeneric_scalar_reference().

◆ 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.

References gResolveSingleConstraintRowLowerLimit_scalar_reference().

◆ getSolverType()

virtual btConstraintSolverType getSolverType ( ) const
virtual

◆ getSSE2ConstraintRowSolverGeneric()

btSingleConstraintRowSolver getSSE2ConstraintRowSolverGeneric ( )

◆ getSSE2ConstraintRowSolverLowerLimit()

btSingleConstraintRowSolver getSSE2ConstraintRowSolverLowerLimit ( )

◆ getSSE4_1ConstraintRowSolverGeneric()

btSingleConstraintRowSolver getSSE4_1ConstraintRowSolverGeneric ( )

◆ getSSE4_1ConstraintRowSolverLowerLimit()

btSingleConstraintRowSolver getSSE4_1ConstraintRowSolverLowerLimit ( )

◆ initSolverBody()

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

◆ reset()

virtual void reset ( )
virtual

◆ resolveSingleConstraintRowGeneric()

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

◆ resolveSingleConstraintRowGenericSIMD()

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

◆ resolveSingleConstraintRowLowerLimit()

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

◆ resolveSingleConstraintRowLowerLimitSIMD()

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

◆ resolveSplitPenetrationImpulse()

btScalar resolveSplitPenetrationImpulse ( btSolverBody bodyA,
btSolverBody bodyB,
const btSolverConstraint contactConstraint 
)

◆ resolveSplitPenetrationImpulseCacheFriendly()

btScalar resolveSplitPenetrationImpulseCacheFriendly ( btSolverBody bodyA,
btSolverBody bodyB,
const btSolverConstraint contactConstraint 
)

◆ resolveSplitPenetrationSIMD()

btScalar resolveSplitPenetrationSIMD ( btSolverBody bodyA,
btSolverBody bodyB,
const btSolverConstraint contactConstraint 
)

◆ restitutionCurve()

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

◆ setConstraintRowSolverGeneric()

void setConstraintRowSolverGeneric ( btSingleConstraintRowSolver  rowSolver)

◆ setConstraintRowSolverLowerLimit()

void setConstraintRowSolverLowerLimit ( btSingleConstraintRowSolver  rowSolver)

◆ setFrictionConstraintImpulse()

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

◆ setRandSeed()

void setRandSeed ( unsigned long  seed)

Definition at line 170 of file btSequentialImpulseConstraintSolver.h.

References m_btSeed2, and seed.

◆ 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 
)

◆ 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. 
)

◆ setupSolverFunctions()

void btSequentialImpulseConstraintSolver::setupSolverFunctions ( bool  useSimd)

◆ 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. 
)

◆ solveGroup()

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

Referenced by solveMultiBodyGroup().

◆ solveGroupCacheFriendlyFinish()

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

◆ solveGroupCacheFriendlyIterations()

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

◆ solveGroupCacheFriendlySetup()

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

◆ solveGroupCacheFriendlySplitImpulseIterations()

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

◆ solveSingleIteration()

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

◆ writeBackBodies()

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

◆ writeBackContacts()

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

◆ writeBackJoints()

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

◆ ~btSequentialImpulseConstraintSolver()

btSequentialImpulseConstraintSolver::~btSequentialImpulseConstraintSolver ( )
virtual

Definition at line 385 of file btSequentialImpulseConstraintSolver.cpp.

Variable Documentation

◆ __pad0__

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

Definition at line 51 of file btSequentialImpulseConstraintSolver.h.

◆ m_analyticsData

btSolverAnalyticsData m_analyticsData

◆ m_btSeed2

unsigned long m_btSeed2

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

Definition at line 108 of file btSequentialImpulseConstraintSolver.h.

Referenced by btRand2(), btSequentialImpulseConstraintSolver(), getRandSeed(), and setRandSeed().

◆ m_cachedSolverMode

int m_cachedSolverMode

◆ m_fixedBodyId

int m_fixedBodyId

◆ m_kinematicBodyUniqueIdToSolverBodyTable

btAlignedObjectArray<int> m_kinematicBodyUniqueIdToSolverBodyTable

◆ m_leastSquaresResidual

btScalar m_leastSquaresResidual

◆ m_maxOverrideNumSolverIterations

int m_maxOverrideNumSolverIterations

◆ m_orderFrictionConstraintPool

btAlignedObjectArray<int> m_orderFrictionConstraintPool

Definition at line 64 of file btSequentialImpulseConstraintSolver.h.

Referenced by solveSingleIteration().

◆ m_orderNonContactConstraintPool

btAlignedObjectArray<int> m_orderNonContactConstraintPool

Definition at line 63 of file btSequentialImpulseConstraintSolver.h.

Referenced by solveSingleIteration().

◆ m_orderTmpConstraintPool

btAlignedObjectArray<int> m_orderTmpConstraintPool

◆ m_resolveSingleConstraintRowGeneric

btSingleConstraintRowSolver m_resolveSingleConstraintRowGeneric

◆ m_resolveSingleConstraintRowLowerLimit

btSingleConstraintRowSolver m_resolveSingleConstraintRowLowerLimit

◆ m_resolveSplitPenetrationImpulse

btSingleConstraintRowSolver m_resolveSplitPenetrationImpulse

◆ m_tmpConstraintSizesPool

btAlignedObjectArray<btTypedConstraint::btConstraintInfo1> m_tmpConstraintSizesPool

◆ m_tmpSolverContactConstraintPool

btConstraintArray m_tmpSolverContactConstraintPool

◆ m_tmpSolverContactFrictionConstraintPool

btConstraintArray m_tmpSolverContactFrictionConstraintPool

◆ m_tmpSolverContactRollingFrictionConstraintPool

btConstraintArray m_tmpSolverContactRollingFrictionConstraintPool

◆ m_tmpSolverNonContactConstraintPool

btConstraintArray m_tmpSolverNonContactConstraintPool