[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