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

#include <btDeformableMultiBodyConstraintSolver.h>

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

Public Member Functions

 BT_DECLARE_ALIGNED_ALLOCATOR ()
 
void setDeformableSolver (btDeformableBodySolver *deformableSolver)
 
virtual void solveDeformableBodyGroup (btCollisionObject **bodies, int numBodies, btCollisionObject **deformableBodies, int numDeformableBodies, btPersistentManifold **manifold, int numManifolds, btTypedConstraint **constraints, int numConstraints, btMultiBodyConstraint **multiBodyConstraints, int numMultiBodyConstraints, const btContactSolverInfo &info, btIDebugDraw *debugDrawer, btDispatcher *dispatcher)
 
- Public Member Functions inherited from btMultiBodyConstraintSolver
 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) More...
 
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 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
 

Protected Member Functions

void solverBodyWriteBack (const btContactSolverInfo &infoGlobal)
 
void writeToSolverBody (btCollisionObject **bodies, int numBodies, const btContactSolverInfo &infoGlobal)
 
void pairDeformableAndSolverBody (btCollisionObject **bodies, int numBodies, int numDeformableBodies, const btContactSolverInfo &infoGlobal)
 
virtual void solveGroupCacheFriendlySplitImpulseIterations (btCollisionObject **bodies, int numBodies, btCollisionObject **deformableBodies, int numDeformableBodies, btPersistentManifold **manifoldPtr, int numManifolds, btTypedConstraint **constraints, int numConstraints, const btContactSolverInfo &infoGlobal, btIDebugDraw *debugDrawer)
 
virtual btScalar solveDeformableGroupIterations (btCollisionObject **bodies, int numBodies, btCollisionObject **deformableBodies, int numDeformableBodies, btPersistentManifold **manifoldPtr, int numManifolds, btTypedConstraint **constraints, int numConstraints, const btContactSolverInfo &infoGlobal, btIDebugDraw *debugDrawer)
 
- Protected Member Functions inherited from btMultiBodyConstraintSolver
btScalar resolveSingleConstraintRowGeneric (const btMultiBodySolverConstraint &c)
 
btScalar resolveConeFrictionConstraintRows (const btMultiBodySolverConstraint &cA1, const btMultiBodySolverConstraint &cB)
 
void convertContacts (btPersistentManifold **manifoldPtr, int numManifolds, const btContactSolverInfo &infoGlobal)
 
btMultiBodySolverConstraintaddMultiBodyFrictionConstraint (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)
 
btMultiBodySolverConstraintaddMultiBodyTorsionalFrictionConstraint (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)
 
btMultiBodySolverConstraintaddMultiBodySpinningFrictionConstraint (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.)
 
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)
 

Private Attributes

btDeformableBodySolverm_deformableSolver
 

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)
 
- Protected Attributes inherited from btMultiBodyConstraintSolver
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< 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

Definition at line 31 of file btDeformableMultiBodyConstraintSolver.h.

Member Function Documentation

◆ BT_DECLARE_ALIGNED_ALLOCATOR()

btDeformableMultiBodyConstraintSolver::BT_DECLARE_ALIGNED_ALLOCATOR ( )

◆ pairDeformableAndSolverBody()

void btDeformableMultiBodyConstraintSolver::pairDeformableAndSolverBody ( btCollisionObject **  bodies,
int  numBodies,
int  numDeformableBodies,
const btContactSolverInfo infoGlobal 
)
protected

Definition at line 133 of file btDeformableMultiBodyConstraintSolver.cpp.

◆ setDeformableSolver()

void btDeformableMultiBodyConstraintSolver::setDeformableSolver ( btDeformableBodySolver deformableSolver)
inline

Definition at line 56 of file btDeformableMultiBodyConstraintSolver.h.

◆ solveDeformableBodyGroup()

void btDeformableMultiBodyConstraintSolver::solveDeformableBodyGroup ( btCollisionObject **  bodies,
int  numBodies,
btCollisionObject **  deformableBodies,
int  numDeformableBodies,
btPersistentManifold **  manifold,
int  numManifolds,
btTypedConstraint **  constraints,
int  numConstraints,
btMultiBodyConstraint **  multiBodyConstraints,
int  numMultiBodyConstraints,
const btContactSolverInfo info,
btIDebugDraw debugDrawer,
btDispatcher dispatcher 
)
virtual

Definition at line 73 of file btDeformableMultiBodyConstraintSolver.cpp.

◆ solveDeformableGroupIterations()

btScalar btDeformableMultiBodyConstraintSolver::solveDeformableGroupIterations ( btCollisionObject **  bodies,
int  numBodies,
btCollisionObject **  deformableBodies,
int  numDeformableBodies,
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)

Definition at line 21 of file btDeformableMultiBodyConstraintSolver.cpp.

◆ solveGroupCacheFriendlySplitImpulseIterations()

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

Definition at line 179 of file btDeformableMultiBodyConstraintSolver.cpp.

◆ solverBodyWriteBack()

void btDeformableMultiBodyConstraintSolver::solverBodyWriteBack ( const btContactSolverInfo infoGlobal)
protected

Definition at line 113 of file btDeformableMultiBodyConstraintSolver.cpp.

◆ writeToSolverBody()

void btDeformableMultiBodyConstraintSolver::writeToSolverBody ( btCollisionObject **  bodies,
int  numBodies,
const btContactSolverInfo infoGlobal 
)
protected

Definition at line 91 of file btDeformableMultiBodyConstraintSolver.cpp.

Member Data Documentation

◆ m_deformableSolver

btDeformableBodySolver* btDeformableMultiBodyConstraintSolver::m_deformableSolver
private

Definition at line 34 of file btDeformableMultiBodyConstraintSolver.h.


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