[ODE] Getting more speed (auto enable + auto disable)

Jani Laakso jani.laakso at itmill.com
Wed Apr 14 10:58:00 MST 2004


I'm willing to sacrifice simulation accuracy to get more speed. If you 
have any ideas, even by tweaking ODE, then please write them to here.

I know that one could use dynamic stepcount but mostly this makes things 
unstable, stepcount is something that affects to every body in your 
simulation.

Currently users have the control for disabling bodies on ODE. However 
enabling the disabled bodies is done automatically by ODE without user 
control.

How about adding e.g:
enableBodyCallback(dBodyID disabledBody, dBodyID enabledBody)
into ODE. This would give user the control if certain disabled body 
should be enabled based on the collision beetween enabled and the 
disabled body.

User would implement enableBodyCallback and check if the collision to 
disabled body is "big enough" then enable it, otherwise keep the body 
disabled. However, colliding disabled bodies need to act like plain 
Geoms in the simulation for obvious reasons.

I assume changing disabled bodies into static geoms would require some 
work, could it be done effectively? This could be done in 
enableBodyNearCallback if required.

All in all, this manual auto enabling could be nice addition to ODE, but 
would it be worth of the work required in stepfast.cpp? I am not sure if 
there would be proper speed gains even if you are willing it to change 
your simulation "feel" a lot.


Please comment.


PS. My simulation consists mostly of large stack of boxes. Auto 
disabling is something that makes my simulation act a lot better:
-forcing extreme friction to certain bodies only
-stable stacks
-no jittering boxes on the ground
-noticeable speed gains when you got lot's of boxes


-- 
Jani Laakso / IT Mill Ltd | Tel. +358 40 5898086 | http://www.itmill.com


More information about the ODE mailing list