[ODE] Croteam's optimizations

Alen Ladavac alenl-ml at croteam.com
Tue May 11 11:40:54 MST 2004


I'd like to clear this up, so you don't have to guess and speculate. :)

We are not using ODE per se, though we did experiment with using an LCP
solver based on Russ's implementation in ODE. But we will not be using that
solver after all. As we have implemented an iterative solver that, as
expected, outperforms the direct one by far. (Though it does have precision
issues, but seems they are manageable.)

On the other hand, we want results of our work to be made public. Even
though most areas in game development are covered by widely known
algorithms, there are some gray areas in rigid body dynamics simulation, and
we would like to have that covered. And contributing to ODE seems like a
much more direct method than writing some papers (not saying that there
won't be papers, maybe, when there is time). We did that with colliders, and
the same thing is going to happen with the solver. But it is not production
code yet, so it doesn't make sense to integrate it ATM.

Alen

P.S. For those who want to know more, this solver is, as Nguyen noted, the
GS solver. If you just solve the LCP in a Gauss-Seidel manner, row-by-row
directly from its sparse J*Minv*Jt formulation, it does converge towards a
plausible solution. But it needs some tweaks in proper places. Downside is
that it is not as precise as the direct solver, but we were able to get
plausible results in all cases we tested. It is really hard to compare it
with direct solver, because with direct solver some of those test cases just
run in spf instead of fps. ;)

And it comes with a few bonuses. One is that this thing can be easily
understood and implemented by someone without knowledge of arcane math
speak. What in turn makes is easy to implement in vectorization hardware
(SSE, VU...). And the other is that it doesn't need CFM. What is a big step
towards less interpenetration and stiffer joints.

But, we'll provide complete info on that once we feel it works ok.



More information about the ODE mailing list