[ODE] An OpenSource ODE Solver implementation

jason iversen jiversen at d2.com
Fri Apr 29 14:45:25 MST 2005

Hi there,

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 :)


jason iversen
 digital domain
  technical director


More information about the ODE mailing list