I have just achieved this very thing with PhysX, it was not easy, mostly because there is a lack of information about how to do something like this with GDK/DBPro.
Lee from TGC emailed me some code showing how they did it with ODE for FPSC. I have just emailed him and asked if I can post it here, I'm pretty sure I can, it may even be available online anyway with the rest of the DBPro source. I will post it as soon as he gets back to me.
In the mean time here are some pointers:
1. There is no way of getting bone dimensions, you need to loop through the bone vertices and make a box/sphere shape using that information.
2. You can get/set bone information like this:
sObject* obj = dbGetObject(objID);
int boneCount = obj->ppMeshList[meshID]->dwBoneCount;
D3DXMATRIX boneMat = obj->ppMeshList[meshID]->pFrameMatrices[boneID];
obj->position.bCustomBoneMatrix = true; //swap this when changing between physics and animation.
3. The matrix math can get complicated, what I do is reset the model to 0,0,0 rotation and position when updating with physics. This is because physics returns this data in world coordinates and you don't want GDK adding more rotation/position when updating.
That might get you started, your other option is to use my Physics plugin(Dark Dynamix) although this feature will be added in a few weeks.
EDIT: After reading your post again I would not think you would need a physics engine for this, the above pointers should still help you though