[ODE] Re: Possible solution to unstable rotating bodies problem

Gary R. Van Sickle g.r.vansickle at worldnet.att.net
Fri Apr 22 22:33:28 MST 2005

> > Again, most people would rarely need this many 
> freely-spinning objects 
> > at once.
> I think this is exactly this issue.

The only issue here is that this should be in ODE proper.

>  The question for me is 
> *not* what the performance hit is for spinning bodies 
> relative to the current situation in ODE.  The current 
> situation in ODE is unusable in this situations, so this is 
> not the interesting question.

Right.  With Tyler's patch, now it is usable if you have spinning free
bodies in your world, and there is no performance hit to boot.  Everybody

>  The important questions 
> revolve around the relative performance impact of various 
> techniques for addressing the problem, and also the impact 
> those techniques have on the performance of all the *other*,
> *non-spinning* bodies.
> My concern with your solution is that it *only* works for 
> freely- spinning objects.  It is possible to get bodies 
> spinning themselves into oblivion while in contact with the 
> ground, for instance.  Any solution you use to solve *that* 
> problem will probably also prevent your freely-spinning 
> bodies from exploding, at which point adding additional code 
> to handle that case becomes silly.

I could not agree more, but as John Lennon once said:

"You say you got a real solution,
Well you know,
we'd all love to see the plan.
You ask me for a contribution,
Well you know,
We're doing what we can."

I've been suggesting exactly what you just did for years.  I've convinced
myself that one good way is to explicitly enforce conservation of energy -
i.e., exactly what this patch does in one special, yet not-at-all uncommon,
case.  I don't know how to do it in the general case.  If you do, let's see
the code.

> The only reason I can think of to handle freely-spinning 
> bodies separately is if you wanted their physics to be more 
> accurate than a forward-Euler velocity integrator can 
> provide.

Or if you don't want objects in your world to explode when they become
freely-spinning bodies.

>  Your approach does improve this behavior,

Are you sure?  It was intended to prevent explosions, not increase accuracy,
so without further study I think the only thing that can be said about
accuracy is that a non-exploding body is more accurate than one that gains
momentum until it explodes.

> but if 
> that's really what you want then you're probably better 
> separating them from the ODE integrator entirely and using a 
> more stable simulation technique to handle those objects.

Yeah, that's another one I suggested not long ago. ;-)  It's like the old
adage says: "A non-exploding bird in the hand is worth two exploding birds
in the bush."

Gary R. Van Sickle

More information about the ODE mailing list