[ODE] Inconsistent joints
Jon Watte (ODE)
hplus-ode at mindcontrol.org
Fri Sep 1 11:25:15 MST 2006
Roland Plüss wrote:
> With nT I tried to reference the 'contact normal' btw. Judging from the
> multi-stepper I thought the joint constraints are checked more than once
> for one simulation step ( dWorldQuickStep ). So the constraint force is
> calculated only once per simulation step and not per interval?
Ah, sub-steps. The problem with contact joints is that they depend on
arbitrarily complex topology, so to really calculate a new depth, you
would have to re-run collision between the geoms, which is usually not a
good idea from a performance point of view.
You could re-derive the points of the bodies that interact, and
re-calculate the distance for each sub-step, if you want. That would
probably work "OK" but wouldn't be any more "correct" than assuming the
same depth each sub-step; you just don't have more information.
The contact joint was formulated when dWorldStep() was the only solver,
and there were no incremental methods.
However, the incremental solvers don't necessarily divide time in X
steps, and just solve each of those steps discretely. Instead, the
incremental solvers solve the matrix that comes out of the joints using
an incremental (converging) method, rather than doing the O(N^3) matrix
solution. This does not mean that physics steps are subdivided, just
that the matrix solution is iterative.
Caveat: I haven't been on the inside of either of the solvers for a long
time, so it may be that one of them does time sub-steps, and the other
More information about the ODE