Todo List

Member ATTRIBUTE_ALIGNED16
: check out alignment methods for other platforms/compilers define ATTRIBUTE_ALIGNED16(a) a __attribute__ ((aligned (16))) define ATTRIBUTE_ALIGNED64(a) a __attribute__ ((aligned (64))) define ATTRIBUTE_ALIGNED128(a) a __attribute__ ((aligned (128)))

Member btAxisSweep3Internal::removeHandle (BP_FP_INT_TYPE handle, btDispatcher *dispatcher)
: compare performance

Class btCollisionConfiguration
: describe the meaning

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

Member btCollisionShape::getAngularMotionDisc () const
cache this value, to improve performance

Member btCollisionWorld::debugDrawObject (const btTransform &worldTransform, const btCollisionShape *shape, const btVector3 &color)
pass camera, for some culling? no -> we are not a graphics lib

Member btCollisionWorld::objectQuerySingle (const btConvexShape *castShape, const btTransform &rayFromTrans, const btTransform &rayToTrans, btCollisionObject *collisionObject, const btCollisionShape *collisionShape, const btTransform &colObjWorldTransform, ConvexResultCallback &resultCallback, btScalar allowedPenetration)
: use AABB tree or other BVH acceleration structure!

Member btCollisionWorld::rayTestSingle (const btTransform &rayFromTrans, const btTransform &rayToTrans, btCollisionObject *collisionObject, const btCollisionShape *collisionShape, const btTransform &colObjWorldTransform, RayResultCallback &resultCallback)
: use AABB tree or other BVH acceleration structure, see btDbvt

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 btConnectivityProcessor::processTriangle (btVector3 *triangle, int partId, int triangleIndex)
: check if we need some epsilon, due to floating point imprecision

Member btConvexTriangleMeshShape::batchedUnitVectorGetSupportingVertexWithoutMargin (const btVector3 *vectors, btVector3 *supportVerticesOut, int numVectors) const
: could do the batch inside the callback!

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 btDiscreteDynamicsWorld::applyGravity ()
: iterate over awake simulation islands!

Member btDiscreteDynamicsWorld::clearForces ()
: iterate over awake simulation islands!

Member btDiscreteDynamicsWorld::synchronizeSingleMotionState (btRigidBody *body)
: add 'dirty' flag

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 btManifoldResult::addContactPoint (const btVector3 &normalOnBInWorld, const btVector3 &pointInWorld, btScalar depth)
, check this for any side effects

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 btMinkowskiSumShape::batchedUnitVectorGetSupportingVertexWithoutMargin (const btVector3 *vectors, btVector3 *supportVerticesOut, int numVectors) const
: could make recursive use of batching. probably this shape is not used frequently.

Member btParallelConstraintSolver::solveGroupCacheFriendlySetup (btCollisionObject **bodies, int numBodies, btPersistentManifold **manifoldPtr, int numManifolds, btTypedConstraint **constraints, int numConstraints, const btContactSolverInfo &infoGlobal, btIDebugDraw *debugDrawer, btStackAlloc *stackAlloc)
: use stack allocator for such temporarily memory, same for solver bodies/constraints

Member btPersistentManifold::getContactBreakingThreshold () const
: get this margin from the current physics / collision environment

Member btQuantizedBvh::quantize (unsigned short *out, const btVector3 &point, int isMax) const
: double-check this

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 btRaycastVehicle::rayCast (btWheelInfo &wheel)
for driving on dynamic/movable objects!;

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, btStackAlloc *stackAlloc)
: use stack allocator for such temporarily memory, same for solver bodies/constraints

Member btSimpleDynamicsWorld::clearForces ()
: iterate over awake simulation islands!

Member btSimpleDynamicsWorld::synchronizeMotionStates ()
: iterate over awake simulation islands!

Member btSimulationIslandManager::buildAndProcessIslands (btDispatcher *dispatcher, btCollisionWorld *collisionWorld, IslandCallback *callback)
: this is random access, it can be walked 'cache friendly'!

Member btSimulationIslandManager::buildIslands (btDispatcher *dispatcher, btCollisionWorld *colWorld)
: check sleeping conditions!

Member btSoftBody::setCollisionShape (btCollisionShape *collisionShape)
: avoid internal softbody shape hack and move collision code to collision library

Member btSparseSdf::GarbageCollect (int lifetime=256)
: Reset puid's when int range limit is reached */

Member btSphereTriangleCollisionAlgorithm::processCollision (btCollisionObject *body0, btCollisionObject *body1, const btDispatcherInfo &dispatchInfo, btManifoldResult *resultOut)
: tighter bounds

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 handleCollisionPair
: add some AABB-based pruning (probably not -> slower)

Generated on Mon Feb 15 22:21:36 2010 for Bullet Collision Detection & Physics Library by  doxygen 1.6.1