[ODE] Center of Mass not at (0, 0, 0)

Geoff Carlton gcarlton at iinet.net.au
Wed Sep 13 16:41:27 MST 2006

>> you have to re-calculate where the center of mass is and the 
>> re-shift/offset all of your geoms, which would lead to the human body 
>> actually being shifted around on the screen, i.e: this solution would 
>> not work. 
This is fairly easy to do:
  oldpos = dGeomGetPosition(g)
  oldrot = dGeomGetRotation(g)
  dBodySetPosition(b, (x,y,z))
  dGeomSetOffsetWorldPosition(g, oldpos)
  dGeomSetOffsetWorldRotation(g, oldrot)

The last two functions move the geom via the offset, keeping the body in 
its existing position.  All in all, body as "centre" and geom is "what 
you see" makes sense once you are used to it.


More information about the ODE mailing list