Blender  V3.3
Classes | Enumerations | Functions | Variables
btMultiBodyConstraint.h File Reference
#include "LinearMath/btScalar.h"
#include "LinearMath/btAlignedObjectArray.h"
#include "btMultiBody.h"
#include "btMultiBodySolverConstraint.h"

Go to the source code of this file.

Classes

struct  btMultiBodyJacobianData
 

Enumerations

enum  btTypedMultiBodyConstraintType {
  MULTIBODY_CONSTRAINT_LIMIT =3 , MULTIBODY_CONSTRAINT_1DOF_JOINT_MOTOR , MULTIBODY_CONSTRAINT_GEAR , MULTIBODY_CONSTRAINT_POINT_TO_POINT ,
  MULTIBODY_CONSTRAINT_SLIDER , MULTIBODY_CONSTRAINT_SPHERICAL_MOTOR , MULTIBODY_CONSTRAINT_FIXED , MAX_MULTIBODY_CONSTRAINT_TYPE
}
 

Functions

void applyDeltaVee (btMultiBodyJacobianData &data, btScalar *delta_vee, btScalar impulse, int velocityIndex, int ndof)
 
btScalar fillMultiBodyConstraint (btMultiBodySolverConstraint &solverConstraint, btMultiBodyJacobianData &data, btScalar *jacOrgA, btScalar *jacOrgB, const btVector3 &constraintNormalAng, const btVector3 &constraintNormalLin, const btVector3 &posAworld, const btVector3 &posBworld, btScalar posError, const btContactSolverInfo &infoGlobal, btScalar lowerLimit, btScalar upperLimit, bool angConstraint=false, btScalar relaxation=1.f, bool isFriction=false, btScalar desiredVelocity=0, btScalar cfmSlip=0)
 
 BT_DECLARE_ALIGNED_ALLOCATOR ()
 
 btMultiBodyConstraint (btMultiBody *bodyA, btMultiBody *bodyB, int linkA, int linkB, int numRows, bool isUnilateral, int type)
 
virtual ~btMultiBodyConstraint ()
 
void updateJacobianSizes ()
 
void allocateJacobiansMultiDof ()
 
int getConstraintType () const
 
virtual void setFrameInB (const btMatrix3x3 &frameInB)
 
virtual void setPivotInB (const btVector3 &pivotInB)
 
virtual void finalizeMultiDof ()=0
 
virtual int getIslandIdA () const =0
 
virtual int getIslandIdB () const =0
 
virtual void createConstraintRows (btMultiBodyConstraintArray &constraintRows, btMultiBodyJacobianData &data, const btContactSolverInfo &infoGlobal)=0
 
int getNumRows () const
 
btMultiBodygetMultiBodyA ()
 
btMultiBodygetMultiBodyB ()
 
int getLinkA () const
 
int getLinkB () const
 
void internalSetAppliedImpulse (int dof, btScalar appliedImpulse)
 
btScalar getAppliedImpulse (int dof)
 
btScalar getPosition (int row) const
 
void setPosition (int row, btScalar pos)
 
bool isUnilateral () const
 
btScalarjacobianA (int row)
 
btScalarjacobianB (int row)
 
btScalar getMaxAppliedImpulse () const
 
void setMaxAppliedImpulse (btScalar maxImp)
 
virtual void debugDraw (class btIDebugDraw *drawer)=0
 
virtual void setGearRatio (btScalar ratio)
 
virtual void setGearAuxLink (int gearAuxLink)
 
virtual void setRelativePositionTarget (btScalar relPosTarget)
 
virtual void setErp (btScalar erp)
 

Variables

 btMultiBodyConstraint
 
btMultiBodym_bodyB
 
int m_linkA
 
int m_linkB
 
int m_type
 
int m_numRows
 
int m_jacSizeA
 
int m_jacSizeBoth
 
int m_posOffset
 
bool m_isUnilateral
 
int m_numDofsFinalized
 
btScalar m_maxAppliedImpulse
 
btAlignedObjectArray< btScalarm_data
 

Enumeration Type Documentation

◆ btTypedMultiBodyConstraintType

Enumerator
MULTIBODY_CONSTRAINT_LIMIT 
MULTIBODY_CONSTRAINT_1DOF_JOINT_MOTOR 
MULTIBODY_CONSTRAINT_GEAR 
MULTIBODY_CONSTRAINT_POINT_TO_POINT 
MULTIBODY_CONSTRAINT_SLIDER 
MULTIBODY_CONSTRAINT_SPHERICAL_MOTOR 
MULTIBODY_CONSTRAINT_FIXED 
MAX_MULTIBODY_CONSTRAINT_TYPE 

Definition at line 25 of file btMultiBodyConstraint.h.

Function Documentation

◆ allocateJacobiansMultiDof()

void btMultiBodyConstraint::allocateJacobiansMultiDof ( )

◆ applyDeltaVee()

void btMultiBodyConstraint::applyDeltaVee ( btMultiBodyJacobianData data,
btScalar delta_vee,
btScalar  impulse,
int  velocityIndex,
int  ndof 
)

◆ BT_DECLARE_ALIGNED_ALLOCATOR()

BT_DECLARE_ALIGNED_ALLOCATOR ( )

◆ btMultiBodyConstraint()

btMultiBodyConstraint ( btMultiBody bodyA,
btMultiBody bodyB,
int  linkA,
int  linkB,
int  numRows,
bool  isUnilateral,
int  type 
)

◆ createConstraintRows()

virtual void createConstraintRows ( btMultiBodyConstraintArray constraintRows,
btMultiBodyJacobianData data,
const btContactSolverInfo infoGlobal 
)
pure virtual

◆ debugDraw()

virtual void debugDraw ( class btIDebugDraw drawer)
pure virtual

◆ fillMultiBodyConstraint()

btScalar btMultiBodyConstraint::fillMultiBodyConstraint ( btMultiBodySolverConstraint solverConstraint,
btMultiBodyJacobianData data,
btScalar jacOrgA,
btScalar jacOrgB,
const btVector3 constraintNormalAng,
const btVector3 constraintNormalLin,
const btVector3 posAworld,
const btVector3 posBworld,
btScalar  posError,
const btContactSolverInfo infoGlobal,
btScalar  lowerLimit,
btScalar  upperLimit,
bool  angConstraint = false,
btScalar  relaxation = 1.f,
bool  isFriction = false,
btScalar  desiredVelocity = 0,
btScalar  cfmSlip = 0 
)

◆ finalizeMultiDof()

virtual void finalizeMultiDof ( )
pure virtual

◆ getAppliedImpulse()

btScalar getAppliedImpulse ( int  dof)

Definition at line 154 of file btMultiBodyConstraint.h.

References btAssert, getNumRows(), and m_data.

◆ getConstraintType()

int getConstraintType ( ) const

Definition at line 108 of file btMultiBodyConstraint.h.

References m_type.

◆ getIslandIdA()

virtual int getIslandIdA ( ) const
pure virtual

◆ getIslandIdB()

virtual int getIslandIdB ( ) const
pure virtual

◆ getLinkA()

int getLinkA ( ) const

Definition at line 139 of file btMultiBodyConstraint.h.

References m_linkA.

◆ getLinkB()

int getLinkB ( ) const

Definition at line 143 of file btMultiBodyConstraint.h.

References m_linkB.

◆ getMaxAppliedImpulse()

btScalar getMaxAppliedImpulse ( ) const

Definition at line 198 of file btMultiBodyConstraint.h.

References m_maxAppliedImpulse.

◆ getMultiBodyA()

btMultiBody* getMultiBodyA ( )

Definition at line 130 of file btMultiBodyConstraint.h.

◆ getMultiBodyB()

btMultiBody* getMultiBodyB ( )

Definition at line 134 of file btMultiBodyConstraint.h.

References m_bodyB.

◆ getNumRows()

int getNumRows ( ) const

◆ getPosition()

btScalar getPosition ( int  row) const

Definition at line 163 of file btMultiBodyConstraint.h.

References m_data, and m_posOffset.

Referenced by btMultiBodyJointLimitConstraint::createConstraintRows().

◆ internalSetAppliedImpulse()

void internalSetAppliedImpulse ( int  dof,
btScalar  appliedImpulse 
)

Definition at line 147 of file btMultiBodyConstraint.h.

References btAssert, getNumRows(), and m_data.

◆ isUnilateral()

bool isUnilateral ( ) const

Definition at line 173 of file btMultiBodyConstraint.h.

References m_isUnilateral.

◆ jacobianA()

const btScalar * jacobianA ( int  row)

◆ jacobianB()

const btScalar * jacobianB ( int  row)

◆ setErp()

virtual void setErp ( btScalar  erp)
virtual

Definition at line 212 of file btMultiBodyConstraint.h.

◆ setFrameInB()

virtual void setFrameInB ( const btMatrix3x3 frameInB)
virtual

Definition at line 113 of file btMultiBodyConstraint.h.

◆ setGearAuxLink()

virtual void setGearAuxLink ( int  gearAuxLink)
virtual

Definition at line 210 of file btMultiBodyConstraint.h.

◆ setGearRatio()

virtual void setGearRatio ( btScalar  ratio)
virtual

Definition at line 209 of file btMultiBodyConstraint.h.

◆ setMaxAppliedImpulse()

void setMaxAppliedImpulse ( btScalar  maxImp)

Definition at line 202 of file btMultiBodyConstraint.h.

References m_maxAppliedImpulse.

◆ setPivotInB()

virtual void setPivotInB ( const btVector3 pivotInB)
virtual

Definition at line 114 of file btMultiBodyConstraint.h.

◆ setPosition()

void setPosition ( int  row,
btScalar  pos 
)

Definition at line 168 of file btMultiBodyConstraint.h.

References m_data, m_posOffset, and pos.

Referenced by btMultiBodyJointLimitConstraint::createConstraintRows().

◆ setRelativePositionTarget()

virtual void setRelativePositionTarget ( btScalar  relPosTarget)
virtual

Definition at line 211 of file btMultiBodyConstraint.h.

◆ updateJacobianSizes()

void btMultiBodyConstraint::updateJacobianSizes ( )

Definition at line 20 of file btMultiBodyConstraint.cpp.

References m_bodyB, m_jacSizeA, and m_jacSizeBoth.

Referenced by allocateJacobiansMultiDof().

◆ ~btMultiBodyConstraint()

btMultiBodyConstraint::~btMultiBodyConstraint ( )
virtual

Definition at line 43 of file btMultiBodyConstraint.cpp.

Variable Documentation

◆ btMultiBodyConstraint

btMultiBodyConstraint::btMultiBodyConstraint

◆ m_bodyB

btMultiBody* m_bodyB

◆ m_data

Definition at line 80 of file btMultiBodyConstraint.h.

Referenced by btBvhTree::_build_sub_tree(), btQuantizedBvhTree::_build_sub_tree(), allocateJacobiansMultiDof(), applyDeltaVee(), btAlignedObjectArray< T >::at(), btAlignedObjectArray< T >::btAlignedObjectArray(), btClock::btClock(), btMultiBodyFixedConstraint::btMultiBodyFixedConstraint(), btMultiBodyPoint2Point(), btMultiBodySliderConstraint::btMultiBodySliderConstraint(), btAlignedObjectArray< T >::copy(), btAlignedObjectArray< T >::copyFromArray(), btMultiBodyMLCPConstraintSolver::createMLCPFastMultiBody(), btAlignedObjectArray< T >::deallocate(), btAlignedObjectArray< T >::destroy(), btAlignedObjectArray< T >::expand(), btAlignedObjectArray< T >::expandNonInitializing(), btAlignedObjectArray< T >::findBinarySearch(), btAlignedObjectArray< T >::findLinearSearch(), btAlignedObjectArray< T >::findLinearSearch2(), getAppliedImpulse(), getPosition(), btClock::getTimeMicroseconds(), btClock::getTimeMilliseconds(), btClock::getTimeNanoseconds(), btAlignedObjectArray< T >::heapSort(), btAlignedObjectArray< T >::init(), btAlignedObjectArray< T >::initializeFromBuffer(), internalSetAppliedImpulse(), jacobianA(), jacobianB(), btClock::operator=(), btAlignedObjectArray< T >::operator[](), btAlignedObjectArray< T >::pop_back(), btAlignedObjectArray< T >::push_back(), btAlignedObjectArray< T >::quickSortInternal(), btAlignedObjectArray< T >::reserve(), btClock::reset(), btAlignedObjectArray< T >::resize(), resolveConeFrictionConstraintRows(), resolveSingleConstraintRowGeneric(), setPosition(), setupMultiBodyContactConstraint(), setupMultiBodyTorsionalFrictionConstraint(), btMultiBodyMLCPConstraintSolver::solveGroupCacheFriendlyIterations(), btAlignedObjectArray< T >::swap(), writeBackSolverBodyToMultiBody(), and btClock::~btClock().

◆ m_isUnilateral

bool m_isUnilateral

Definition at line 71 of file btMultiBodyConstraint.h.

Referenced by isUnilateral().

◆ m_jacSizeA

int m_jacSizeA

Definition at line 67 of file btMultiBodyConstraint.h.

Referenced by jacobianB(), and updateJacobianSizes().

◆ m_jacSizeBoth

int m_jacSizeBoth

◆ m_linkA

int m_linkA

◆ m_linkB

int m_linkB

◆ m_maxAppliedImpulse

btScalar m_maxAppliedImpulse

◆ m_numDofsFinalized

int m_numDofsFinalized

◆ m_numRows

int m_numRows

◆ m_posOffset

int m_posOffset

Definition at line 69 of file btMultiBodyConstraint.h.

Referenced by allocateJacobiansMultiDof(), getPosition(), and setPosition().

◆ m_type

int m_type