[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