[ODE] iterative solver: testing needed

Adam D. Moss aspirin at ntlworld.com
Mon Mar 31 02:17:02 2003


> I think I left the world ERP at 1 and CFM at 0 in the version I released. 
> Anyone who is having the stuff disappearing problem, try changing these to
> 0.8 and 1e-5. 

Unfortunately that doesn't fix things.  :(  Tried 1e-3 too in case
the tiny CFM was getting lost in the single-precision maths.

> As far as the micro-jitter/driving around problem goes, I imagine all code
> that employs the iterative solver will have it's own way of resolving that
> through the use of body disabling (which should work now, I'm about to
> start testing it). 

Regarding the disabling working again, great!

 > I'll put an example into test_crash for people to use
> as a reference point (and see how big a wall I can build then :).  I
> figure I'll go through after each step and disable all bodies who's
> velocity components (angular and linear) are all less than .01 (probably
> be tweaked).  Then any time I add power to a joint, if I set the velocity
> != 0, I'll enable the bodies that are connected to it.  Is that pretty
> much what those who have disabling bodies in their code are doing?

Pretty much. :)

..
> blocks or so in that one, even with the iterative solver you'll slow down
> when the whole thing becomes active at one time.  I'm trying to think of a
> good way to only activate the part of the wall that would be affected by
> the collision. My first thoughts are switch from a breadth-first to a
> depth-first search for the bodies in an island, and limit the number of
> consecutive disabled bodies you can go through with a new function added
> to the API.  Say you set the AutoEnableDepth (sound like a decent name?)
> to 2 (this number should probably be based on the size of a brick relative
> to what may hit it).  When the car first ran into the wall, a circle of
> radius 2 blocks would become enabled.  Assuming the car pushed the blocks
> fast enough, they wouldn't get disabled, and next step the circle would
> widen to radius 4, and so on until the motion of enabled blocks fell below
> your disabling threshold. 

I think that this could be a nice addition to ODE (to benefit the
regular worldstep, not just worldstepfast).  Would have to see how
effective and predictable it would be in practice though.

Cheers,
--Adam
-- 
Adam D. Moss   . ,,^^   adam@gimp.org   http://www.foxbox.org/   co:3
... but his bosses didn't like him so they shot him into space.