Bullet Collision Detection & Physics Library
btNNCGConstraintSolver Class Reference

#include <btNNCGConstraintSolver.h>

Inheritance diagram for btNNCGConstraintSolver:
Collaboration diagram for btNNCGConstraintSolver:

Public Member Functions

 BT_DECLARE_ALIGNED_ALLOCATOR ()
 btNNCGConstraintSolver ()
virtual btConstraintSolverType getSolverType () const
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
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 void allSolved (const btContactSolverInfo &, class btIDebugDraw *)

Public Attributes

bool m_onlyForNoneContact
Public Attributes inherited from btSequentialImpulseConstraintSolver
btSolverAnalyticsData m_analyticsData

Protected Member Functions

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)
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 solveGroupCacheFriendlyIterations (btCollisionObject **bodies, int numBodies, btPersistentManifold **manifoldPtr, int numManifolds, btTypedConstraint **constraints, int numConstraints, const btContactSolverInfo &infoGlobal, btIDebugDraw *debugDrawer)

Protected Attributes

btScalar m_deltafLengthSqrPrev
btAlignedObjectArray< btScalarm_pNC
btAlignedObjectArray< btScalarm_pC
btAlignedObjectArray< btScalarm_pCF
btAlignedObjectArray< btScalarm_pCRF
btAlignedObjectArray< btScalarm_deltafNC
btAlignedObjectArray< btScalarm_deltafC
btAlignedObjectArray< btScalarm_deltafCF
btAlignedObjectArray< btScalarm_deltafCRF
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

Additional Inherited Members

Static Protected Member Functions inherited from btSequentialImpulseConstraintSolver
static void applyAnisotropicFriction (btCollisionObject *colObj, btVector3 &frictionDirection, int frictionMode)

Detailed Description

Definition at line 21 of file btNNCGConstraintSolver.h.

Constructor & Destructor Documentation

◆ btNNCGConstraintSolver()

btNNCGConstraintSolver::btNNCGConstraintSolver ( )
inline

Definition at line 47 of file btNNCGConstraintSolver.h.

Member Function Documentation

◆ BT_DECLARE_ALIGNED_ALLOCATOR()

btNNCGConstraintSolver::BT_DECLARE_ALIGNED_ALLOCATOR ( )

◆ getSolverType()

virtual btConstraintSolverType btNNCGConstraintSolver::getSolverType ( ) const
inlinevirtual

Reimplemented from btSequentialImpulseConstraintSolver.

Definition at line 49 of file btNNCGConstraintSolver.h.

◆ solveGroupCacheFriendlyFinish()

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

Reimplemented from btSequentialImpulseConstraintSolver.

Definition at line 355 of file btNNCGConstraintSolver.cpp.

◆ solveGroupCacheFriendlySetup()

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

Reimplemented from btSequentialImpulseConstraintSolver.

Definition at line 18 of file btNNCGConstraintSolver.cpp.

◆ solveSingleIteration()

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

solve all contact constraints

solve all friction constraints

Reimplemented from btSequentialImpulseConstraintSolver.

Definition at line 35 of file btNNCGConstraintSolver.cpp.

Member Data Documentation

◆ m_deltafC

btAlignedObjectArray<btScalar> btNNCGConstraintSolver::m_deltafC
protected

Definition at line 34 of file btNNCGConstraintSolver.h.

◆ m_deltafCF

btAlignedObjectArray<btScalar> btNNCGConstraintSolver::m_deltafCF
protected

Definition at line 35 of file btNNCGConstraintSolver.h.

◆ m_deltafCRF

btAlignedObjectArray<btScalar> btNNCGConstraintSolver::m_deltafCRF
protected

Definition at line 36 of file btNNCGConstraintSolver.h.

◆ m_deltafLengthSqrPrev

btScalar btNNCGConstraintSolver::m_deltafLengthSqrPrev
protected

Definition at line 25 of file btNNCGConstraintSolver.h.

◆ m_deltafNC

btAlignedObjectArray<btScalar> btNNCGConstraintSolver::m_deltafNC
protected

Definition at line 33 of file btNNCGConstraintSolver.h.

◆ m_onlyForNoneContact

bool btNNCGConstraintSolver::m_onlyForNoneContact

Definition at line 54 of file btNNCGConstraintSolver.h.

◆ m_pC

btAlignedObjectArray<btScalar> btNNCGConstraintSolver::m_pC
protected

Definition at line 28 of file btNNCGConstraintSolver.h.

◆ m_pCF

btAlignedObjectArray<btScalar> btNNCGConstraintSolver::m_pCF
protected

Definition at line 29 of file btNNCGConstraintSolver.h.

◆ m_pCRF

btAlignedObjectArray<btScalar> btNNCGConstraintSolver::m_pCRF
protected

Definition at line 30 of file btNNCGConstraintSolver.h.

◆ m_pNC

btAlignedObjectArray<btScalar> btNNCGConstraintSolver::m_pNC
protected

Definition at line 27 of file btNNCGConstraintSolver.h.


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