Iterative solver (again) [Was: Re: [ODE] Russ' plans for ODE?]

Anton kronos at mtcelestia.net
Tue Apr 27 11:40:05 MST 2004


>>>         After playing with Novodex, I found out that they use a
>>>         iterative solver like StepFast1(old story, every one know).
>AL> Is that what you concluded by looking at the Novodex examples and SDK,
or
>AL> did they actually tell you that?
>    Hmm... They told us and I made my guess also. I remember Pierre
>    has stated that they use a technique which is similar to ODE's
>    StepFast.

I am quite positive Novodex's solver works like this. At each step penalty
impulses are applied to contacts in succession. Penalty impulses are
calculated so that they are proportional to the contact error (note that in
order to get better contact stability, no impulses are applied until
penetration for the contact gets more then some threshold) *and* remove the
current velocity error (if the bodies are seperating too fast, I assume the
solver is allowed to pull them). Penalty impulses are scaled with contact
matrices (i.e., they are more like 'requested penalty velocities'). Once
generated, contacts are maintained, and contact error is treated as a 3d
vector, not just projection on the normal (to get the static friction).
Obviously, lateral impulses are limited by the friction coefficient.
Internally, global timestep is subdivided into several smaller chunks (but
not too much; it was about 3 subdivisions for the box stack with 10ms
simulation time step), but no collision detection is performed during these
substeps, only existing contacts are used.



More information about the ODE mailing list