Blender V2.61 - r43446
|
The btSequentialImpulseConstraintSolver is a fast SIMD implementation of the Projected Gauss Seidel (iterative LCP) method. More...
#include <btSequentialImpulseConstraintSolver.h>
Public Member Functions | |
btSequentialImpulseConstraintSolver () | |
virtual | ~btSequentialImpulseConstraintSolver () |
virtual btScalar | solveGroup (btCollisionObject **bodies, int numBodies, btPersistentManifold **manifold, int numManifolds, btTypedConstraint **constraints, int numConstraints, const btContactSolverInfo &info, btIDebugDraw *debugDrawer, btStackAlloc *stackAlloc, 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 |
Protected Member Functions | |
void | setupFrictionConstraint (btSolverConstraint &solverConstraint, const btVector3 &normalAxis, btRigidBody *solverBodyA, btRigidBody *solverBodyIdB, btManifoldPoint &cp, 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, btRigidBody *solverBodyA, btRigidBody *solverBodyB, int frictionIndex, btManifoldPoint &cp, const btVector3 &rel_pos1, const btVector3 &rel_pos2, btCollisionObject *colObj0, btCollisionObject *colObj1, btScalar relaxation, btScalar desiredVelocity=0., btScalar cfmSlip=0.) |
void | setupContactConstraint (btSolverConstraint &solverConstraint, btCollisionObject *colObj0, btCollisionObject *colObj1, btManifoldPoint &cp, const btContactSolverInfo &infoGlobal, btVector3 &vel, btScalar &rel_vel, btScalar &relaxation, btVector3 &rel_pos1, btVector3 &rel_pos2) |
void | setFrictionConstraintImpulse (btSolverConstraint &solverConstraint, btRigidBody *rb0, btRigidBody *rb1, btManifoldPoint &cp, const btContactSolverInfo &infoGlobal) |
btScalar | restitutionCurve (btScalar rel_vel, btScalar restitution) |
void | convertContact (btPersistentManifold *manifold, const btContactSolverInfo &infoGlobal) |
void | resolveSplitPenetrationSIMD (btRigidBody &body1, btRigidBody &body2, const btSolverConstraint &contactConstraint) |
void | resolveSplitPenetrationImpulseCacheFriendly (btRigidBody &body1, btRigidBody &body2, const btSolverConstraint &contactConstraint) |
int | getOrInitSolverBody (btCollisionObject &body) |
void | resolveSingleConstraintRowGeneric (btRigidBody &body1, btRigidBody &body2, const btSolverConstraint &contactConstraint) |
void | resolveSingleConstraintRowGenericSIMD (btRigidBody &body1, btRigidBody &body2, const btSolverConstraint &contactConstraint) |
void | resolveSingleConstraintRowLowerLimit (btRigidBody &body1, btRigidBody &body2, const btSolverConstraint &contactConstraint) |
void | resolveSingleConstraintRowLowerLimitSIMD (btRigidBody &body1, btRigidBody &body2, const btSolverConstraint &contactConstraint) |
virtual void | solveGroupCacheFriendlySplitImpulseIterations (btCollisionObject **bodies, int numBodies, btPersistentManifold **manifoldPtr, int numManifolds, btTypedConstraint **constraints, int numConstraints, const btContactSolverInfo &infoGlobal, btIDebugDraw *debugDrawer, btStackAlloc *stackAlloc) |
virtual btScalar | solveGroupCacheFriendlyFinish (btCollisionObject **bodies, int numBodies, btPersistentManifold **manifoldPtr, int numManifolds, btTypedConstraint **constraints, int numConstraints, const btContactSolverInfo &infoGlobal, btIDebugDraw *debugDrawer, btStackAlloc *stackAlloc) |
btScalar | solveSingleIteration (int iteration, btCollisionObject **bodies, int numBodies, btPersistentManifold **manifoldPtr, int numManifolds, btTypedConstraint **constraints, int numConstraints, const btContactSolverInfo &infoGlobal, btIDebugDraw *debugDrawer, btStackAlloc *stackAlloc) |
virtual btScalar | solveGroupCacheFriendlySetup (btCollisionObject **bodies, int numBodies, btPersistentManifold **manifoldPtr, int numManifolds, btTypedConstraint **constraints, int numConstraints, const btContactSolverInfo &infoGlobal, btIDebugDraw *debugDrawer, btStackAlloc *stackAlloc) |
virtual btScalar | solveGroupCacheFriendlyIterations (btCollisionObject **bodies, int numBodies, btPersistentManifold **manifoldPtr, int numManifolds, btTypedConstraint **constraints, int numConstraints, const btContactSolverInfo &infoGlobal, btIDebugDraw *debugDrawer, btStackAlloc *stackAlloc) |
Static Protected Member Functions | |
static btRigidBody & | getFixedBody () |
Protected Attributes | |
btConstraintArray | m_tmpSolverContactConstraintPool |
btConstraintArray | m_tmpSolverNonContactConstraintPool |
btConstraintArray | m_tmpSolverContactFrictionConstraintPool |
btAlignedObjectArray< int > | m_orderTmpConstraintPool |
btAlignedObjectArray< int > | m_orderFrictionConstraintPool |
btAlignedObjectArray < btTypedConstraint::btConstraintInfo1 > | m_tmpConstraintSizesPool |
unsigned long | m_btSeed2 |
m_btSeed2 is used for re-arranging the constraint rows. improves convergence/quality of friction |
The btSequentialImpulseConstraintSolver is a fast SIMD implementation of the Projected Gauss Seidel (iterative LCP) method.
Definition at line 28 of file btSequentialImpulseConstraintSolver.h.
btSequentialImpulseConstraintSolver::btSequentialImpulseConstraintSolver | ( | ) |
Definition at line 39 of file btSequentialImpulseConstraintSolver.cpp.
btSequentialImpulseConstraintSolver::~btSequentialImpulseConstraintSolver | ( | ) | [virtual] |
Definition at line 45 of file btSequentialImpulseConstraintSolver.cpp.
btSolverConstraint & btSequentialImpulseConstraintSolver::addFrictionConstraint | ( | const btVector3 & | normalAxis, |
btRigidBody * | solverBodyA, | ||
btRigidBody * | solverBodyB, | ||
int | frictionIndex, | ||
btManifoldPoint & | cp, | ||
const btVector3 & | rel_pos1, | ||
const btVector3 & | rel_pos2, | ||
btCollisionObject * | colObj0, | ||
btCollisionObject * | colObj1, | ||
btScalar | relaxation, | ||
btScalar | desiredVelocity = 0. , |
||
btScalar | cfmSlip = 0. |
||
) | [protected] |
Definition at line 416 of file btSequentialImpulseConstraintSolver.cpp.
References btAlignedObjectArray< T >::expandNonInitializing(), m_tmpSolverContactFrictionConstraintPool, and setupFrictionConstraint().
Referenced by convertContact().
unsigned long btSequentialImpulseConstraintSolver::btRand2 | ( | ) |
Definition at line 243 of file btSequentialImpulseConstraintSolver.cpp.
Referenced by btRandInt2().
int btSequentialImpulseConstraintSolver::btRandInt2 | ( | int | n | ) |
Definition at line 252 of file btSequentialImpulseConstraintSolver.cpp.
References btRand2().
Referenced by solveSingleIteration().
void btSequentialImpulseConstraintSolver::convertContact | ( | btPersistentManifold * | manifold, |
const btContactSolverInfo & | infoGlobal | ||
) | [protected] |
avoid collision response between two static objects
Definition at line 647 of file btSequentialImpulseConstraintSolver.cpp.
References addFrictionConstraint(), applyAnisotropicFriction(), btPlaneSpace1(), btSqrt(), btAlignedObjectArray< T >::expandNonInitializing(), btManifoldPoint::getDistance(), getFixedBody(), btRigidBody::getInvMass(), btManifoldPoint::m_contactCFM1, btManifoldPoint::m_contactCFM2, btManifoldPoint::m_contactMotion1, btManifoldPoint::m_contactMotion2, btManifoldPoint::m_lateralFrictionDir1, btManifoldPoint::m_lateralFrictionDir2, btManifoldPoint::m_lateralFrictionInitialized, btManifoldPoint::m_normalWorldOnB, btContactSolverInfoData::m_solverMode, 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 solveGroupCacheFriendlySetup().
btRigidBody & btSequentialImpulseConstraintSolver::getFixedBody | ( | ) | [static, protected] |
Definition at line 1211 of file btSequentialImpulseConstraintSolver.cpp.
References btRigidBody::setMassProps().
Referenced by convertContact(), and setupFrictionConstraint().
int btSequentialImpulseConstraintSolver::getOrInitSolverBody | ( | btCollisionObject & | body | ) | [protected] |
Definition at line 425 of file btSequentialImpulseConstraintSolver.cpp.
References btRigidBody::getInvMass().
unsigned long btSequentialImpulseConstraintSolver::getRandSeed | ( | ) | const [inline] |
Definition at line 115 of file btSequentialImpulseConstraintSolver.h.
References m_btSeed2.
void btSequentialImpulseConstraintSolver::reset | ( | ) | [virtual] |
clear internal cached data and reset random seed
Implements btConstraintSolver.
Definition at line 1206 of file btSequentialImpulseConstraintSolver.cpp.
References m_btSeed2.
void btSequentialImpulseConstraintSolver::resolveSingleConstraintRowGeneric | ( | btRigidBody & | body1, |
btRigidBody & | body2, | ||
const btSolverConstraint & | contactConstraint | ||
) | [protected] |
Definition at line 94 of file btSequentialImpulseConstraintSolver.cpp.
References btRigidBody::internalApplyImpulse(), btRigidBody::internalGetDeltaAngularVelocity(), btRigidBody::internalGetDeltaLinearVelocity(), btRigidBody::internalGetInvMass(), and sum().
Referenced by resolveSingleConstraintRowGenericSIMD(), and solveSingleIteration().
void btSequentialImpulseConstraintSolver::resolveSingleConstraintRowGenericSIMD | ( | btRigidBody & | body1, |
btRigidBody & | body2, | ||
const btSolverConstraint & | contactConstraint | ||
) | [protected] |
Definition at line 60 of file btSequentialImpulseConstraintSolver.cpp.
References btSimdScalar, btRigidBody::internalGetDeltaAngularVelocity(), btRigidBody::internalGetDeltaLinearVelocity(), btRigidBody::internalGetInvMass(), resolveSingleConstraintRowGeneric(), and sum().
Referenced by solveSingleIteration().
void btSequentialImpulseConstraintSolver::resolveSingleConstraintRowLowerLimit | ( | btRigidBody & | body1, |
btRigidBody & | body2, | ||
const btSolverConstraint & | contactConstraint | ||
) | [protected] |
Definition at line 154 of file btSequentialImpulseConstraintSolver.cpp.
References btRigidBody::internalApplyImpulse(), btRigidBody::internalGetDeltaAngularVelocity(), btRigidBody::internalGetDeltaLinearVelocity(), btRigidBody::internalGetInvMass(), and sum().
Referenced by resolveSingleConstraintRowLowerLimitSIMD(), and solveSingleIteration().
void btSequentialImpulseConstraintSolver::resolveSingleConstraintRowLowerLimitSIMD | ( | btRigidBody & | body1, |
btRigidBody & | body2, | ||
const btSolverConstraint & | contactConstraint | ||
) | [protected] |
Definition at line 123 of file btSequentialImpulseConstraintSolver.cpp.
References btSimdScalar, btRigidBody::internalGetDeltaAngularVelocity(), btRigidBody::internalGetDeltaLinearVelocity(), btRigidBody::internalGetInvMass(), resolveSingleConstraintRowLowerLimit(), and sum().
Referenced by solveSingleIteration().
void btSequentialImpulseConstraintSolver::resolveSplitPenetrationImpulseCacheFriendly | ( | btRigidBody & | body1, |
btRigidBody & | body2, | ||
const btSolverConstraint & | contactConstraint | ||
) | [protected] |
Definition at line 177 of file btSequentialImpulseConstraintSolver.cpp.
References gNumSplitImpulseRecoveries, btRigidBody::internalApplyPushImpulse(), btRigidBody::internalGetInvMass(), btRigidBody::internalGetPushVelocity(), btRigidBody::internalGetTurnVelocity(), and sum().
Referenced by resolveSplitPenetrationSIMD(), and solveGroupCacheFriendlySplitImpulseIterations().
void btSequentialImpulseConstraintSolver::resolveSplitPenetrationSIMD | ( | btRigidBody & | body1, |
btRigidBody & | body2, | ||
const btSolverConstraint & | contactConstraint | ||
) | [protected] |
Definition at line 206 of file btSequentialImpulseConstraintSolver.cpp.
References btSimdScalar, gNumSplitImpulseRecoveries, btRigidBody::internalGetInvMass(), btRigidBody::internalGetPushVelocity(), btRigidBody::internalGetTurnVelocity(), resolveSplitPenetrationImpulseCacheFriendly(), and sum().
Referenced by solveGroupCacheFriendlySplitImpulseIterations().
btScalar btSequentialImpulseConstraintSolver::restitutionCurve | ( | btScalar | rel_vel, |
btScalar | restitution | ||
) | [protected] |
Definition at line 308 of file btSequentialImpulseConstraintSolver.cpp.
Referenced by setupContactConstraint().
void btSequentialImpulseConstraintSolver::setFrictionConstraintImpulse | ( | btSolverConstraint & | solverConstraint, |
btRigidBody * | rb0, | ||
btRigidBody * | rb1, | ||
btManifoldPoint & | cp, | ||
const btContactSolverInfo & | infoGlobal | ||
) | [protected] |
Definition at line 596 of file btSequentialImpulseConstraintSolver.cpp.
References btRigidBody::getInvMass(), btRigidBody::getLinearFactor(), btRigidBody::internalApplyImpulse(), btManifoldPoint::m_appliedImpulseLateral1, btManifoldPoint::m_appliedImpulseLateral2, btContactSolverInfoData::m_solverMode, m_tmpSolverContactFrictionConstraintPool, btContactSolverInfoData::m_warmstartingFactor, SOLVER_USE_2_FRICTION_DIRECTIONS, SOLVER_USE_FRICTION_WARMSTARTING, and SOLVER_USE_WARMSTARTING.
Referenced by convertContact().
void btSequentialImpulseConstraintSolver::setRandSeed | ( | unsigned long | seed | ) | [inline] |
Definition at line 111 of file btSequentialImpulseConstraintSolver.h.
References m_btSeed2.
void btSequentialImpulseConstraintSolver::setupContactConstraint | ( | btSolverConstraint & | solverConstraint, |
btCollisionObject * | colObj0, | ||
btCollisionObject * | colObj1, | ||
btManifoldPoint & | cp, | ||
const btContactSolverInfo & | infoGlobal, | ||
btVector3 & | vel, | ||
btScalar & | rel_vel, | ||
btScalar & | relaxation, | ||
btVector3 & | rel_pos1, | ||
btVector3 & | rel_pos2 | ||
) | [protected] |
warm starting (or zero if disabled)
Definition at line 455 of file btSequentialImpulseConstraintSolver.cpp.
References btRigidBody::computeImpulseDenominator(), cross(), btRigidBody::getAngularFactor(), btRigidBody::getAngularVelocity(), btManifoldPoint::getDistance(), btRigidBody::getInvInertiaTensorWorld(), btRigidBody::getInvMass(), btRigidBody::getLinearFactor(), btRigidBody::getLinearVelocity(), btManifoldPoint::getPositionWorldOnA(), btManifoldPoint::getPositionWorldOnB(), btRigidBody::getVelocityInLocalPoint(), btRigidBody::internalApplyImpulse(), btManifoldPoint::m_appliedImpulse, btManifoldPoint::m_combinedFriction, btManifoldPoint::m_combinedRestitution, btContactSolverInfoData::m_erp, btManifoldPoint::m_lifeTime, btContactSolverInfoData::m_linearSlop, btManifoldPoint::m_normalWorldOnB, btContactSolverInfoData::m_restingContactRestitutionThreshold, btContactSolverInfoData::m_solverMode, btContactSolverInfoData::m_splitImpulse, btContactSolverInfoData::m_splitImpulsePenetrationThreshold, btContactSolverInfoData::m_timeStep, btContactSolverInfoData::m_warmstartingFactor, restitutionCurve(), and SOLVER_USE_WARMSTARTING.
Referenced by convertContact().
void btSequentialImpulseConstraintSolver::setupFrictionConstraint | ( | btSolverConstraint & | solverConstraint, |
const btVector3 & | normalAxis, | ||
btRigidBody * | solverBodyA, | ||
btRigidBody * | solverBodyIdB, | ||
btManifoldPoint & | cp, | ||
const btVector3 & | rel_pos1, | ||
const btVector3 & | rel_pos2, | ||
btCollisionObject * | colObj0, | ||
btCollisionObject * | colObj1, | ||
btScalar | relaxation, | ||
btScalar | desiredVelocity = 0. , |
||
btScalar | cfmSlip = 0. |
||
) | [protected] |
Definition at line 332 of file btSequentialImpulseConstraintSolver.cpp.
References btSimdScalar, cross(), btRigidBody::getAngularFactor(), btRigidBody::getAngularVelocity(), getFixedBody(), btRigidBody::getInvInertiaDiagLocal(), btRigidBody::getInvInertiaTensorWorld(), btRigidBody::getInvMass(), btRigidBody::getLinearVelocity(), and btManifoldPoint::m_combinedFriction.
Referenced by addFrictionConstraint().
btScalar btSequentialImpulseConstraintSolver::solveGroup | ( | btCollisionObject ** | bodies, |
int | numBodies, | ||
btPersistentManifold ** | manifold, | ||
int | numManifolds, | ||
btTypedConstraint ** | constraints, | ||
int | numConstraints, | ||
const btContactSolverInfo & | info, | ||
btIDebugDraw * | debugDrawer, | ||
btStackAlloc * | stackAlloc, | ||
btDispatcher * | dispatcher | ||
) | [virtual] |
btSequentialImpulseConstraintSolver Sequentially applies impulses
Implements btConstraintSolver.
Definition at line 1189 of file btSequentialImpulseConstraintSolver.cpp.
References BT_PROFILE, btAssert, solveGroupCacheFriendlyFinish(), solveGroupCacheFriendlyIterations(), and solveGroupCacheFriendlySetup().
btScalar btSequentialImpulseConstraintSolver::solveGroupCacheFriendlyFinish | ( | btCollisionObject ** | bodies, |
int | numBodies, | ||
btPersistentManifold ** | manifoldPtr, | ||
int | numManifolds, | ||
btTypedConstraint ** | constraints, | ||
int | numConstraints, | ||
const btContactSolverInfo & | infoGlobal, | ||
btIDebugDraw * | debugDrawer, | ||
btStackAlloc * | stackAlloc | ||
) | [protected, virtual] |
Definition at line 1128 of file btSequentialImpulseConstraintSolver.cpp.
References btAssert, i, btTypedConstraint::internalGetAppliedImpulse(), btTypedConstraint::internalSetAppliedImpulse(), btRigidBody::internalWritebackVelocity(), btManifoldPoint::m_appliedImpulse, btManifoldPoint::m_appliedImpulseLateral1, btManifoldPoint::m_appliedImpulseLateral2, btContactSolverInfoData::m_solverMode, btContactSolverInfoData::m_splitImpulse, btContactSolverInfoData::m_timeStep, m_tmpSolverContactConstraintPool, m_tmpSolverContactFrictionConstraintPool, m_tmpSolverNonContactConstraintPool, btAlignedObjectArray< T >::resize(), btAlignedObjectArray< T >::size(), SOLVER_USE_FRICTION_WARMSTARTING, and sum().
Referenced by solveGroup().
btScalar btSequentialImpulseConstraintSolver::solveGroupCacheFriendlyIterations | ( | btCollisionObject ** | bodies, |
int | numBodies, | ||
btPersistentManifold ** | manifoldPtr, | ||
int | numManifolds, | ||
btTypedConstraint ** | constraints, | ||
int | numConstraints, | ||
const btContactSolverInfo & | infoGlobal, | ||
btIDebugDraw * | debugDrawer, | ||
btStackAlloc * | stackAlloc | ||
) | [protected, virtual] |
Definition at line 1110 of file btSequentialImpulseConstraintSolver.cpp.
References BT_PROFILE, btContactSolverInfoData::m_numIterations, solveGroupCacheFriendlySplitImpulseIterations(), and solveSingleIteration().
Referenced by solveGroup().
btScalar btSequentialImpulseConstraintSolver::solveGroupCacheFriendlySetup | ( | btCollisionObject ** | bodies, |
int | numBodies, | ||
btPersistentManifold ** | manifoldPtr, | ||
int | numManifolds, | ||
btTypedConstraint ** | constraints, | ||
int | numConstraints, | ||
const btContactSolverInfo & | infoGlobal, | ||
btIDebugDraw * | debugDrawer, | ||
btStackAlloc * | stackAlloc | ||
) | [protected, virtual] |
setup the btSolverConstraints
the size of btSolverConstraint needs be a multiple of btScalar
finalize the constraint setup
fix rhs todo: add force/torque accelerators
Definition at line 744 of file btSequentialImpulseConstraintSolver.cpp.
References BT_PROFILE, btAssert, btTypedConstraint::buildJacobian(), btTypedConstraint::btConstraintInfo2::cfm, convertContact(), btTypedConstraint::btConstraintInfo2::erp, FLT_MAX, btTypedConstraint::btConstraintInfo2::fps, btRigidBody::getAngularFactor(), btRigidBody::getAngularVelocity(), btTypedConstraint::getInfo1(), btTypedConstraint::getInfo2(), btRigidBody::getInvInertiaTensorWorld(), btRigidBody::getInvMass(), btRigidBody::getLinearVelocity(), btTypedConstraint::getRigidBodyA(), btTypedConstraint::getRigidBodyB(), i, btRigidBody::internalGetDeltaAngularVelocity(), btRigidBody::internalGetDeltaLinearVelocity(), btRigidBody::internalGetPushVelocity(), btRigidBody::internalGetTurnVelocity(), btTypedConstraint::btConstraintInfo2::m_constraintError, btContactSolverInfoData::m_damping, btTypedConstraint::btConstraintInfo2::m_damping, btContactSolverInfoData::m_erp, btContactSolverInfoData::m_globalCfm, btTypedConstraint::btConstraintInfo2::m_J1angularAxis, btTypedConstraint::btConstraintInfo2::m_J1linearAxis, btTypedConstraint::btConstraintInfo2::m_J2angularAxis, btTypedConstraint::btConstraintInfo2::m_J2linearAxis, btTypedConstraint::btConstraintInfo2::m_lowerLimit, btTypedConstraint::btConstraintInfo1::m_numConstraintRows, btTypedConstraint::btConstraintInfo2::m_numIterations, btContactSolverInfoData::m_numIterations, m_orderFrictionConstraintPool, m_orderTmpConstraintPool, btContactSolverInfoData::m_splitImpulse, btContactSolverInfoData::m_timeStep, m_tmpConstraintSizesPool, m_tmpSolverContactConstraintPool, m_tmpSolverContactFrictionConstraintPool, m_tmpSolverNonContactConstraintPool, btTypedConstraint::btConstraintInfo2::m_upperLimit, btAlignedObjectArray< T >::resize(), btTypedConstraint::btConstraintInfo2::rowskip, btAlignedObjectArray< T >::size(), and sum().
Referenced by solveGroup().
void btSequentialImpulseConstraintSolver::solveGroupCacheFriendlySplitImpulseIterations | ( | btCollisionObject ** | bodies, |
int | numBodies, | ||
btPersistentManifold ** | manifoldPtr, | ||
int | numManifolds, | ||
btTypedConstraint ** | constraints, | ||
int | numConstraints, | ||
const btContactSolverInfo & | infoGlobal, | ||
btIDebugDraw * | debugDrawer, | ||
btStackAlloc * | stackAlloc | ||
) | [protected, virtual] |
Definition at line 1070 of file btSequentialImpulseConstraintSolver.cpp.
References btContactSolverInfoData::m_numIterations, m_orderTmpConstraintPool, btContactSolverInfoData::m_solverMode, btContactSolverInfoData::m_splitImpulse, m_tmpSolverContactConstraintPool, resolveSplitPenetrationImpulseCacheFriendly(), resolveSplitPenetrationSIMD(), btAlignedObjectArray< T >::size(), and SOLVER_SIMD.
Referenced by solveGroupCacheFriendlyIterations().
btScalar btSequentialImpulseConstraintSolver::solveSingleIteration | ( | int | iteration, |
btCollisionObject ** | bodies, | ||
int | numBodies, | ||
btPersistentManifold ** | manifoldPtr, | ||
int | numManifolds, | ||
btTypedConstraint ** | constraints, | ||
int | numConstraints, | ||
const btContactSolverInfo & | infoGlobal, | ||
btIDebugDraw * | debugDrawer, | ||
btStackAlloc * | stackAlloc | ||
) | [protected] |
solve all joint constraints, using SIMD, if available
solve all contact constraints using SIMD, if available
solve all friction constraints, using SIMD, if available
solve all joint constraints
solve all contact constraints
solve all friction constraints
Definition at line 965 of file btSequentialImpulseConstraintSolver.cpp.
References btRandInt2(), m_orderFrictionConstraintPool, m_orderTmpConstraintPool, btContactSolverInfoData::m_solverMode, btContactSolverInfoData::m_timeStep, m_tmpSolverContactConstraintPool, m_tmpSolverContactFrictionConstraintPool, m_tmpSolverNonContactConstraintPool, resolveSingleConstraintRowGeneric(), resolveSingleConstraintRowGenericSIMD(), resolveSingleConstraintRowLowerLimit(), resolveSingleConstraintRowLowerLimitSIMD(), btAlignedObjectArray< T >::size(), btTypedConstraint::solveConstraintObsolete(), SOLVER_RANDMIZE_ORDER, and SOLVER_SIMD.
Referenced by solveGroupCacheFriendlyIterations().
unsigned long btSequentialImpulseConstraintSolver::m_btSeed2 [protected] |
m_btSeed2 is used for re-arranging the constraint rows. improves convergence/quality of friction
Definition at line 54 of file btSequentialImpulseConstraintSolver.h.
Referenced by btRand2(), getRandSeed(), reset(), and setRandSeed().
btAlignedObjectArray<int> btSequentialImpulseConstraintSolver::m_orderFrictionConstraintPool [protected] |
Definition at line 36 of file btSequentialImpulseConstraintSolver.h.
Referenced by solveGroupCacheFriendlySetup(), and solveSingleIteration().
Definition at line 35 of file btSequentialImpulseConstraintSolver.h.
Referenced by solveGroupCacheFriendlySetup(), solveGroupCacheFriendlySplitImpulseIterations(), and solveSingleIteration().
btAlignedObjectArray<btTypedConstraint::btConstraintInfo1> btSequentialImpulseConstraintSolver::m_tmpConstraintSizesPool [protected] |
Definition at line 37 of file btSequentialImpulseConstraintSolver.h.
Referenced by solveGroupCacheFriendlySetup().
Definition at line 32 of file btSequentialImpulseConstraintSolver.h.
Referenced by convertContact(), solveGroupCacheFriendlyFinish(), solveGroupCacheFriendlySetup(), solveGroupCacheFriendlySplitImpulseIterations(), and solveSingleIteration().
btConstraintArray btSequentialImpulseConstraintSolver::m_tmpSolverContactFrictionConstraintPool [protected] |
Definition at line 34 of file btSequentialImpulseConstraintSolver.h.
Referenced by addFrictionConstraint(), convertContact(), setFrictionConstraintImpulse(), solveGroupCacheFriendlyFinish(), solveGroupCacheFriendlySetup(), and solveSingleIteration().
btConstraintArray btSequentialImpulseConstraintSolver::m_tmpSolverNonContactConstraintPool [protected] |
Definition at line 33 of file btSequentialImpulseConstraintSolver.h.
Referenced by solveGroupCacheFriendlyFinish(), solveGroupCacheFriendlySetup(), and solveSingleIteration().