Bullet Collision Detection & Physics Library
Todo List
Member btSimpleDynamicsWorld::clearForces ()
: iterate over awake simulation islands!
Member btTriangleMesh::findOrAddVertex (const btVector3 &vertex, bool removeDuplicateVertices)
: could use acceleration structure for this
Class GIM_CONTACT
: remove and replace GIM_CONTACT by btManifoldPoint.
Member btPersistentManifold::getContactBreakingThreshold () const
: get this margin from the current physics / collision environment
Class btKinematicClosestNotMeRayResultCallback
Interact with dynamic objects, Ride kinematicly animated platforms properly More realistic (or maybe just a config option) falling -> Should integrate falling velocity manually and use that in stepDown() Support jumping Support ducking
Member btRotationalLimitMotor::solveAngularLimits (btScalar timeStep, btVector3 &axis, btScalar jacDiagABInv, btRigidBody *body0, btRigidBody *body1)
: should clip against accumulated impulse
Member btSequentialImpulseConstraintSolver::solveGroupCacheFriendlySetup (btCollisionObject **bodies, int numBodies, btPersistentManifold **manifoldPtr, int numManifolds, btTypedConstraint **constraints, int numConstraints, const btContactSolverInfo &infoGlobal, btIDebugDraw *debugDrawer)
: use stack allocator for such temporarily memory, same for solver bodies/constraints
Member btDiscreteDynamicsWorld::clearForces ()
: iterate over awake simulation islands!
Member btDiscreteDynamicsWorld::applyGravity ()
: iterate over awake simulation islands!
Member btDiscreteDynamicsWorld::synchronizeSingleMotionState (btRigidBody *body)
: add 'dirty' flag
Member btMinkowskiSumShape::batchedUnitVectorGetSupportingVertexWithoutMargin (const btVector3 *vectors, btVector3 *supportVerticesOut, int numVectors) const
: could make recursive use of batching. probably this shape is not used frequently.
Member btSimpleDynamicsWorld::synchronizeMotionStates ()
: iterate over awake simulation islands!
Member btSimulationIslandManagerMt::addManifoldsToIslands (btDispatcher *dispatcher)
: check sleeping conditions!
Member btSimulationIslandManagerMt::buildAndProcessIslands (btDispatcher *dispatcher, btCollisionWorld *collisionWorld, btAlignedObjectArray< btTypedConstraint * > &constraints, const SolverParams &solverParams)

: this is random access, it can be walked 'cache friendly'!

: check sleeping conditions!

Member btRaycastVehicle::rayCast (btWheelInfo &wheel)
for driving on dynamic/movable objects!;
Member btSoftBody::setCollisionShape (btCollisionShape *collisionShape)
: avoid internal softbody shape hack and move collision code to collision library
Member btSparseSdf< CELLSIZE >::GarbageCollect (int lifetime=256)
: Reset puid's when int range limit is reached *‍/
Member bParse::bFile::parseInternal (int verboseMode, char *memDna, int memDnaLength)
we need a better version check, add version/sub version info from FileGlobal into memory DNA/header files
Member btConnectivityProcessor::processTriangle (btVector3 *triangle, int partId, int triangleIndex)
: check if we need some epsilon, due to floating point imprecision
Member btQuaternion::farthest (const btQuaternion &qd) const
document this and it's use
Member btQuaternion::nearest (const btQuaternion &qd) const
document this and it's use
Member btAxisSweep3Internal< BP_FP_INT_TYPE >::removeHandle (BP_FP_INT_TYPE handle, btDispatcher *dispatcher)
: compare performance
Member btQuantizedBvh::quantize (unsigned short *out, const btVector3 &point, int isMax) const
: double-check this
Class btCollisionConfiguration
: describe the meaning
Member btCollisionWorld::debugDrawObject (const btTransform &worldTransform, const btCollisionShape *shape, const btVector3 &color)
pass camera, for some culling? no -> we are not a graphics lib
Class btDefaultCollisionConfiguration
: describe the meaning
Member btDefaultCollisionConfiguration::setConvexConvexMultipointIterations (int numPerturbationIterations=3, int minimumPointsPerturbationThreshold=3)
we could add a per-object setting of those parameters, for level-of-detail collision detection.
Member btMatrix3x3::setEulerZYX (btScalar eulerX, btScalar eulerY, btScalar eulerZ)
proposed to reverse this since it's labeled zyx but takes arguments xyz and it will match all other parts of the code
Member btManifoldResult::addContactPoint (const btVector3 &normalOnBInWorld, const btVector3 &pointInWorld, btScalar depth)
, check this for any side effects
Member btSimulationIslandManager::buildIslands (btDispatcher *dispatcher, btCollisionWorld *colWorld)
: check sleeping conditions!
Member btSimulationIslandManager::buildAndProcessIslands (btDispatcher *dispatcher, btCollisionWorld *collisionWorld, IslandCallback *callback)
: this is random access, it can be walked 'cache friendly'!
Member btSphereTriangleCollisionAlgorithm::processCollision (const btCollisionObjectWrapper *body0Wrap, const btCollisionObjectWrapper *body1Wrap, const btDispatcherInfo &dispatchInfo, btManifoldResult *resultOut)
: tighter bounds
Member btCollisionShape::getAngularMotionDisc () const
cache this value, to improve performance
Member btCollisionShape::calculateTemporalAabb (const btTransform &curTrans, const btVector3 &linvel, const btVector3 &angvel, btScalar timeStep, btVector3 &temporalAabbMin, btVector3 &temporalAabbMax) const
: simd would have a vector max/min operation, instead of per-element access
Class btCompoundShape
: This aabb tree can also be use to speed up ray tests on btCompoundShape, see http://code.google.com/p/bullet/issues/detail?id=25 Currently, removal of child shapes is only supported when disabling the aabb tree (pass 'false' in the constructor of btCompoundShape)
Member btConvexTriangleMeshShape::batchedUnitVectorGetSupportingVertexWithoutMargin (const btVector3 *vectors, btVector3 *supportVerticesOut, int numVectors) const
: could do the batch inside the callback!