I assume you currently have something like this:

http://xith.org/tutes/GettingStarted/html/transformgroup_trees_with_t.html That is a tree of transform groups.

When you use ODE, you basically turn control of this over to ODE. Build your structure in ODE with bodies, joints, geoms and geomtransforms. If you turn a joint, all geometry (and therefore any 3D representations) attached to the body which is turning will move like you expect. In other words - use ODE to define the relationships of your geometry (e.g. arms and legs), then simply attach (bind) the 3D "skin" to this.

To achieve this, I personally use XODE to discribe the ODE bodies and geometry in a heirarchial manner, and the ASE 3D geometry format to describe the 3D shapes. In 3D Max, I have my objects grouped in "Transform groups" like what you are talking about. This allows me, using the ASE loader to import the geometry relitive to the various pivot points specified in 3D Max. I then bind the 3D geometry to the ODE objects created when parsing the XODE file and let Odejava handle the simulation.

Will.