Bullet Collision Detection & Physics Library
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
btMultiBodyDynamicsWorld Class Reference

The btMultiBodyDynamicsWorld adds Featherstone multi body dynamics to Bullet This implementation is still preliminary/experimental. More...

#include <btMultiBodyDynamicsWorld.h>

Inheritance diagram for btMultiBodyDynamicsWorld:
Inheritance graph
[legend]
Collaboration diagram for btMultiBodyDynamicsWorld:
Collaboration graph
[legend]

Public Member Functions

 btMultiBodyDynamicsWorld (btDispatcher *dispatcher, btBroadphaseInterface *pairCache, btMultiBodyConstraintSolver *constraintSolver, btCollisionConfiguration *collisionConfiguration)
 
virtual ~btMultiBodyDynamicsWorld ()
 
virtual void addMultiBody (btMultiBody *body, int group=btBroadphaseProxy::DefaultFilter, int mask=btBroadphaseProxy::AllFilter)
 
virtual void removeMultiBody (btMultiBody *body)
 
virtual int getNumMultibodies () const
 
btMultiBodygetMultiBody (int mbIndex)
 
const btMultiBodygetMultiBody (int mbIndex) const
 
virtual void addMultiBodyConstraint (btMultiBodyConstraint *constraint)
 
virtual int getNumMultiBodyConstraints () const
 
virtual btMultiBodyConstraintgetMultiBodyConstraint (int constraintIndex)
 
virtual const btMultiBodyConstraintgetMultiBodyConstraint (int constraintIndex) const
 
virtual void removeMultiBodyConstraint (btMultiBodyConstraint *constraint)
 
virtual void integrateTransforms (btScalar timeStep)
 
virtual void debugDrawWorld ()
 
virtual void debugDrawMultiBodyConstraint (btMultiBodyConstraint *constraint)
 
void forwardKinematics ()
 
virtual void clearForces ()
 the forces on each rigidbody is accumulating together with gravity. clear this after each timestep. More...
 
virtual void clearMultiBodyConstraintForces ()
 
virtual void clearMultiBodyForces ()
 
virtual void applyGravity ()
 apply gravity, call this once per timestep More...
 
virtual void serialize (btSerializer *serializer)
 Preliminary serialization test for Bullet 2.76. Loading those files requires a separate parser (see Bullet/Demos/SerializeDemo) More...
 
virtual void setMultiBodyConstraintSolver (btMultiBodyConstraintSolver *solver)
 
virtual void setConstraintSolver (btConstraintSolver *solver)
 
- Public Member Functions inherited from btDiscreteDynamicsWorld
 BT_DECLARE_ALIGNED_ALLOCATOR ()
 
 btDiscreteDynamicsWorld (btDispatcher *dispatcher, btBroadphaseInterface *pairCache, btConstraintSolver *constraintSolver, btCollisionConfiguration *collisionConfiguration)
 this btDiscreteDynamicsWorld constructor gets created objects from the user, and will not delete those More...
 
virtual ~btDiscreteDynamicsWorld ()
 
virtual int stepSimulation (btScalar timeStep, int maxSubSteps=1, btScalar fixedTimeStep=btScalar(1.)/btScalar(60.))
 if maxSubSteps > 0, it will interpolate motion between fixedTimeStep's More...
 
virtual void synchronizeMotionStates ()
 
void synchronizeSingleMotionState (btRigidBody *body)
 this can be useful to synchronize a single rigid body -> graphics object More...
 
virtual void addConstraint (btTypedConstraint *constraint, bool disableCollisionsBetweenLinkedBodies=false)
 
virtual void removeConstraint (btTypedConstraint *constraint)
 
virtual void addAction (btActionInterface *)
 
virtual void removeAction (btActionInterface *)
 
btSimulationIslandManagergetSimulationIslandManager ()
 
const btSimulationIslandManagergetSimulationIslandManager () const
 
btCollisionWorldgetCollisionWorld ()
 
virtual void setGravity (const btVector3 &gravity)
 
virtual btVector3 getGravity () const
 
virtual void addCollisionObject (btCollisionObject *collisionObject, int collisionFilterGroup=btBroadphaseProxy::StaticFilter, int collisionFilterMask=btBroadphaseProxy::AllFilter^btBroadphaseProxy::StaticFilter)
 
virtual void addRigidBody (btRigidBody *body)
 
virtual void addRigidBody (btRigidBody *body, int group, int mask)
 
virtual void removeRigidBody (btRigidBody *body)
 
virtual void removeCollisionObject (btCollisionObject *collisionObject)
 removeCollisionObject will first check if it is a rigid body, if so call removeRigidBody otherwise call btCollisionWorld::removeCollisionObject More...
 
virtual void debugDrawConstraint (btTypedConstraint *constraint)
 
virtual btConstraintSolvergetConstraintSolver ()
 
virtual int getNumConstraints () const
 
virtual btTypedConstraintgetConstraint (int index)
 
virtual const btTypedConstraintgetConstraint (int index) const
 
virtual btDynamicsWorldType getWorldType () const
 
virtual void setNumTasks (int numTasks)
 
virtual void updateVehicles (btScalar timeStep)
 obsolete, use updateActions instead More...
 
virtual void addVehicle (btActionInterface *vehicle)
 obsolete, use addAction instead More...
 
virtual void removeVehicle (btActionInterface *vehicle)
 obsolete, use removeAction instead More...
 
virtual void addCharacter (btActionInterface *character)
 obsolete, use addAction instead More...
 
virtual void removeCharacter (btActionInterface *character)
 obsolete, use removeAction instead More...
 
void setSynchronizeAllMotionStates (bool synchronizeAll)
 
bool getSynchronizeAllMotionStates () const
 
void setApplySpeculativeContactRestitution (bool enable)
 
bool getApplySpeculativeContactRestitution () const
 
void setLatencyMotionStateInterpolation (bool latencyInterpolation)
 Interpolate motion state between previous and current transform, instead of current and next transform. More...
 
bool getLatencyMotionStateInterpolation () const
 
- Public Member Functions inherited from btDynamicsWorld
 btDynamicsWorld (btDispatcher *dispatcher, btBroadphaseInterface *broadphase, btCollisionConfiguration *collisionConfiguration)
 
virtual ~btDynamicsWorld ()
 
void setInternalTickCallback (btInternalTickCallback cb, void *worldUserInfo=0, bool isPreTick=false)
 Set the callback for when an internal tick (simulation substep) happens, optional user info. More...
 
void setWorldUserInfo (void *worldUserInfo)
 
void * getWorldUserInfo () const
 
btContactSolverInfogetSolverInfo ()
 
const btContactSolverInfogetSolverInfo () const
 
- Public Member Functions inherited from btCollisionWorld
 btCollisionWorld (btDispatcher *dispatcher, btBroadphaseInterface *broadphasePairCache, btCollisionConfiguration *collisionConfiguration)
 for debug drawing More...
 
virtual ~btCollisionWorld ()
 
void setBroadphase (btBroadphaseInterface *pairCache)
 
const btBroadphaseInterfacegetBroadphase () const
 
btBroadphaseInterfacegetBroadphase ()
 
btOverlappingPairCachegetPairCache ()
 
btDispatchergetDispatcher ()
 
const btDispatchergetDispatcher () const
 
void updateSingleAabb (btCollisionObject *colObj)
 
virtual void updateAabbs ()
 
virtual void computeOverlappingPairs ()
 the computeOverlappingPairs is usually already called by performDiscreteCollisionDetection (or stepSimulation) it can be useful to use if you perform ray tests without collision detection/simulation More...
 
virtual void setDebugDrawer (btIDebugDraw *debugDrawer)
 
virtual btIDebugDrawgetDebugDrawer ()
 
virtual void debugDrawObject (const btTransform &worldTransform, const btCollisionShape *shape, const btVector3 &color)
 
int getNumCollisionObjects () const
 
virtual void rayTest (const btVector3 &rayFromWorld, const btVector3 &rayToWorld, RayResultCallback &resultCallback) const
 rayTest performs a raycast on all objects in the btCollisionWorld, and calls the resultCallback This allows for several queries: first hit, all hits, any hit, dependent on the value returned by the callback. More...
 
void convexSweepTest (const btConvexShape *castShape, const btTransform &from, const btTransform &to, ConvexResultCallback &resultCallback, btScalar allowedCcdPenetration=btScalar(0.)) const
 convexTest performs a swept convex cast on all objects in the btCollisionWorld, and calls the resultCallback This allows for several queries: first hit, all hits, any hit, dependent on the value return by the callback. More...
 
void contactTest (btCollisionObject *colObj, ContactResultCallback &resultCallback)
 contactTest performs a discrete collision test between colObj against all objects in the btCollisionWorld, and calls the resultCallback. More...
 
void contactPairTest (btCollisionObject *colObjA, btCollisionObject *colObjB, ContactResultCallback &resultCallback)
 contactTest performs a discrete collision test between two collision objects and calls the resultCallback if overlap if detected. More...
 
virtual void refreshBroadphaseProxy (btCollisionObject *collisionObject)
 
btCollisionObjectArraygetCollisionObjectArray ()
 
const btCollisionObjectArraygetCollisionObjectArray () const
 
virtual void performDiscreteCollisionDetection ()
 
btDispatcherInfogetDispatchInfo ()
 
const btDispatcherInfogetDispatchInfo () const
 
bool getForceUpdateAllAabbs () const
 
void setForceUpdateAllAabbs (bool forceUpdateAllAabbs)
 

Protected Member Functions

virtual void calculateSimulationIslands ()
 
virtual void updateActivationState (btScalar timeStep)
 
virtual void solveConstraints (btContactSolverInfo &solverInfo)
 
virtual void serializeMultiBodies (btSerializer *serializer)
 
- Protected Member Functions inherited from btDiscreteDynamicsWorld
virtual void predictUnconstraintMotion (btScalar timeStep)
 
void integrateTransformsInternal (btRigidBody **bodies, int numBodies, btScalar timeStep)
 
void updateActions (btScalar timeStep)
 
void startProfiling (btScalar timeStep)
 
virtual void internalSingleStepSimulation (btScalar timeStep)
 
void releasePredictiveContacts ()
 
void createPredictiveContactsInternal (btRigidBody **bodies, int numBodies, btScalar timeStep)
 
virtual void createPredictiveContacts (btScalar timeStep)
 
virtual void saveKinematicState (btScalar timeStep)
 
void serializeRigidBodies (btSerializer *serializer)
 
void serializeDynamicsWorldInfo (btSerializer *serializer)
 
- Protected Member Functions inherited from btCollisionWorld
void serializeCollisionObjects (btSerializer *serializer)
 
void serializeContactManifolds (btSerializer *serializer)
 

Protected Attributes

btAlignedObjectArray< btMultiBody * > m_multiBodies
 
btAlignedObjectArray< btMultiBodyConstraint * > m_multiBodyConstraints
 
btAlignedObjectArray< btMultiBodyConstraint * > m_sortedMultiBodyConstraints
 
btMultiBodyConstraintSolverm_multiBodyConstraintSolver
 
MultiBodyInplaceSolverIslandCallbackm_solverMultiBodyIslandCallback
 
btAlignedObjectArray< btQuaternionm_scratch_world_to_local
 
btAlignedObjectArray< btVector3m_scratch_local_origin
 
btAlignedObjectArray< btQuaternionm_scratch_world_to_local1
 
btAlignedObjectArray< btVector3m_scratch_local_origin1
 
btAlignedObjectArray< btScalarm_scratch_r
 
btAlignedObjectArray< btVector3m_scratch_v
 
btAlignedObjectArray< btMatrix3x3m_scratch_m
 
- Protected Attributes inherited from btDiscreteDynamicsWorld
btAlignedObjectArray< btTypedConstraint * > m_sortedConstraints
 
InplaceSolverIslandCallbackm_solverIslandCallback
 
btConstraintSolverm_constraintSolver
 
btSimulationIslandManagerm_islandManager
 
btAlignedObjectArray< btTypedConstraint * > m_constraints
 
btAlignedObjectArray< btRigidBody * > m_nonStaticRigidBodies
 
btVector3 m_gravity
 
btScalar m_localTime
 
btScalar m_fixedTimeStep
 
bool m_ownsIslandManager
 
bool m_ownsConstraintSolver
 
bool m_synchronizeAllMotionStates
 
bool m_applySpeculativeContactRestitution
 
btAlignedObjectArray< btActionInterface * > m_actions
 
int m_profileTimings
 
bool m_latencyMotionStateInterpolation
 
btAlignedObjectArray< btPersistentManifold * > m_predictiveManifolds
 
btSpinMutex m_predictiveManifoldsMutex
 
- Protected Attributes inherited from btDynamicsWorld
btInternalTickCallback m_internalTickCallback
 
btInternalTickCallback m_internalPreTickCallback
 
void * m_worldUserInfo
 
btContactSolverInfo m_solverInfo
 
- Protected Attributes inherited from btCollisionWorld
btAlignedObjectArray< btCollisionObject * > m_collisionObjects
 
btDispatcherm_dispatcher1
 
btDispatcherInfo m_dispatchInfo
 
btBroadphaseInterfacem_broadphasePairCache
 
btIDebugDrawm_debugDrawer
 
bool m_forceUpdateAllAabbs
 m_forceUpdateAllAabbs can be set to false as an optimization to only update active object AABBs it is true by default, because it is error-prone (setting the position of static objects wouldn't update their AABB) More...
 

Additional Inherited Members

- Static Public Member Functions inherited from btCollisionWorld
static void rayTestSingle (const btTransform &rayFromTrans, const btTransform &rayToTrans, btCollisionObject *collisionObject, const btCollisionShape *collisionShape, const btTransform &colObjWorldTransform, RayResultCallback &resultCallback)
 rayTestSingle performs a raycast call and calls the resultCallback. More...
 
static void rayTestSingleInternal (const btTransform &rayFromTrans, const btTransform &rayToTrans, const btCollisionObjectWrapper *collisionObjectWrap, RayResultCallback &resultCallback)
 
static void objectQuerySingle (const btConvexShape *castShape, const btTransform &rayFromTrans, const btTransform &rayToTrans, btCollisionObject *collisionObject, const btCollisionShape *collisionShape, const btTransform &colObjWorldTransform, ConvexResultCallback &resultCallback, btScalar allowedPenetration)
 objectQuerySingle performs a collision detection query and calls the resultCallback. It is used internally by rayTest. More...
 
static void objectQuerySingleInternal (const btConvexShape *castShape, const btTransform &convexFromTrans, const btTransform &convexToTrans, const btCollisionObjectWrapper *colObjWrap, ConvexResultCallback &resultCallback, btScalar allowedPenetration)
 

Detailed Description

The btMultiBodyDynamicsWorld adds Featherstone multi body dynamics to Bullet This implementation is still preliminary/experimental.

Definition at line 30 of file btMultiBodyDynamicsWorld.h.

Constructor & Destructor Documentation

btMultiBodyDynamicsWorld::btMultiBodyDynamicsWorld ( btDispatcher dispatcher,
btBroadphaseInterface pairCache,
btMultiBodyConstraintSolver constraintSolver,
btCollisionConfiguration collisionConfiguration 
)

Definition at line 386 of file btMultiBodyDynamicsWorld.cpp.

btMultiBodyDynamicsWorld::~btMultiBodyDynamicsWorld ( )
virtual

Definition at line 396 of file btMultiBodyDynamicsWorld.cpp.

Member Function Documentation

void btMultiBodyDynamicsWorld::addMultiBody ( btMultiBody body,
int  group = btBroadphaseProxy::DefaultFilter,
int  mask = btBroadphaseProxy::AllFilter 
)
virtual

Definition at line 27 of file btMultiBodyDynamicsWorld.cpp.

void btMultiBodyDynamicsWorld::addMultiBodyConstraint ( btMultiBodyConstraint constraint)
virtual

Definition at line 803 of file btMultiBodyDynamicsWorld.cpp.

void btMultiBodyDynamicsWorld::applyGravity ( )
virtual

apply gravity, call this once per timestep

Reimplemented from btDiscreteDynamicsWorld.

Definition at line 902 of file btMultiBodyDynamicsWorld.cpp.

void btMultiBodyDynamicsWorld::calculateSimulationIslands ( )
protectedvirtual

Reimplemented from btDiscreteDynamicsWorld.

Definition at line 38 of file btMultiBodyDynamicsWorld.cpp.

void btMultiBodyDynamicsWorld::clearForces ( )
virtual

the forces on each rigidbody is accumulating together with gravity. clear this after each timestep.

Reimplemented from btDiscreteDynamicsWorld.

Definition at line 973 of file btMultiBodyDynamicsWorld.cpp.

void btMultiBodyDynamicsWorld::clearMultiBodyConstraintForces ( )
virtual

Definition at line 936 of file btMultiBodyDynamicsWorld.cpp.

void btMultiBodyDynamicsWorld::clearMultiBodyForces ( )
virtual

Definition at line 944 of file btMultiBodyDynamicsWorld.cpp.

void btMultiBodyDynamicsWorld::debugDrawMultiBodyConstraint ( btMultiBodyConstraint constraint)
virtual

Definition at line 813 of file btMultiBodyDynamicsWorld.cpp.

void btMultiBodyDynamicsWorld::debugDrawWorld ( )
virtual

Reimplemented from btDiscreteDynamicsWorld.

Reimplemented in btSoftMultiBodyDynamicsWorld.

Definition at line 819 of file btMultiBodyDynamicsWorld.cpp.

void btMultiBodyDynamicsWorld::forwardKinematics ( )

Definition at line 417 of file btMultiBodyDynamicsWorld.cpp.

btMultiBody* btMultiBodyDynamicsWorld::getMultiBody ( int  mbIndex)
inline

Definition at line 70 of file btMultiBodyDynamicsWorld.h.

const btMultiBody* btMultiBodyDynamicsWorld::getMultiBody ( int  mbIndex) const
inline

Definition at line 75 of file btMultiBodyDynamicsWorld.h.

virtual btMultiBodyConstraint* btMultiBodyDynamicsWorld::getMultiBodyConstraint ( int  constraintIndex)
inlinevirtual

Definition at line 87 of file btMultiBodyDynamicsWorld.h.

virtual const btMultiBodyConstraint* btMultiBodyDynamicsWorld::getMultiBodyConstraint ( int  constraintIndex) const
inlinevirtual

Definition at line 92 of file btMultiBodyDynamicsWorld.h.

virtual int btMultiBodyDynamicsWorld::getNumMultibodies ( ) const
inlinevirtual

Definition at line 65 of file btMultiBodyDynamicsWorld.h.

virtual int btMultiBodyDynamicsWorld::getNumMultiBodyConstraints ( ) const
inlinevirtual

Definition at line 82 of file btMultiBodyDynamicsWorld.h.

void btMultiBodyDynamicsWorld::integrateTransforms ( btScalar  timeStep)
virtual

base + num m_links

Reimplemented from btDiscreteDynamicsWorld.

Definition at line 745 of file btMultiBodyDynamicsWorld.cpp.

void btMultiBodyDynamicsWorld::removeMultiBody ( btMultiBody body)
virtual

Definition at line 33 of file btMultiBodyDynamicsWorld.cpp.

void btMultiBodyDynamicsWorld::removeMultiBodyConstraint ( btMultiBodyConstraint constraint)
virtual

Definition at line 808 of file btMultiBodyDynamicsWorld.cpp.

void btMultiBodyDynamicsWorld::serialize ( btSerializer serializer)
virtual

Preliminary serialization test for Bullet 2.76. Loading those files requires a separate parser (see Bullet/Demos/SerializeDemo)

Reimplemented from btDiscreteDynamicsWorld.

Reimplemented in btSoftMultiBodyDynamicsWorld.

Definition at line 985 of file btMultiBodyDynamicsWorld.cpp.

void btMultiBodyDynamicsWorld::serializeMultiBodies ( btSerializer serializer)
protectedvirtual

Definition at line 1003 of file btMultiBodyDynamicsWorld.cpp.

void btMultiBodyDynamicsWorld::setConstraintSolver ( btConstraintSolver solver)
virtual

Reimplemented from btDiscreteDynamicsWorld.

Definition at line 408 of file btMultiBodyDynamicsWorld.cpp.

void btMultiBodyDynamicsWorld::setMultiBodyConstraintSolver ( btMultiBodyConstraintSolver solver)
virtual

Definition at line 401 of file btMultiBodyDynamicsWorld.cpp.

void btMultiBodyDynamicsWorld::solveConstraints ( btContactSolverInfo solverInfo)
protectedvirtual

solve all the constraints for this island

Reimplemented from btDiscreteDynamicsWorld.

Definition at line 426 of file btMultiBodyDynamicsWorld.cpp.

void btMultiBodyDynamicsWorld::updateActivationState ( btScalar  timeStep)
protectedvirtual

Reimplemented from btDiscreteDynamicsWorld.

Definition at line 124 of file btMultiBodyDynamicsWorld.cpp.

Member Data Documentation

btAlignedObjectArray<btMultiBody*> btMultiBodyDynamicsWorld::m_multiBodies
protected

Definition at line 33 of file btMultiBodyDynamicsWorld.h.

btAlignedObjectArray<btMultiBodyConstraint*> btMultiBodyDynamicsWorld::m_multiBodyConstraints
protected

Definition at line 34 of file btMultiBodyDynamicsWorld.h.

btMultiBodyConstraintSolver* btMultiBodyDynamicsWorld::m_multiBodyConstraintSolver
protected

Definition at line 36 of file btMultiBodyDynamicsWorld.h.

btAlignedObjectArray<btVector3> btMultiBodyDynamicsWorld::m_scratch_local_origin
protected

Definition at line 41 of file btMultiBodyDynamicsWorld.h.

btAlignedObjectArray<btVector3> btMultiBodyDynamicsWorld::m_scratch_local_origin1
protected

Definition at line 43 of file btMultiBodyDynamicsWorld.h.

btAlignedObjectArray<btMatrix3x3> btMultiBodyDynamicsWorld::m_scratch_m
protected

Definition at line 46 of file btMultiBodyDynamicsWorld.h.

btAlignedObjectArray<btScalar> btMultiBodyDynamicsWorld::m_scratch_r
protected

Definition at line 44 of file btMultiBodyDynamicsWorld.h.

btAlignedObjectArray<btVector3> btMultiBodyDynamicsWorld::m_scratch_v
protected

Definition at line 45 of file btMultiBodyDynamicsWorld.h.

btAlignedObjectArray<btQuaternion> btMultiBodyDynamicsWorld::m_scratch_world_to_local
protected

Definition at line 40 of file btMultiBodyDynamicsWorld.h.

btAlignedObjectArray<btQuaternion> btMultiBodyDynamicsWorld::m_scratch_world_to_local1
protected

Definition at line 42 of file btMultiBodyDynamicsWorld.h.

MultiBodyInplaceSolverIslandCallback* btMultiBodyDynamicsWorld::m_solverMultiBodyIslandCallback
protected

Definition at line 37 of file btMultiBodyDynamicsWorld.h.

btAlignedObjectArray<btMultiBodyConstraint*> btMultiBodyDynamicsWorld::m_sortedMultiBodyConstraints
protected

Definition at line 35 of file btMultiBodyDynamicsWorld.h.


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