Bullet Collision Detection & Physics Library
|
The btRigidBody is the main class for rigid body objects. More...
#include <btRigidBody.h>
Classes | |
struct | btRigidBodyConstructionInfo |
The btRigidBodyConstructionInfo structure provides information to create a rigid body. More... | |
Public Member Functions | |
btRigidBody (const btRigidBodyConstructionInfo &constructionInfo) | |
btRigidBody constructor using construction info | |
btRigidBody (btScalar mass, btMotionState *motionState, btCollisionShape *collisionShape, const btVector3 &localInertia=btVector3(0, 0, 0)) | |
btRigidBody constructor for backwards compatibility. | |
virtual | ~btRigidBody () |
void | proceedToTransform (const btTransform &newTrans) |
void | predictIntegratedTransform (btScalar step, btTransform &predictedTransform) |
continuous collision detection needs prediction | |
void | saveKinematicState (btScalar step) |
void | applyGravity () |
void | clearGravity () |
void | setGravity (const btVector3 &acceleration) |
const btVector3 & | getGravity () const |
void | setDamping (btScalar lin_damping, btScalar ang_damping) |
btScalar | getLinearDamping () const |
btScalar | getAngularDamping () const |
btScalar | getLinearSleepingThreshold () const |
btScalar | getAngularSleepingThreshold () const |
void | applyDamping (btScalar timeStep) |
applyDamping damps the velocity, using the given m_linearDamping and m_angularDamping | |
const btCollisionShape * | getCollisionShape () const |
btCollisionShape * | getCollisionShape () |
void | setMassProps (btScalar mass, const btVector3 &inertia) |
const btVector3 & | getLinearFactor () const |
void | setLinearFactor (const btVector3 &linearFactor) |
btScalar | getInvMass () const |
btScalar | getMass () const |
const btMatrix3x3 & | getInvInertiaTensorWorld () const |
void | integrateVelocities (btScalar step) |
void | setCenterOfMassTransform (const btTransform &xform) |
void | applyCentralForce (const btVector3 &force) |
const btVector3 & | getTotalForce () const |
const btVector3 & | getTotalTorque () const |
const btVector3 & | getInvInertiaDiagLocal () const |
void | setInvInertiaDiagLocal (const btVector3 &diagInvInertia) |
void | setSleepingThresholds (btScalar linear, btScalar angular) |
void | applyTorque (const btVector3 &torque) |
void | applyForce (const btVector3 &force, const btVector3 &rel_pos) |
void | applyCentralImpulse (const btVector3 &impulse) |
void | applyTorqueImpulse (const btVector3 &torque) |
void | applyImpulse (const btVector3 &impulse, const btVector3 &rel_pos) |
void | applyPushImpulse (const btVector3 &impulse, const btVector3 &rel_pos) |
btVector3 | getPushVelocity () const |
btVector3 | getTurnVelocity () const |
void | setPushVelocity (const btVector3 &v) |
void | setTurnVelocity (const btVector3 &v) |
void | applyCentralPushImpulse (const btVector3 &impulse) |
void | applyTorqueTurnImpulse (const btVector3 &torque) |
void | clearForces () |
void | updateInertiaTensor () |
const btVector3 & | getCenterOfMassPosition () const |
btQuaternion | getOrientation () const |
const btTransform & | getCenterOfMassTransform () const |
const btVector3 & | getLinearVelocity () const |
const btVector3 & | getAngularVelocity () const |
void | setLinearVelocity (const btVector3 &lin_vel) |
void | setAngularVelocity (const btVector3 &ang_vel) |
btVector3 | getVelocityInLocalPoint (const btVector3 &rel_pos) const |
btVector3 | getPushVelocityInLocalPoint (const btVector3 &rel_pos) const |
void | translate (const btVector3 &v) |
void | getAabb (btVector3 &aabbMin, btVector3 &aabbMax) const |
btScalar | computeImpulseDenominator (const btVector3 &pos, const btVector3 &normal) const |
btScalar | computeAngularImpulseDenominator (const btVector3 &axis) const |
void | updateDeactivation (btScalar timeStep) |
bool | wantsSleeping () |
const btBroadphaseProxy * | getBroadphaseProxy () const |
btBroadphaseProxy * | getBroadphaseProxy () |
void | setNewBroadphaseProxy (btBroadphaseProxy *broadphaseProxy) |
btMotionState * | getMotionState () |
const btMotionState * | getMotionState () const |
void | setMotionState (btMotionState *motionState) |
void | setAngularFactor (const btVector3 &angFac) |
void | setAngularFactor (btScalar angFac) |
const btVector3 & | getAngularFactor () const |
bool | isInWorld () const |
void | addConstraintRef (btTypedConstraint *c) |
void | removeConstraintRef (btTypedConstraint *c) |
btTypedConstraint * | getConstraintRef (int index) |
int | getNumConstraintRefs () const |
void | setFlags (int flags) |
int | getFlags () const |
btVector3 | computeGyroscopicImpulseImplicit_World (btScalar dt) const |
perform implicit force computation in world space | |
btVector3 | computeGyroscopicImpulseImplicit_Body (btScalar step) const |
perform implicit force computation in body space (inertial frame) | |
btVector3 | computeGyroscopicForceExplicit (btScalar maxGyroscopicForce) const |
explicit version is best avoided, it gains energy | |
btVector3 | getLocalInertia () const |
virtual int | calculateSerializeBufferSize () const |
virtual const char * | serialize (void *dataBuffer, class btSerializer *serializer) const |
fills the dataBuffer and returns the struct name (and 0 on failure) | |
virtual void | serializeSingleObject (class btSerializer *serializer) const |
![]() | |
BT_DECLARE_ALIGNED_ALLOCATOR () | |
bool | mergesSimulationIslands () const |
const btVector3 & | getAnisotropicFriction () const |
void | setAnisotropicFriction (const btVector3 &anisotropicFriction, int frictionMode=CF_ANISOTROPIC_FRICTION) |
bool | hasAnisotropicFriction (int frictionMode=CF_ANISOTROPIC_FRICTION) const |
void | setContactProcessingThreshold (btScalar contactProcessingThreshold) |
the constraint solver can discard solving contacts, if the distance is above this threshold. | |
btScalar | getContactProcessingThreshold () const |
bool | isStaticObject () const |
bool | isKinematicObject () const |
bool | isStaticOrKinematicObject () const |
bool | hasContactResponse () const |
btCollisionObject () | |
virtual | ~btCollisionObject () |
virtual void | setCollisionShape (btCollisionShape *collisionShape) |
const btCollisionShape * | getCollisionShape () const |
btCollisionShape * | getCollisionShape () |
void | setIgnoreCollisionCheck (const btCollisionObject *co, bool ignoreCollisionCheck) |
int | getNumObjectsWithoutCollision () const |
const btCollisionObject * | getObjectWithoutCollision (int index) |
virtual bool | checkCollideWithOverride (const btCollisionObject *co) const |
void * | internalGetExtensionPointer () const |
Avoid using this internal API call, the extension pointer is used by some Bullet extensions. | |
void | internalSetExtensionPointer (void *pointer) |
Avoid using this internal API call, the extension pointer is used by some Bullet extensions If you need to store your own user pointer, use 'setUserPointer/getUserPointer' instead. | |
int | getActivationState () const |
void | setActivationState (int newState) const |
void | setDeactivationTime (btScalar time) |
btScalar | getDeactivationTime () const |
void | forceActivationState (int newState) const |
void | activate (bool forceActivation=false) const |
bool | isActive () const |
void | setRestitution (btScalar rest) |
btScalar | getRestitution () const |
void | setFriction (btScalar frict) |
btScalar | getFriction () const |
void | setRollingFriction (btScalar frict) |
btScalar | getRollingFriction () const |
void | setSpinningFriction (btScalar frict) |
btScalar | getSpinningFriction () const |
void | setContactStiffnessAndDamping (btScalar stiffness, btScalar damping) |
btScalar | getContactStiffness () const |
btScalar | getContactDamping () const |
int | getInternalType () const |
reserved for Bullet internal usage | |
btTransform & | getWorldTransform () |
const btTransform & | getWorldTransform () const |
void | setWorldTransform (const btTransform &worldTrans) |
btBroadphaseProxy * | getBroadphaseHandle () |
const btBroadphaseProxy * | getBroadphaseHandle () const |
void | setBroadphaseHandle (btBroadphaseProxy *handle) |
const btTransform & | getInterpolationWorldTransform () const |
btTransform & | getInterpolationWorldTransform () |
void | setInterpolationWorldTransform (const btTransform &trans) |
void | setInterpolationLinearVelocity (const btVector3 &linvel) |
void | setInterpolationAngularVelocity (const btVector3 &angvel) |
const btVector3 & | getInterpolationLinearVelocity () const |
const btVector3 & | getInterpolationAngularVelocity () const |
int | getIslandTag () const |
void | setIslandTag (int tag) |
int | getCompanionId () const |
void | setCompanionId (int id) |
int | getWorldArrayIndex () const |
void | setWorldArrayIndex (int ix) |
btScalar | getHitFraction () const |
void | setHitFraction (btScalar hitFraction) |
int | getCollisionFlags () const |
void | setCollisionFlags (int flags) |
btScalar | getCcdSweptSphereRadius () const |
Swept sphere radius (0.0 by default), see btConvexConvexAlgorithm:: | |
void | setCcdSweptSphereRadius (btScalar radius) |
Swept sphere radius (0.0 by default), see btConvexConvexAlgorithm:: | |
btScalar | getCcdMotionThreshold () const |
btScalar | getCcdSquareMotionThreshold () const |
void | setCcdMotionThreshold (btScalar ccdMotionThreshold) |
Don't do continuous collision detection if the motion (in one step) is less then m_ccdMotionThreshold. | |
void * | getUserPointer () const |
users can point to their objects, userPointer is not used by Bullet | |
int | getUserIndex () const |
int | getUserIndex2 () const |
int | getUserIndex3 () const |
void | setUserPointer (void *userPointer) |
users can point to their objects, userPointer is not used by Bullet | |
void | setUserIndex (int index) |
users can point to their objects, userPointer is not used by Bullet | |
void | setUserIndex2 (int index) |
void | setUserIndex3 (int index) |
int | getUpdateRevisionInternal () const |
void | setCustomDebugColor (const btVector3 &colorRGB) |
void | removeCustomDebugColor () |
bool | getCustomDebugColor (btVector3 &colorRGB) const |
bool | checkCollideWith (const btCollisionObject *co) const |
virtual int | calculateSerializeBufferSize () const |
virtual const char * | serialize (void *dataBuffer, class btSerializer *serializer) const |
fills the dataBuffer and returns the struct name (and 0 on failure) | |
virtual void | serializeSingleObject (class btSerializer *serializer) const |
Static Public Member Functions | |
static const btRigidBody * | upcast (const btCollisionObject *colObj) |
to keep collision detection and dynamics separate we don't store a rigidbody pointer but a rigidbody is derived from btCollisionObject, so we can safely perform an upcast | |
static btRigidBody * | upcast (btCollisionObject *colObj) |
Public Attributes | |
int | m_contactSolverType |
int | m_frictionSolverType |
Protected Member Functions | |
void | setupRigidBody (const btRigidBodyConstructionInfo &constructionInfo) |
setupRigidBody is only used internally by the constructor | |
Protected Attributes | |
btVector3 | m_deltaLinearVelocity |
btVector3 | m_deltaAngularVelocity |
btVector3 | m_angularFactor |
btVector3 | m_invMass |
btVector3 | m_pushVelocity |
btVector3 | m_turnVelocity |
![]() | |
btTransform | m_worldTransform |
btTransform | m_interpolationWorldTransform |
m_interpolationWorldTransform is used for CCD and interpolation it can be either previous or future (predicted) transform | |
btVector3 | m_interpolationLinearVelocity |
btVector3 | m_interpolationAngularVelocity |
btVector3 | m_anisotropicFriction |
int | m_hasAnisotropicFriction |
btScalar | m_contactProcessingThreshold |
btBroadphaseProxy * | m_broadphaseHandle |
btCollisionShape * | m_collisionShape |
void * | m_extensionPointer |
m_extensionPointer is used by some internal low-level Bullet extensions. | |
btCollisionShape * | m_rootCollisionShape |
m_rootCollisionShape is temporarily used to store the original collision shape The m_collisionShape might be temporarily replaced by a child collision shape during collision detection purposes If it is NULL, the m_collisionShape is not temporarily replaced. | |
int | m_collisionFlags |
int | m_islandTag1 |
int | m_companionId |
int | m_worldArrayIndex |
int | m_activationState1 |
btScalar | m_deactivationTime |
btScalar | m_friction |
btScalar | m_restitution |
btScalar | m_rollingFriction |
btScalar | m_spinningFriction |
btScalar | m_contactDamping |
btScalar | m_contactStiffness |
int | m_internalType |
m_internalType is reserved to distinguish Bullet's btCollisionObject, btRigidBody, btSoftBody, btGhostObject etc. | |
void * | m_userObjectPointer |
users can point to their objects, m_userPointer is not used by Bullet, see setUserPointer/getUserPointer | |
int | m_userIndex2 |
int | m_userIndex |
int | m_userIndex3 |
btScalar | m_hitFraction |
time of impact calculation | |
btScalar | m_ccdSweptSphereRadius |
Swept sphere radius (0.0 by default), see btConvexConvexAlgorithm:: | |
btScalar | m_ccdMotionThreshold |
Don't do continuous collision detection if the motion (in one step) is less then m_ccdMotionThreshold. | |
int | m_checkCollideWith |
If some object should have elaborate collision filtering by sub-classes. | |
btAlignedObjectArray< const btCollisionObject * > | m_objectsWithoutCollisionCheck |
int | m_updateRevision |
internal update revision number. It will be increased when the object changes. This allows some subsystems to perform lazy evaluation. | |
btVector3 | m_customDebugColorRGB |
Additional Inherited Members | |
![]() | |
enum | CollisionFlags { CF_DYNAMIC_OBJECT = 0 , CF_STATIC_OBJECT = 1 , CF_KINEMATIC_OBJECT = 2 , CF_NO_CONTACT_RESPONSE = 4 , CF_CUSTOM_MATERIAL_CALLBACK = 8 , CF_CHARACTER_OBJECT = 16 , CF_DISABLE_VISUALIZE_OBJECT = 32 , CF_DISABLE_SPU_COLLISION_PROCESSING = 64 , CF_HAS_CONTACT_STIFFNESS_DAMPING = 128 , CF_HAS_CUSTOM_DEBUG_RENDERING_COLOR = 256 , CF_HAS_FRICTION_ANCHOR = 512 , CF_HAS_COLLISION_SOUND_TRIGGER = 1024 } |
enum | CollisionObjectTypes { CO_COLLISION_OBJECT = 1 , CO_RIGID_BODY = 2 , CO_GHOST_OBJECT = 4 , CO_SOFT_BODY = 8 , CO_HF_FLUID = 16 , CO_USER_TYPE = 32 , CO_FEATHERSTONE_LINK = 64 } |
enum | AnisotropicFrictionFlags { CF_ANISOTROPIC_FRICTION_DISABLED = 0 , CF_ANISOTROPIC_FRICTION = 1 , CF_ANISOTROPIC_ROLLING_FRICTION = 2 } |
The btRigidBody is the main class for rigid body objects.
It is derived from btCollisionObject, so it keeps a pointer to a btCollisionShape. It is recommended for performance and memory use to share btCollisionShape objects whenever possible. There are 3 types of rigid bodies:
Definition at line 59 of file btRigidBody.h.
btRigidBody::btRigidBody | ( | const btRigidBodyConstructionInfo & | constructionInfo | ) |
btRigidBody constructor using construction info
Definition at line 29 of file btRigidBody.cpp.
btRigidBody::btRigidBody | ( | btScalar | mass, |
btMotionState * | motionState, | ||
btCollisionShape * | collisionShape, | ||
const btVector3 & | localInertia = btVector3(0, 0, 0) |
||
) |
btRigidBody constructor for backwards compatibility.
To specify friction (etc) during rigid body construction, please use the other constructor (using btRigidBodyConstructionInfo)
Definition at line 34 of file btRigidBody.cpp.
|
inlinevirtual |
Definition at line 173 of file btRigidBody.h.
void btRigidBody::addConstraintRef | ( | btTypedConstraint * | c | ) |
disable collision with the 'other' body
Definition at line 415 of file btRigidBody.cpp.
|
inline |
Definition at line 274 of file btRigidBody.h.
|
inline |
Definition at line 319 of file btRigidBody.h.
|
inline |
Definition at line 399 of file btRigidBody.h.
void btRigidBody::applyDamping | ( | btScalar | timeStep | ) |
applyDamping damps the velocity, using the given m_linearDamping and m_angularDamping
Definition at line 149 of file btRigidBody.cpp.
Definition at line 313 of file btRigidBody.h.
void btRigidBody::applyGravity | ( | ) |
Definition at line 205 of file btRigidBody.cpp.
Definition at line 335 of file btRigidBody.h.
Definition at line 347 of file btRigidBody.h.
|
inline |
Definition at line 305 of file btRigidBody.h.
|
inline |
Definition at line 327 of file btRigidBody.h.
|
inline |
Definition at line 407 of file btRigidBody.h.
|
virtual |
Reimplemented from btCollisionObject.
Definition at line 458 of file btRigidBody.cpp.
|
inline |
Definition at line 415 of file btRigidBody.h.
void btRigidBody::clearGravity | ( | ) |
Definition at line 213 of file btRigidBody.cpp.
Definition at line 493 of file btRigidBody.h.
explicit version is best avoided, it gains energy
Definition at line 283 of file btRigidBody.cpp.
perform implicit force computation in body space (inertial frame)
Definition at line 297 of file btRigidBody.cpp.
perform implicit force computation in world space
Definition at line 336 of file btRigidBody.cpp.
|
inline |
Definition at line 482 of file btRigidBody.h.
Definition at line 123 of file btRigidBody.cpp.
|
inline |
Definition at line 225 of file btRigidBody.h.
|
inline |
Definition at line 579 of file btRigidBody.h.
|
inline |
Definition at line 235 of file btRigidBody.h.
|
inline |
Definition at line 437 of file btRigidBody.h.
|
inline |
Definition at line 539 of file btRigidBody.h.
|
inline |
Definition at line 535 of file btRigidBody.h.
|
inline |
Definition at line 423 of file btRigidBody.h.
|
inline |
Definition at line 429 of file btRigidBody.h.
|
inline |
Definition at line 247 of file btRigidBody.h.
|
inline |
Definition at line 242 of file btRigidBody.h.
|
inline |
Definition at line 593 of file btRigidBody.h.
|
inline |
Definition at line 608 of file btRigidBody.h.
|
inline |
Definition at line 213 of file btRigidBody.h.
|
inline |
Definition at line 289 of file btRigidBody.h.
|
inline |
Definition at line 265 of file btRigidBody.h.
|
inline |
Definition at line 263 of file btRigidBody.h.
|
inline |
Definition at line 220 of file btRigidBody.h.
|
inline |
Definition at line 254 of file btRigidBody.h.
|
inline |
Definition at line 230 of file btRigidBody.h.
|
inline |
Definition at line 433 of file btRigidBody.h.
btVector3 btRigidBody::getLocalInertia | ( | ) | const |
Definition at line 254 of file btRigidBody.cpp.
|
inline |
Definition at line 264 of file btRigidBody.h.
|
inline |
Definition at line 549 of file btRigidBody.h.
|
inline |
Definition at line 553 of file btRigidBody.h.
|
inline |
Definition at line 598 of file btRigidBody.h.
btQuaternion btRigidBody::getOrientation | ( | ) | const |
Definition at line 392 of file btRigidBody.cpp.
|
inline |
Definition at line 359 of file btRigidBody.h.
Definition at line 469 of file btRigidBody.h.
|
inline |
Definition at line 279 of file btRigidBody.h.
|
inline |
Definition at line 284 of file btRigidBody.h.
|
inline |
Definition at line 364 of file btRigidBody.h.
Definition at line 460 of file btRigidBody.h.
void btRigidBody::integrateVelocities | ( | btScalar | step | ) |
clamp angular velocity. collision calculations will fail on higher angular velocities
Definition at line 372 of file btRigidBody.cpp.
|
inline |
Definition at line 585 of file btRigidBody.h.
void btRigidBody::predictIntegratedTransform | ( | btScalar | step, |
btTransform & | predictedTransform | ||
) |
continuous collision detection needs prediction
Definition at line 100 of file btRigidBody.cpp.
void btRigidBody::proceedToTransform | ( | const btTransform & | newTrans | ) |
Definition at line 221 of file btRigidBody.cpp.
void btRigidBody::removeConstraintRef | ( | btTypedConstraint * | c | ) |
Definition at line 438 of file btRigidBody.cpp.
void btRigidBody::saveKinematicState | ( | btScalar | step | ) |
Definition at line 105 of file btRigidBody.cpp.
|
virtual |
fills the dataBuffer and returns the struct name (and 0 on failure)
Reimplemented from btCollisionObject.
Definition at line 465 of file btRigidBody.cpp.
|
virtual |
Reimplemented from btCollisionObject.
Definition at line 500 of file btRigidBody.cpp.
|
inline |
Definition at line 574 of file btRigidBody.h.
|
inline |
Definition at line 568 of file btRigidBody.h.
|
inline |
Definition at line 451 of file btRigidBody.h.
void btRigidBody::setCenterOfMassTransform | ( | const btTransform & | xform | ) |
Definition at line 399 of file btRigidBody.cpp.
Definition at line 137 of file btRigidBody.cpp.
|
inline |
Definition at line 603 of file btRigidBody.h.
void btRigidBody::setGravity | ( | const btVector3 & | acceleration | ) |
Definition at line 128 of file btRigidBody.cpp.
|
inline |
Definition at line 294 of file btRigidBody.h.
|
inline |
Definition at line 258 of file btRigidBody.h.
|
inline |
Definition at line 442 of file btRigidBody.h.
Definition at line 226 of file btRigidBody.cpp.
|
inline |
Definition at line 557 of file btRigidBody.h.
|
inline |
Definition at line 543 of file btRigidBody.h.
|
inline |
Definition at line 369 of file btRigidBody.h.
Definition at line 299 of file btRigidBody.h.
|
inline |
Definition at line 391 of file btRigidBody.h.
|
protected |
setupRigidBody is only used internally by the constructor
Definition at line 40 of file btRigidBody.cpp.
|
inline |
Definition at line 475 of file btRigidBody.h.
|
inlinestatic |
Definition at line 195 of file btRigidBody.h.
|
inlinestatic |
to keep collision detection and dynamics separate we don't store a rigidbody pointer but a rigidbody is derived from btCollisionObject, so we can safely perform an upcast
Definition at line 189 of file btRigidBody.h.
|
inline |
Definition at line 499 of file btRigidBody.h.
void btRigidBody::updateInertiaTensor | ( | ) |
Definition at line 249 of file btRigidBody.cpp.
|
inline |
Definition at line 516 of file btRigidBody.h.
|
private |
Definition at line 80 of file btRigidBody.h.
|
private |
Definition at line 79 of file btRigidBody.h.
|
private |
Definition at line 76 of file btRigidBody.h.
|
private |
Definition at line 77 of file btRigidBody.h.
|
private |
Definition at line 78 of file btRigidBody.h.
|
private |
Definition at line 74 of file btRigidBody.h.
|
protected |
Definition at line 98 of file btRigidBody.h.
|
private |
Definition at line 83 of file btRigidBody.h.
|
private |
Definition at line 63 of file btRigidBody.h.
|
private |
Definition at line 89 of file btRigidBody.h.
int btRigidBody::m_contactSolverType |
Definition at line 565 of file btRigidBody.h.
|
private |
Definition at line 93 of file btRigidBody.h.
|
protected |
Definition at line 97 of file btRigidBody.h.
|
protected |
Definition at line 96 of file btRigidBody.h.
int btRigidBody::m_frictionSolverType |
Definition at line 566 of file btRigidBody.h.
|
private |
Definition at line 67 of file btRigidBody.h.
|
private |
Definition at line 68 of file btRigidBody.h.
|
private |
Definition at line 64 of file btRigidBody.h.
|
private |
Definition at line 69 of file btRigidBody.h.
|
private |
Definition at line 61 of file btRigidBody.h.
|
protected |
Definition at line 99 of file btRigidBody.h.
|
private |
Definition at line 73 of file btRigidBody.h.
|
private |
Definition at line 65 of file btRigidBody.h.
|
private |
Definition at line 82 of file btRigidBody.h.
|
private |
Definition at line 62 of file btRigidBody.h.
|
private |
Definition at line 86 of file btRigidBody.h.
|
protected |
Definition at line 100 of file btRigidBody.h.
|
private |
Definition at line 91 of file btRigidBody.h.
|
private |
Definition at line 70 of file btRigidBody.h.
|
private |
Definition at line 71 of file btRigidBody.h.
|
protected |
Definition at line 101 of file btRigidBody.h.