[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.