Bullet Collision Detection & Physics Library: btMultiBodyConstraintSolver Class Reference

Bullet Collision Detection & Physics Library

- Main Page
- Namespaces
- Classes
- Files

- Class List
- Class Hierarchy
- Class Members

Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
btMultiBodyConstraintSolver Class Reference

`#include <btMultiBodyConstraintSolver.h>`

Inheritance diagram for btMultiBodyConstraintSolver:
[legend]
Collaboration diagram for btMultiBodyConstraintSolver:
[legend]

## Public Member Functions
| BT_DECLARE_ALIGNED_ALLOCATOR ()
virtual btScalar | solveGroup (btCollisionObject **bodies, int numBodies, btPersistentManifold **manifold, int numManifolds, btTypedConstraint **constraints, int numConstraints, const btContactSolverInfo &info, btIDebugDraw *debugDrawer, btDispatcher *dispatcher)
| this method should not be called, it was just used during porting/integration of Featherstone btMultiBody, providing backwards compatibility but no support for btMultiBodyConstraint (only contact constraints)
virtual btScalar | solveGroupCacheFriendlyFinish (btCollisionObject **bodies, int numBodies, const btContactSolverInfo &infoGlobal)
virtual void | solveMultiBodyGroup (btCollisionObject **bodies, int numBodies, btPersistentManifold **manifold, int numManifolds, btTypedConstraint **constraints, int numConstraints, btMultiBodyConstraint **multiBodyConstraints, int numMultiBodyConstraints, const btContactSolverInfo &info, btIDebugDraw *debugDrawer, btDispatcher *dispatcher)
Public Member Functions inherited from btSequentialImpulseConstraintSolver
| 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
virtual void | reset ()
| clear internal cached data and reset random seed
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.
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.
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
virtual void | allSolved (const btContactSolverInfo &, class btIDebugDraw *)
virtual void | reset ()=0
| clear internal cached data and reset random seed
virtual btConstraintSolverType | getSolverType () const =0

## Protected Member Functions
btScalar | resolveSingleConstraintRowGeneric (const btMultiBodySolverConstraint &c)
btScalar | resolveConeFrictionConstraintRows (const btMultiBodySolverConstraint &cA1, const btMultiBodySolverConstraint &cB)
void | convertContacts (btPersistentManifold **manifoldPtr, int numManifolds, const btContactSolverInfo &infoGlobal)
btMultiBodySolverConstraint & | addMultiBodyFrictionConstraint (const btVector3 &normalAxis, const btScalar &appliedImpulse, btPersistentManifold *manifold, int frictionIndex, btManifoldPoint &cp, btCollisionObject *colObj0, btCollisionObject *colObj1, btScalar relaxation, const btContactSolverInfo &infoGlobal, btScalar desiredVelocity=0, btScalar cfmSlip=0)
btMultiBodySolverConstraint & | addMultiBodyTorsionalFrictionConstraint (const btVector3 &normalAxis, btPersistentManifold *manifold, int frictionIndex, btManifoldPoint &cp, btScalar combinedTorsionalFriction, btCollisionObject *colObj0, btCollisionObject *colObj1, btScalar relaxation, const btContactSolverInfo &infoGlobal, btScalar desiredVelocity=0, btScalar cfmSlip=0)
btMultiBodySolverConstraint & | addMultiBodySpinningFrictionConstraint (const btVector3 &normalAxis, btPersistentManifold *manifold, int frictionIndex, btManifoldPoint &cp, btScalar combinedTorsionalFriction, btCollisionObject *colObj0, btCollisionObject *colObj1, btScalar relaxation, const btContactSolverInfo &infoGlobal, btScalar desiredVelocity=0, btScalar cfmSlip=0)
void | setupMultiBodyJointLimitConstraint (btMultiBodySolverConstraint &constraintRow, btScalar *jacA, btScalar *jacB, btScalar penetration, btScalar combinedFrictionCoeff, btScalar combinedRestitutionCoeff, const btContactSolverInfo &infoGlobal)
void | setupMultiBodyContactConstraint (btMultiBodySolverConstraint &solverConstraint, const btVector3 &contactNormal, const btScalar &appliedImpulse, btManifoldPoint &cp, const btContactSolverInfo &infoGlobal, btScalar &relaxation, bool isFriction, btScalar desiredVelocity=0, btScalar cfmSlip=0)
void | setupMultiBodyTorsionalFrictionConstraint (btMultiBodySolverConstraint &solverConstraint, const btVector3 &contactNormal, btManifoldPoint &cp, btScalar combinedTorsionalFriction, const btContactSolverInfo &infoGlobal, btScalar &relaxation, bool isFriction, btScalar desiredVelocity=0, btScalar cfmSlip=0)
void | convertMultiBodyContact (btPersistentManifold *manifold, const btContactSolverInfo &infoGlobal)
virtual btScalar | solveGroupCacheFriendlySetup (btCollisionObject **bodies, int numBodies, btPersistentManifold **manifoldPtr, int numManifolds, btTypedConstraint **constraints, int numConstraints, const btContactSolverInfo &infoGlobal, btIDebugDraw *debugDrawer)
virtual btScalar | solveSingleIteration (int iteration, btCollisionObject **bodies, int numBodies, btPersistentManifold **manifoldPtr, int numManifolds, btTypedConstraint **constraints, int numConstraints, const btContactSolverInfo &infoGlobal, btIDebugDraw *debugDrawer)
void | applyDeltaVee (btScalar *deltaV, btScalar impulse, int velocityIndex, int ndof)
void | writeBackSolverBodyToMultiBody (btMultiBodySolverConstraint &constraint, btScalar deltaTime)
Protected Member Functions inherited from btSequentialImpulseConstraintSolver
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.)
btSolverConstraint & | 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.)
btSolverConstraint & | 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)
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)

## Protected Attributes
btMultiBodyConstraintArray | m_multiBodyNonContactConstraints
btMultiBodyConstraintArray | m_multiBodyNormalContactConstraints
btMultiBodyConstraintArray | m_multiBodyFrictionContactConstraints
btMultiBodyConstraintArray | m_multiBodyTorsionalFrictionContactConstraints
btMultiBodyConstraintArray | m_multiBodySpinningFrictionContactConstraints
btMultiBodyJacobianData | m_data
btMultiBodyConstraint ** | m_tmpMultiBodyConstraints
int | m_tmpNumMultiBodyConstraints
Protected Attributes inherited from btSequentialImpulseConstraintSolver
btAlignedObjectArray< btSolverBody > | m_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::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

## Additional Inherited Members
Public Attributes inherited from btSequentialImpulseConstraintSolver
btSolverAnalyticsData | m_analyticsData
Static Protected Member Functions inherited from btSequentialImpulseConstraintSolver
static void | applyAnisotropicFriction (btCollisionObject *colObj, btVector3 &frictionDirection, int frictionMode)

## Detailed Description

Definition at line 28 of file btMultiBodyConstraintSolver.h.

## Member Function Documentation

## ◆ addMultiBodyFrictionConstraint()

btMultiBodySolverConstraint & btMultiBodyConstraintSolver::addMultiBodyFrictionConstraint | ( | const btVector3 & | normalAxis,
|  | const btScalar & | appliedImpulse,
|  | btPersistentManifold * | manifold,
|  | int | frictionIndex,
|  | btManifoldPoint & | cp,
|  | btCollisionObject * | colObj0,
|  | btCollisionObject * | colObj1,
|  | btScalar | relaxation,
|  | const btContactSolverInfo & | infoGlobal,
|  | btScalar | desiredVelocity = `0`,
|  | btScalar | cfmSlip = `0`
| ) |  |
| protected

Definition at line 1142 of file btMultiBodyConstraintSolver.cpp.

## ◆ addMultiBodySpinningFrictionConstraint()

btMultiBodySolverConstraint & btMultiBodyConstraintSolver::addMultiBodySpinningFrictionConstraint | ( | const btVector3 & | normalAxis,
|  | btPersistentManifold * | manifold,
|  | int | frictionIndex,
|  | btManifoldPoint & | cp,
|  | btScalar | combinedTorsionalFriction,
|  | btCollisionObject * | colObj0,
|  | btCollisionObject * | colObj1,
|  | btScalar | relaxation,
|  | const btContactSolverInfo & | infoGlobal,
|  | btScalar | desiredVelocity = `0`,
|  | btScalar | cfmSlip = `0`
| ) |  |
| protected

Definition at line 1217 of file btMultiBodyConstraintSolver.cpp.

## ◆ addMultiBodyTorsionalFrictionConstraint()

btMultiBodySolverConstraint & btMultiBodyConstraintSolver::addMultiBodyTorsionalFrictionConstraint | ( | const btVector3 & | normalAxis,
|  | btPersistentManifold * | manifold,
|  | int | frictionIndex,
|  | btManifoldPoint & | cp,
|  | btScalar | combinedTorsionalFriction,
|  | btCollisionObject * | colObj0,
|  | btCollisionObject * | colObj1,
|  | btScalar | relaxation,
|  | const btContactSolverInfo & | infoGlobal,
|  | btScalar | desiredVelocity = `0`,
|  | btScalar | cfmSlip = `0`
| ) |  |
| protected

Definition at line 1177 of file btMultiBodyConstraintSolver.cpp.

## ◆ applyDeltaVee()

void btMultiBodyConstraintSolver::applyDeltaVee | ( | btScalar * | deltaV,
|  | btScalar | impulse,
|  | int | velocityIndex,
|  | int | ndof
| ) |  |
| protected

Definition at line 229 of file btMultiBodyConstraintSolver.cpp.

## ◆ BT_DECLARE_ALIGNED_ALLOCATOR()

btMultiBodyConstraintSolver::BT_DECLARE_ALIGNED_ALLOCATOR | ( |  | ) |

## ◆ convertContacts()

void btMultiBodyConstraintSolver::convertContacts | ( | btPersistentManifold ** | manifoldPtr,
|  | int | numManifolds,
|  | const btContactSolverInfo & | infoGlobal
| ) |  |
| protectedvirtual

Reimplemented from btSequentialImpulseConstraintSolver.

Definition at line 1419 of file btMultiBodyConstraintSolver.cpp.

## ◆ convertMultiBodyContact()

void btMultiBodyConstraintSolver::convertMultiBodyContact | ( | 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 every frame based on the relative linear velocity. If the relative velocity is 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 set the cp.m_lateralFrictionInitialized to true 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 1254 of file btMultiBodyConstraintSolver.cpp.

## ◆ resolveConeFrictionConstraintRows()

btScalar btMultiBodyConstraintSolver::resolveConeFrictionConstraintRows | ( | const btMultiBodySolverConstraint & | cA1,
|  | const btMultiBodySolverConstraint & | cB
| ) |  |
| protected

Definition at line 318 of file btMultiBodyConstraintSolver.cpp.

## ◆ resolveSingleConstraintRowGeneric()

btScalar btMultiBodyConstraintSolver::resolveSingleConstraintRowGeneric | ( | const btMultiBodySolverConstraint & | c | ) |
| protected

Definition at line 235 of file btMultiBodyConstraintSolver.cpp.

## ◆ setupMultiBodyContactConstraint()

void btMultiBodyConstraintSolver::setupMultiBodyContactConstraint | ( | btMultiBodySolverConstraint & | solverConstraint,
|  | const btVector3 & | contactNormal,
|  | const btScalar & | appliedImpulse,
|  | btManifoldPoint & | cp,
|  | const btContactSolverInfo & | infoGlobal,
|  | btScalar & | relaxation,
|  | bool | isFriction,
|  | btScalar | desiredVelocity = `0`,
|  | btScalar | cfmSlip = `0`
| ) |  |
| protected

Definition at line 501 of file btMultiBodyConstraintSolver.cpp.

## ◆ setupMultiBodyJointLimitConstraint()

void btMultiBodyConstraintSolver::setupMultiBodyJointLimitConstraint | ( | btMultiBodySolverConstraint & | constraintRow,
|  | btScalar * | jacA,
|  | btScalar * | jacB,
|  | btScalar | penetration,
|  | btScalar | combinedFrictionCoeff,
|  | btScalar | combinedRestitutionCoeff,
|  | const btContactSolverInfo & | infoGlobal
| ) |  |
| protected

## ◆ setupMultiBodyTorsionalFrictionConstraint()

void btMultiBodyConstraintSolver::setupMultiBodyTorsionalFrictionConstraint | ( | btMultiBodySolverConstraint & | solverConstraint,
|  | const btVector3 & | contactNormal,
|  | btManifoldPoint & | cp,
|  | btScalar | combinedTorsionalFriction,
|  | const btContactSolverInfo & | infoGlobal,
|  | btScalar & | relaxation,
|  | bool | isFriction,
|  | btScalar | desiredVelocity = `0`,
|  | btScalar | cfmSlip = `0`
| ) |  |
| protected

Definition at line 888 of file btMultiBodyConstraintSolver.cpp.

## ◆ solveGroup()

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

this method should not be called, it was just used during porting/integration of Featherstone btMultiBody, providing backwards compatibility but no support for btMultiBodyConstraint (only contact constraints)

Reimplemented from btSequentialImpulseConstraintSolver.

Definition at line 1494 of file btMultiBodyConstraintSolver.cpp.

## ◆ solveGroupCacheFriendlyFinish()

btScalar btMultiBodyConstraintSolver::solveGroupCacheFriendlyFinish | ( | btCollisionObject ** | bodies,
|  | int | numBodies,
|  | const btContactSolverInfo & | infoGlobal
| ) |  |
| virtual

Reimplemented from btSequentialImpulseConstraintSolver.

Definition at line 1588 of file btMultiBodyConstraintSolver.cpp.

## ◆ solveGroupCacheFriendlySetup()

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

Reimplemented from btSequentialImpulseConstraintSolver.

Reimplemented in btMultiBodyMLCPConstraintSolver.

Definition at line 203 of file btMultiBodyConstraintSolver.cpp.

## ◆ solveMultiBodyGroup()

void btMultiBodyConstraintSolver::solveMultiBodyGroup | ( | btCollisionObject ** | bodies,
|  | int | numBodies,
|  | btPersistentManifold ** | manifold,
|  | int | numManifolds,
|  | btTypedConstraint ** | constraints,
|  | int | numConstraints,
|  | btMultiBodyConstraint ** | multiBodyConstraints,
|  | int | numMultiBodyConstraints,
|  | const btContactSolverInfo & | info,
|  | btIDebugDraw * | debugDrawer,
|  | btDispatcher * | dispatcher
| ) |  |
| virtual

Definition at line 1740 of file btMultiBodyConstraintSolver.cpp.

## ◆ solveSingleIteration()

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

Reimplemented from btSequentialImpulseConstraintSolver.

Definition at line 28 of file btMultiBodyConstraintSolver.cpp.

## ◆ writeBackSolverBodyToMultiBody()

void btMultiBodyConstraintSolver::writeBackSolverBodyToMultiBody | ( | btMultiBodySolverConstraint & | constraint,
|  | btScalar | deltaTime
| ) |  |
| protected

Definition at line 1521 of file btMultiBodyConstraintSolver.cpp.

## Member Data Documentation

## ◆ m_data

btMultiBodyJacobianData btMultiBodyConstraintSolver::m_data
| protected

Definition at line 39 of file btMultiBodyConstraintSolver.h.

## ◆ m_multiBodyFrictionContactConstraints

btMultiBodyConstraintArray btMultiBodyConstraintSolver::m_multiBodyFrictionContactConstraints
| protected

Definition at line 35 of file btMultiBodyConstraintSolver.h.

## ◆ m_multiBodyNonContactConstraints

btMultiBodyConstraintArray btMultiBodyConstraintSolver::m_multiBodyNonContactConstraints
| protected

Definition at line 32 of file btMultiBodyConstraintSolver.h.

## ◆ m_multiBodyNormalContactConstraints

btMultiBodyConstraintArray btMultiBodyConstraintSolver::m_multiBodyNormalContactConstraints
| protected

Definition at line 34 of file btMultiBodyConstraintSolver.h.

## ◆ m_multiBodySpinningFrictionContactConstraints

btMultiBodyConstraintArray btMultiBodyConstraintSolver::m_multiBodySpinningFrictionContactConstraints
| protected

Definition at line 37 of file btMultiBodyConstraintSolver.h.

## ◆ m_multiBodyTorsionalFrictionContactConstraints

btMultiBodyConstraintArray btMultiBodyConstraintSolver::m_multiBodyTorsionalFrictionContactConstraints
| protected

Definition at line 36 of file btMultiBodyConstraintSolver.h.

## ◆ m_tmpMultiBodyConstraints

btMultiBodyConstraint** btMultiBodyConstraintSolver::m_tmpMultiBodyConstraints
| protected

Definition at line 42 of file btMultiBodyConstraintSolver.h.

## ◆ m_tmpNumMultiBodyConstraints

int btMultiBodyConstraintSolver::m_tmpNumMultiBodyConstraints
| protected

Definition at line 43 of file btMultiBodyConstraintSolver.h.

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

- btMultiBodyConstraintSolver.h
- btMultiBodyConstraintSolver.cpp