[ODE] patch: auto-disable implemented

Adam D. Moss adam at gimp.org
Fri Oct 24 16:06:41 MST 2003



This looks like it applies the same numerical threshold to
both linear and angular velocities.  That seems a bit doomed,
since their ranges are likely to be quite different (the desired
angular velocity damping threshold for practical purposes  is
related to the radius of a geom from its centre of mass).  Should
be easy to fix though -- just add another threshold to dxBody
(at the cost of another dReal).

There is a bigger practical problem with autodisable/autoenable
though (not your fault Aras :)): it relies on two 'stacked' geoms
to be touching, such that the waking of the lower geom's body
will cause a waking of the upper geom's body because they get
connected via a contact joint so the upper sleeping body gets
wakened as part of a live island.  But, this isn't always the
case: two stacked boxes that have come to rest and been autodisabled
might not /quite/ be mathematically touching, so the lower box falls
away when re-awakened without ever creating a contact with the upper.
The result is that upper bodies in a stack can remain 'sleeping' in
mid-air, immune to gravity, when the objects beneath them fall away.
I see this happen quite often in my own app-level autodisable, but it
can sometimes be made to happen in test_crash.exe also.

I can imagine some kludges to ease this, but can't yet think
of a cure-all.

--Adam
-- 
Adam D. Moss   . ,,^^   adam at gimp.org   http://www.foxbox.org/   co:3
"i18n ought to be abbreviated i2n to make it quicker to write!"-snout




More information about the ODE mailing list