[ODE] Possible solution to unstable rotating bodies problem

gl gl at ntlworld.com
Wed Apr 6 11:15:14 MST 2005

>> 1. Store each body's previous angular velocity (just the
>> magnitude should be enough).
>> 2. Every time step, check the bodies to see if they are
>> "freely spinning," which is true if no contacts have been
>> made with the body and no user forces have been added in the
>> last time step.
>> 3. If a body is freely spinning and its current angular
>> velocity is greater than the previous angular velocity (i.e.
>> by comparing magnitudes), then make the current angular
>> velocity magnitude equal to that of the previous step
>> (normalize the current angular velocity and scale it by the
>> previous magnitude).

The problem I see is that although it sucessfully fixes the crashes, you're 
still left with the object spinning forever.  Perhaps use your methods to 
detect and clamp the avelocity, and then also apply automatic damping until 
the avelocity reduces naturally again due to contacts?

More information about the ODE mailing list