Blender  V3.3
Classes | Macros | Enumerations | Functions | Variables
btHingeConstraint.h File Reference
#include "LinearMath/btVector3.h"
#include "btJacobianEntry.h"
#include "btTypedConstraint.h"

Go to the source code of this file.

Classes

struct  btHingeConstraintDoubleData
 this structure is not used, except for loading pre-2.82 .bullet files More...
 
struct  btHingeConstraintFloatData
 
struct  btHingeConstraintDoubleData2
 do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 More...
 

Macros

#define _BT_USE_CENTER_LIMIT_   1
 
#define btHingeConstraintData   btHingeConstraintFloatData
 
#define btHingeConstraintDataName   "btHingeConstraintFloatData"
 

Enumerations

enum  btHingeFlags { BT_HINGE_FLAGS_CFM_STOP = 1 , BT_HINGE_FLAGS_ERP_STOP = 2 , BT_HINGE_FLAGS_CFM_NORM = 4 , BT_HINGE_FLAGS_ERP_NORM = 8 }
 

Functions

 BT_DECLARE_ALIGNED_ALLOCATOR ()
 
 btHingeConstraint (btRigidBody &rbA, btRigidBody &rbB, const btVector3 &pivotInA, const btVector3 &pivotInB, const btVector3 &axisInA, const btVector3 &axisInB, bool useReferenceFrameA=false)
 
 btHingeConstraint (btRigidBody &rbA, const btVector3 &pivotInA, const btVector3 &axisInA, bool useReferenceFrameA=false)
 
 btHingeConstraint (btRigidBody &rbA, btRigidBody &rbB, const btTransform &rbAFrame, const btTransform &rbBFrame, bool useReferenceFrameA=false)
 
 btHingeConstraint (btRigidBody &rbA, const btTransform &rbAFrame, bool useReferenceFrameA=false)
 
virtual void buildJacobian ()
 obsolete methods More...
 
virtual void getInfo1 (btConstraintInfo1 *info)
 
void getInfo1NonVirtual (btConstraintInfo1 *info)
 
virtual void getInfo2 (btConstraintInfo2 *info)
 
void getInfo2NonVirtual (btConstraintInfo2 *info, const btTransform &transA, const btTransform &transB, const btVector3 &angVelA, const btVector3 &angVelB)
 
void getInfo2Internal (btConstraintInfo2 *info, const btTransform &transA, const btTransform &transB, const btVector3 &angVelA, const btVector3 &angVelB)
 
void getInfo2InternalUsingFrameOffset (btConstraintInfo2 *info, const btTransform &transA, const btTransform &transB, const btVector3 &angVelA, const btVector3 &angVelB)
 
void updateRHS (btScalar timeStep)
 
const btRigidBodygetRigidBodyA () const
 
const btRigidBodygetRigidBodyB () const
 
btTransformgetFrameOffsetA ()
 
btTransformgetFrameOffsetB ()
 
void setFrames (const btTransform &frameA, const btTransform &frameB)
 
void setAngularOnly (bool angularOnly)
 
void enableAngularMotor (bool enableMotor, btScalar targetVelocity, btScalar maxMotorImpulse)
 
void enableMotor (bool enableMotor)
 
void setMaxMotorImpulse (btScalar maxMotorImpulse)
 
void setMotorTargetVelocity (btScalar motorTargetVelocity)
 
void setMotorTarget (const btQuaternion &qAinB, btScalar dt)
 
void setMotorTarget (btScalar targetAngle, btScalar dt)
 
void setLimit (btScalar low, btScalar high, btScalar _softness=0.9f, btScalar _biasFactor=0.3f, btScalar _relaxationFactor=1.0f)
 
btScalar getLimitSoftness () const
 
btScalar getLimitBiasFactor () const
 
btScalar getLimitRelaxationFactor () const
 
void setAxis (btVector3 &axisInA)
 
bool hasLimit () const
 
btScalar getLowerLimit () const
 
btScalar getUpperLimit () const
 
btScalar getHingeAngle ()
 The getHingeAngle gives the hinge angle in range [-PI,PI]. More...
 
btScalar getHingeAngle (const btTransform &transA, const btTransform &transB)
 
void testLimit (const btTransform &transA, const btTransform &transB)
 
const btTransformgetAFrame () const
 
const btTransformgetBFrame () const
 
int getSolveLimit ()
 
btScalar getLimitSign ()
 
bool getAngularOnly ()
 
bool getEnableAngularMotor ()
 
btScalar getMotorTargetVelocity ()
 
btScalar getMaxMotorImpulse ()
 
bool getUseFrameOffset ()
 
void setUseFrameOffset (bool frameOffsetOnOff)
 
bool getUseReferenceFrameA () const
 
void setUseReferenceFrameA (bool useReferenceFrameA)
 
virtual void setParam (int num, btScalar value, int axis=-1)
 
virtual btScalar getParam (int num, int axis=-1) const
 return the local value of parameter More...
 
virtual int getFlags () const
 
virtual int calculateSerializeBufferSize () const
 
virtual const char * serialize (void *dataBuffer, btSerializer *serializer) const
 fills the dataBuffer and returns the struct name (and 0 on failure) More...
 
 btHingeAccumulatedAngleConstraint (btRigidBody &rbA, btRigidBody &rbB, const btVector3 &pivotInA, const btVector3 &pivotInB, const btVector3 &axisInA, const btVector3 &axisInB, bool useReferenceFrameA=false)
 
 btHingeAccumulatedAngleConstraint (btRigidBody &rbA, const btVector3 &pivotInA, const btVector3 &axisInA, bool useReferenceFrameA=false)
 
 btHingeAccumulatedAngleConstraint (btRigidBody &rbA, btRigidBody &rbB, const btTransform &rbAFrame, const btTransform &rbBFrame, bool useReferenceFrameA=false)
 
 btHingeAccumulatedAngleConstraint (btRigidBody &rbA, const btTransform &rbAFrame, bool useReferenceFrameA=false)
 
btScalar getAccumulatedHingeAngle ()
 
void setAccumulatedHingeAngle (btScalar accAngle)
 

Variables

btHingeConstraint __pad0__
 
btJacobianEntry m_jacAng [3]
 
btTransform m_rbAFrame
 
btTransform m_rbBFrame
 
btScalar m_motorTargetVelocity
 
btScalar m_maxMotorImpulse
 
btAngularLimit m_limit
 
btScalar m_kHinge
 
btScalar m_accLimitImpulse
 
btScalar m_hingeAngle
 
btScalar m_referenceSign
 
bool m_angularOnly
 
bool m_enableAngularMotor
 
bool m_useSolveConstraintObsolete
 
bool m_useOffsetForConstraintFrame
 
bool m_useReferenceFrameA
 
btScalar m_accMotorImpulse
 
int m_flags
 
btScalar m_normalCFM
 
btScalar m_normalERP
 
btScalar m_stopCFM
 
btScalar m_stopERP
 
btHingeAccumulatedAngleConstraint __pad1__
 The getAccumulatedHingeAngle returns the accumulated hinge angle, taking rotation across the -PI/PI boundary into account. More...
 

Macro Definition Documentation

◆ _BT_USE_CENTER_LIMIT_

#define _BT_USE_CENTER_LIMIT_   1

Definition at line 21 of file btHingeConstraint.h.

◆ btHingeConstraintData

#define btHingeConstraintData   btHingeConstraintFloatData

Definition at line 33 of file btHingeConstraint.h.

◆ btHingeConstraintDataName

#define btHingeConstraintDataName   "btHingeConstraintFloatData"

Definition at line 34 of file btHingeConstraint.h.

Enumeration Type Documentation

◆ btHingeFlags

Enumerator
BT_HINGE_FLAGS_CFM_STOP 
BT_HINGE_FLAGS_ERP_STOP 
BT_HINGE_FLAGS_CFM_NORM 
BT_HINGE_FLAGS_ERP_NORM 

Definition at line 37 of file btHingeConstraint.h.

Function Documentation

◆ BT_DECLARE_ALIGNED_ALLOCATOR()

BT_DECLARE_ALIGNED_ALLOCATOR ( )

◆ btHingeAccumulatedAngleConstraint() [1/4]

btHingeAccumulatedAngleConstraint ( btRigidBody rbA,
btRigidBody rbB,
const btTransform rbAFrame,
const btTransform rbBFrame,
bool  useReferenceFrameA = false 
)

Definition at line 381 of file btHingeConstraint.h.

References getHingeAngle().

◆ btHingeAccumulatedAngleConstraint() [2/4]

btHingeAccumulatedAngleConstraint ( btRigidBody rbA,
btRigidBody rbB,
const btVector3 pivotInA,
const btVector3 pivotInB,
const btVector3 axisInA,
const btVector3 axisInB,
bool  useReferenceFrameA = false 
)

Definition at line 369 of file btHingeConstraint.h.

References getHingeAngle().

◆ btHingeAccumulatedAngleConstraint() [3/4]

btHingeAccumulatedAngleConstraint ( btRigidBody rbA,
const btTransform rbAFrame,
bool  useReferenceFrameA = false 
)

Definition at line 387 of file btHingeConstraint.h.

References getHingeAngle().

◆ btHingeAccumulatedAngleConstraint() [4/4]

btHingeAccumulatedAngleConstraint ( btRigidBody rbA,
const btVector3 pivotInA,
const btVector3 axisInA,
bool  useReferenceFrameA = false 
)

Definition at line 375 of file btHingeConstraint.h.

References getHingeAngle().

◆ btHingeConstraint() [1/4]

btHingeConstraint::btHingeConstraint ( btRigidBody rbA,
btRigidBody rbB,
const btTransform rbAFrame,
const btTransform rbBFrame,
bool  useReferenceFrameA = false 
)

◆ btHingeConstraint() [2/4]

btHingeConstraint::btHingeConstraint ( btRigidBody rbA,
btRigidBody rbB,
const btVector3 pivotInA,
const btVector3 pivotInB,
const btVector3 axisInA,
const btVector3 axisInB,
bool  useReferenceFrameA = false 
)

◆ btHingeConstraint() [3/4]

btHingeConstraint::btHingeConstraint ( btRigidBody rbA,
const btTransform rbAFrame,
bool  useReferenceFrameA = false 
)

not providing rigidbody B means implicitly using worldspace for body B

Definition at line 173 of file btHingeConstraint.cpp.

References btRigidBody::getCenterOfMassTransform(), m_biasFactor, m_limitSoftness, m_lowerLimit, m_rbA, m_rbAFrame, m_rbBFrame, m_referenceSign, m_relaxationFactor, m_upperLimit, and m_useReferenceFrameA.

◆ btHingeConstraint() [4/4]

btHingeConstraint::btHingeConstraint ( btRigidBody rbA,
const btVector3 pivotInA,
const btVector3 axisInA,
bool  useReferenceFrameA = false 
)

◆ buildJacobian()

virtual void buildJacobian ( )
virtual

obsolete methods

performs Jacobian calculation, and also calculates angle differences and axis

performs Jacobian calculation, and also calculates angle differences and axis

obsolete methods

we need it for both methods

we need it for both methods

Definition at line 322 of file btGeneric6DofSpring2Constraint.h.

◆ calculateSerializeBufferSize()

virtual int calculateSerializeBufferSize ( ) const
virtual

◆ enableAngularMotor()

void enableAngularMotor ( bool  enableMotor,
btScalar  targetVelocity,
btScalar  maxMotorImpulse 
)

◆ enableMotor()

void enableMotor ( bool  enableMotor)

Definition at line 169 of file btHingeConstraint.h.

References m_enableAngularMotor.

Referenced by enableAngularMotor().

◆ getAccumulatedHingeAngle()

btScalar btHingeAccumulatedAngleConstraint::getAccumulatedHingeAngle ( )

Definition at line 315 of file btHingeConstraint.cpp.

References btShortestAngleUpdate(), and getHingeAngle().

◆ getAFrame()

const btTransform& getAFrame ( ) const

Definition at line 273 of file btHingeConstraint.h.

References m_rbAFrame.

◆ getAngularOnly()

bool getAngularOnly ( )
inline

Definition at line 297 of file btHingeConstraint.h.

References m_angularOnly.

◆ getBFrame()

const btTransform& getBFrame ( ) const

Definition at line 274 of file btHingeConstraint.h.

References m_rbBFrame.

◆ getEnableAngularMotor()

bool getEnableAngularMotor ( )
inline

Definition at line 301 of file btHingeConstraint.h.

References m_enableAngularMotor.

Referenced by getInfo2Internal(), and getInfo2InternalUsingFrameOffset().

◆ getFlags()

virtual int getFlags ( ) const
virtual

Definition at line 326 of file btHingeConstraint.h.

References m_flags.

◆ getFrameOffsetA()

btTransform& getFrameOffsetA ( )

Definition at line 142 of file btHingeConstraint.h.

References m_rbAFrame.

◆ getFrameOffsetB()

btTransform& getFrameOffsetB ( )

Definition at line 147 of file btHingeConstraint.h.

References m_rbBFrame.

◆ getHingeAngle() [1/2]

btScalar btHingeConstraint::getHingeAngle ( )

The getHingeAngle gives the hinge angle in range [-PI,PI].

Definition at line 642 of file btHingeConstraint.cpp.

References btRigidBody::getCenterOfMassTransform(), m_rbA, and m_rbB.

Referenced by btHingeAccumulatedAngleConstraint(), getAccumulatedHingeAngle(), setMotorTarget(), and testLimit().

◆ getHingeAngle() [2/2]

btScalar btHingeConstraint::getHingeAngle ( const btTransform transA,
const btTransform transB 
)

Definition at line 647 of file btHingeConstraint.cpp.

References angle(), btAtan2(), btVector3, m_rbAFrame, m_rbBFrame, and m_referenceSign.

◆ getInfo1()

virtual void getInfo1 ( btConstraintInfo1 info)
virtual

◆ getInfo1NonVirtual()

void getInfo1NonVirtual ( btConstraintInfo1 info)

◆ getInfo2()

virtual void getInfo2 ( btConstraintInfo2 info)
virtual

◆ getInfo2Internal()

void btHingeConstraint::getInfo2Internal ( btConstraintInfo2 info,
const btTransform transA,
const btTransform transB,
const btVector3 angVelA,
const btVector3 angVelB 
)

◆ getInfo2InternalUsingFrameOffset()

void btHingeConstraint::getInfo2InternalUsingFrameOffset ( btConstraintInfo2 info,
const btTransform transA,
const btTransform transB,
const btVector3 angVelA,
const btVector3 angVelB 
)

◆ getInfo2NonVirtual()

void btHingeConstraint::getInfo2NonVirtual ( btConstraintInfo2 info,
const btTransform transA,
const btTransform transB,
const btVector3 angVelA,
const btVector3 angVelB 
)

the regular (virtual) implementation getInfo2 already performs 'testLimit' during getInfo1, so we need to do it now

Definition at line 384 of file btHingeConstraint.cpp.

References getInfo2Internal(), and testLimit().

◆ getLimitBiasFactor()

btScalar getLimitBiasFactor ( ) const

Definition at line 197 of file btHingeConstraint.h.

References btAngularLimit::getBiasFactor(), m_biasFactor, and m_limit.

◆ getLimitRelaxationFactor()

btScalar getLimitRelaxationFactor ( ) const

◆ getLimitSign()

btScalar getLimitSign ( )
inline

Definition at line 288 of file btHingeConstraint.h.

References btAngularLimit::getSign(), and m_limit.

◆ getLimitSoftness()

btScalar getLimitSoftness ( ) const

Definition at line 188 of file btHingeConstraint.h.

References btAngularLimit::getSoftness(), m_limit, and m_limitSoftness.

◆ getLowerLimit()

btScalar getLowerLimit ( ) const

◆ getMaxMotorImpulse()

btScalar getMaxMotorImpulse ( )
inline

Definition at line 309 of file btHingeConstraint.h.

References m_maxMotorImpulse.

◆ getMotorTargetVelocity()

btScalar getMotorTargetVelocity ( )
inline

Definition at line 305 of file btHingeConstraint.h.

References m_motorTargetVelocity.

◆ getParam()

virtual btScalar getParam ( int  num,
int  axis = -1 
) const
virtual

return the local value of parameter

◆ getRigidBodyA()

const btRigidBody& getRigidBodyA ( ) const

Definition at line 123 of file btHingeConstraint.h.

References m_rbA.

◆ getRigidBodyB()

const btRigidBody& getRigidBodyB ( ) const

Definition at line 127 of file btHingeConstraint.h.

References m_rbB.

◆ getSolveLimit()

int getSolveLimit ( )
inline

Definition at line 279 of file btHingeConstraint.h.

References btAngularLimit::isLimit(), and m_limit.

Referenced by getInfo2Internal(), and getInfo2InternalUsingFrameOffset().

◆ getUpperLimit()

btScalar getUpperLimit ( ) const

◆ getUseFrameOffset()

bool getUseFrameOffset ( )

Definition at line 314 of file btHingeConstraint.h.

References m_useOffsetForConstraintFrame.

◆ getUseReferenceFrameA()

bool getUseReferenceFrameA ( ) const

Definition at line 317 of file btHingeConstraint.h.

References m_useReferenceFrameA.

◆ hasLimit()

bool hasLimit ( ) const

◆ serialize()

virtual const char* serialize ( void dataBuffer,
btSerializer serializer 
) const
virtual

fills the dataBuffer and returns the struct name (and 0 on failure)

◆ setAccumulatedHingeAngle()

void btHingeAccumulatedAngleConstraint::setAccumulatedHingeAngle ( btScalar  accAngle)

Definition at line 321 of file btHingeConstraint.cpp.

◆ setAngularOnly()

void setAngularOnly ( bool  angularOnly)

Definition at line 154 of file btHingeConstraint.h.

References m_angularOnly.

◆ setAxis()

void setAxis ( btVector3 axisInA)

◆ setFrames()

void setFrames ( const btTransform frameA,
const btTransform frameB 
)

Definition at line 264 of file btSliderConstraint.h.

◆ setLimit()

void setLimit ( btScalar  low,
btScalar  high,
btScalar  _softness = 0.9f,
btScalar  _biasFactor = 0.3f,
btScalar  _relaxationFactor = 1.0f 
)

◆ setMaxMotorImpulse()

void setMaxMotorImpulse ( btScalar  maxMotorImpulse)

Definition at line 170 of file btHingeConstraint.h.

References m_maxMotorImpulse.

◆ setMotorTarget() [1/2]

void btHingeConstraint::setMotorTarget ( btScalar  targetAngle,
btScalar  dt 
)

◆ setMotorTarget() [2/2]

void btHingeConstraint::setMotorTarget ( const btQuaternion qAinB,
btScalar  dt 
)

◆ setMotorTargetVelocity()

void setMotorTargetVelocity ( btScalar  motorTargetVelocity)

Definition at line 171 of file btHingeConstraint.h.

References m_motorTargetVelocity.

◆ setParam()

virtual void setParam ( int  num,
btScalar  value,
int  axis = -1 
)
virtual

override the default global value of a parameter (such as ERP or CFM), optionally provide the axis (0..5). If no axis is provided, it uses the default axis for this constraint.

◆ setUseFrameOffset()

void setUseFrameOffset ( bool  frameOffsetOnOff)

Definition at line 315 of file btHingeConstraint.h.

References m_useOffsetForConstraintFrame.

◆ setUseReferenceFrameA()

void setUseReferenceFrameA ( bool  useReferenceFrameA)

Definition at line 318 of file btHingeConstraint.h.

References m_useReferenceFrameA.

◆ testLimit()

void btHingeConstraint::testLimit ( const btTransform transA,
const btTransform transB 
)

◆ updateRHS()

void updateRHS ( btScalar  timeStep)

Variable Documentation

◆ __pad0__

hinge constraint between two rigidbodies each with a pivotpoint that descibes the axis location in local space axis defines the orientation of the hinge axis

Definition at line 48 of file btHingeConstraint.h.

◆ __pad1__

The getAccumulatedHingeAngle returns the accumulated hinge angle, taking rotation across the -PI/PI boundary into account.

Definition at line 361 of file btHingeConstraint.h.

◆ m_accLimitImpulse

btScalar m_accLimitImpulse

Definition at line 79 of file btHingeConstraint.h.

◆ m_accMotorImpulse

btScalar m_accMotorImpulse

Definition at line 89 of file btHingeConstraint.h.

◆ m_angularOnly

bool m_angularOnly

Definition at line 83 of file btHingeConstraint.h.

Referenced by getAngularOnly(), and setAngularOnly().

◆ m_enableAngularMotor

bool m_enableAngularMotor

Definition at line 84 of file btHingeConstraint.h.

Referenced by enableAngularMotor(), enableMotor(), and getEnableAngularMotor().

◆ m_flags

int m_flags

Definition at line 91 of file btHingeConstraint.h.

Referenced by getFlags().

◆ m_hingeAngle

btScalar m_hingeAngle

◆ m_jacAng

btJacobianEntry m_jacAng[3]

Definition at line 54 of file btHingeConstraint.h.

◆ m_kHinge

btScalar m_kHinge

Definition at line 77 of file btHingeConstraint.h.

◆ m_limit

btAngularLimit m_limit

◆ m_maxMotorImpulse

btScalar m_maxMotorImpulse

Definition at line 60 of file btHingeConstraint.h.

Referenced by enableAngularMotor(), getMaxMotorImpulse(), and setMaxMotorImpulse().

◆ m_motorTargetVelocity

btScalar m_motorTargetVelocity

◆ m_normalCFM

btScalar m_normalCFM

Definition at line 92 of file btHingeConstraint.h.

Referenced by getInfo2Internal(), and getInfo2InternalUsingFrameOffset().

◆ m_normalERP

btScalar m_normalERP

Definition at line 93 of file btHingeConstraint.h.

Referenced by getInfo2Internal(), and getInfo2InternalUsingFrameOffset().

◆ m_rbAFrame

btTransform m_rbAFrame

Definition at line 56 of file btHingeConstraint.h.

Referenced by getAFrame(), getFrameOffsetA(), and setAxis().

◆ m_rbBFrame

btTransform m_rbBFrame

Definition at line 57 of file btHingeConstraint.h.

Referenced by getBFrame(), getFrameOffsetB(), and setAxis().

◆ m_referenceSign

btScalar m_referenceSign

◆ m_stopCFM

btScalar m_stopCFM

Definition at line 94 of file btHingeConstraint.h.

Referenced by getInfo2Internal(), and getInfo2InternalUsingFrameOffset().

◆ m_stopERP

btScalar m_stopERP

Definition at line 95 of file btHingeConstraint.h.

Referenced by getInfo2Internal(), and getInfo2InternalUsingFrameOffset().

◆ m_useOffsetForConstraintFrame

bool m_useOffsetForConstraintFrame

Definition at line 86 of file btHingeConstraint.h.

Referenced by getUseFrameOffset(), and setUseFrameOffset().

◆ m_useReferenceFrameA

bool m_useReferenceFrameA

◆ m_useSolveConstraintObsolete

bool m_useSolveConstraintObsolete

Definition at line 85 of file btHingeConstraint.h.