Here's a screenshot of a quick app I made by editing the NGF demo (don't mind the FPS, I'm on a laptop now). You can see the debug draw in action. The two spiky balls are joined, there's a joint line between them:-

You can get it at the BtOgre github repository. If you don't want to use git, there's also an option to download an archive (zip/tarball) there.
Just include the needed header files, and compile and link BtOgre.cpp with your project. A small demo application is included in the archive.
For a quick start, check out the demo application or follow this tutorial, and also initialise Ogre along with the physics. Instead of the default motion state, use BtOgre::RigidBodyState(btTransform, Ogre::SceneNode), passing the SceneNode you want it to move. Of course, you can skip the entire MotionState idea and update it per-frame if you want. Here, you're in control.

Code: Select all
//Create Ogre stuff.
mEntity = mSceneManager->createEntity(idStr + "sphereEntity", "Sphere.mesh");
mNode = mSceneManager->getRootSceneNode()->createChildSceneNode(idStr + "sphereSceneNode", pos, rot);
mNode->attachObject(mEntity);
//Create shape.
BtOgre::StaticMeshToShapeConverter converter(mEntity);
mShape = converter.createSphere(); //You can also just use btSphereShape(1.2) or something.
//Calculate inertia.
btScalar mass = 5;
btVector3 inertia;
mShape->calculateLocalInertia(mass, inertia);
//Create BtOgre MotionState (connects Ogre and Bullet).
BtOgre::RigidBodyState *state = new BtOgre::RigidBodyState(mNode);
//Create the Body.
mBody = new btRigidBody(mass, state, mShape, inertia);
/*btDynamicsWorld*/ mDynWorld->addRigidBody(mBody);

Code: Select all
BtOgre::StaticMeshToShapeConverter converter(mEntity);
/*btBvhTriangleMeshShape*/ mShape = converter.createTrimesh();
Code: Select all
Setup:
/*BtOgre::DebugDrawer*/ mDebugDrawer = new BtOgre::DebugDrawer(mSceneMgr->getRootSceneNode(), mDynWorld);
/*btDynamicsWorld*/ mDynWorld->setDebugDrawer(mDebugDrawer);
Per-frame:
mDebugDrawer->step();
