Bullet Collision Detection & Physics Library
|
Go to the documentation of this file.
16 #ifndef BT_DEFORMABLE_MULTIBODY_DYNAMICS_WORLD_H
17 #define BT_DEFORMABLE_MULTIBODY_DYNAMICS_WORLD_H
198 btVector3 rayDir = (rayToWorld - rayFromWorld);
226 #ifdef RECALCULATE_AABB
227 btVector3 collisionObjectAabbMin,collisionObjectAabbMax;
257 #ifndef USE_BRUTEFORCE_RAYBROADPHASE
264 #endif //USE_BRUTEFORCE_RAYBROADPHASE
292 if (normal.
dot(rayDir) > 0)
303 bool normalInWorldSpace =
true;
316 #endif //BT_DEFORMABLE_MULTIBODY_DYNAMICS_WORLD_H
btCollisionObject can be used to manage collision detection objects.
btAlignedObjectArray< btVector3 > TVStack
The btBroadphaseProxy is the main class that can be used with the Bullet broadphases.
virtual btDynamicsWorldType getWorldType() const
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.
void solveConstraints(btScalar timeStep)
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
The btDispatcher interface class can be used in combination with broadphase to dispatch calculations ...
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 ...
btSoftBodyWorldInfo & getWorldInfo()
btAlignedObjectArray< btCollisionObject * > m_collisionObjects
static const btSoftBody * upcast(const btCollisionObject *colObj)
void positionCorrection(btScalar timeStep)
btScalar dot(const btVector3 &v) const
Return the dot product.
virtual void debugDrawWorld()
btBroadphaseInterface * m_broadphasePairCache
bool rayFaceTest(const btVector3 &rayFrom, const btVector3 &rayTo, sRayCast &results)
@ BT_DEFORMABLE_MULTIBODY_DYNAMICS_WORLD
void softBodySelfCollision()
void solveMultiBodyConstraints()
void reinitialize(btScalar timeStep)
btCollisionWorld::RayResultCallback & m_resultCallback
btSoftBodyArray m_softBodies
virtual void addSoftBody(btSoftBody *body, int collisionFilterGroup=btBroadphaseProxy::DefaultFilter, int collisionFilterMask=btBroadphaseProxy::AllFilter)
btTransform & getWorldTransform()
void removeForce(btSoftBody *psb, btDeformableLagrangianForce *force)
The btCollisionShape class provides an interface for collision shapes that can be shared among btColl...
btScalar fraction
feature index
void beforeSolverCallbacks(btScalar timeStep)
btScalar m_closestHitFraction
void setLineSearch(bool lineSearch)
virtual int stepSimulation(btScalar timeStep, int maxSubSteps=1, btScalar fixedTimeStep=btScalar(1.)/btScalar(60.))
if maxSubSteps > 0, it will interpolate motion between fixedTimeStep's
void performDeformableCollisionDetection()
const btDeformableMultiBodyDynamicsWorld * m_world
virtual void internalSingleStepSimulation(btScalar timeStep)
btBroadphaseProxy * getBroadphaseHandle()
virtual void getAabb(const btTransform &t, btVector3 &aabbMin, btVector3 &aabbMax) const =0
getAabb returns the axis aligned bounding box in the coordinate frame of the given transform t.
int getNumCollisionObjects() const
virtual void rayTest(const btVector3 &rayFrom, const btVector3 &rayTo, btBroadphaseRayCallback &rayCallback, const btVector3 &aabbMin=btVector3(0, 0, 0), const btVector3 &aabbMax=btVector3(0, 0, 0))=0
void setSolverCallback(btSolverCallback cb)
void applyRepulsionForce(btScalar timeStep)
void addForce(btSoftBody *psb, btDeformableLagrangianForce *force)
void setUseProjection(bool useProjection)
virtual ~btDeformableMultiBodyDynamicsWorld()
void rayTestSingle(const btTransform &rayFromTrans, const btTransform &rayToTrans, btCollisionObject *collisionObject, const btCollisionShape *collisionShape, const btTransform &colObjWorldTransform, RayResultCallback &resultCallback) const
btDeformableBodySolver * m_deformableBodySolver
Solver classes that encapsulate multiple deformable bodies for solving.
btVector3 can be used to represent 3D points and vectors.
void afterSolverCallbacks(btScalar timeStep)
void performGeometricCollisions(btScalar timeStep)
LocalShapeInfo gives extra information for complex shapes Currently, only btTriangleMeshShape is avai...
btDeformableSingleRayCallback(const btVector3 &rayFromWorld, const btVector3 &rayToWorld, const btDeformableMultiBodyDynamicsWorld *world, btCollisionWorld::RayResultCallback &resultCallback)
btTransform m_rayFromTrans
btSolverCallback m_solverCallback
btSoftBodyWorldInfo m_sbi
virtual bool needsCollision(btBroadphaseProxy *proxy0) const
void solveContactConstraints()
void removeSoftBodyForce(btSoftBody *psb)
The btSoftBody is an class to simulate cloth and volumetric soft bodies.
The btBroadphaseInterface class provides an interface to detect aabb-overlapping object pairs.
virtual bool process(const btBroadphaseProxy *proxy)
void removeSoftBody(btSoftBody *body)
virtual void integrateTransforms(btScalar timeStep)
virtual const btMultiBodyDynamicsWorld * getMultiBodyDynamicsWorld() const
virtual btScalar addSingleResult(LocalRayResult &rayResult, bool normalInWorldSpace)=0
const btSoftBodyWorldInfo & getWorldInfo() const
void removeCollisionObject(btCollisionObject *collisionObject)
removeCollisionObject will first check if it is a rigid body, if so call removeRigidBody otherwise ca...
void applyRigidBodyGravity(btScalar timeStep)
btSoftBodyArray & getSoftBodyArray()
DeformableBodyInplaceSolverIslandCallback * m_solverDeformableBodyIslandCallback
The btMultiBodyDynamicsWorld adds Featherstone multi body dynamics to Bullet This implementation is s...
const btSoftBodyArray & getSoftBodyArray() const
RayResultCallback is used to report new raycast results.
btCollisionConfiguration allows to configure Bullet collision detection stack allocator size,...
btAlignedObjectArray< btSoftBody * > btSoftBodyArray
btDeformableMultiBodyDynamicsWorld(btDispatcher *dispatcher, btBroadphaseInterface *pairCache, btDeformableMultiBodyConstraintSolver *constraintSolver, btCollisionConfiguration *collisionConfiguration, btDeformableBodySolver *deformableBodySolver=0)
btVector3 & normalize()
Normalize this vector x^2 + y^2 + z^2 = 1.
void(* btSolverCallback)(btScalar time, btDeformableMultiBodyDynamicsWorld *world)
virtual btMultiBodyDynamicsWorld * getMultiBodyDynamicsWorld()
void updateActivationState(btScalar timeStep)
virtual void predictUnconstraintMotion(btScalar timeStep)
btVector3 m_rayDirectionInverse
added some cached data to accelerate ray-AABB tests
void setImplicit(bool implicit)
const btCollisionShape * getCollisionShape() const