[ODE] An OpenSource ODE Solver implementation
jiversen at d2.com
Fri Apr 29 14:45:25 MST 2005
A couple of us have a burgeoning project to implement an open-source
Dynamics Solver using ODE into the dynamics context of a suite of 3D
animation software. I've gotten pretty far - thanks to ODE being as
straightforward as it is- but I have a few questions.
*/ MessageBox() reliance: ODE utilizes MessageBox() which requires us to
try to link against USER32.dll (I think), which is a no go for the 3D
software's API. I've excised the reference in error.cpp in order to get
it to link ok, but it did leave me a little surprised to have have
ode.lib having such an external reference. How do most other people
handle this? Does everyone compile custom versions of ode.lib if they
don't want user32.dll to be involved or is there some make file
configuration that'll skip this dependancy?
*/ I've started the solver with the easiest and most bulletproof
implementation - just to get going on the right foot. Because it has to
play with other solvers that can do whatever they like to the scene -
move, deform, add, delete objects- I totally create and destroy the
world for every timestep and right now I only define bounding boxes for
all the input objects. So for me to start thinking about how to maximise
efficiency within ODE, it'd be nice to know which functions I
should/could extract out of the timestep and promote to an overall
initialization; so - what are the slowest functions? the dWorldCreate()?
the dHashSpaceCreate()? or is it defining the objects which is slow? It
seems plain enough to me that the WorldCreate and the HashSpaceCreate()
should be pulled out to be done only once (per Solver), but how slow is
it to define objects and contraints? Is it ok to redefine them for every
timestep or should I keep track of the existing ODE objects and try to
syncronize them with the input objects for every timestep?
I'd appreciate any help I can get :)
More information about the ODE