Iterative solver (again) [Was: Re: [ODE] Russ' plans for ODE?]
Nguyen Binh
ngbinh at glassegg.com
Tue Apr 27 11:30:08 MST 2004
Guys!
I think ODE iterative solver is OK. We can optimize it a
little : use more specialized solver for small matrix as we
just need 1X1 to 6x6 matrix.
The problem now is some of us didn't use StepFast1 properly.
After playing with Novodex, I found out that they use a
iterative solver like StepFast1(old story, every one know).
Of course, Novodex's solver is much more well designed, they
employ many optimizations like : Auto disable (But maybe much
more better than ODE's), contacts filter and a very robust
collision code. But beside that, they also have a different
use of time step in simulation. Generally, they divided a
single step to many small steps, each small step is about 1/60
(their default value). It's really different from what many of
ODE's users (including me) had done. We use much more small
tiny step. For example, if I wished my simulation ran at 60Hz,
I will :
dWorldStepFast1 (world,REAL(1.0)/60, 5);
So, out tiny step will be 1/600!!! I think it's too small to
make "logical" and useful simulation. It will be much better
if :
dWorldStepFast1 (world,REAL(1.0)/60*5, 5);
I had tested this thing, it works pretty believable and damn
fast. But to make this approach useable, we need much more
robust collider. We need collider that can survive from very
"dangerous" situation, i.e : a sphere completely stuck inside
a box but then safely "slide" out or else the simulation may
explode.
FYI : Here is code excerpt from Novodex Personal SDK.
( Adam and Pierre! Please don't shoot me if I violates some licences)
/**
Advances the simulation by an elapsedTime time. If elapsedTime is large, it is internally
subdivided into up to maxIter integration steps no larger than maxTimestep. The timestep method of
TIMESTEP_FIXED is strongly preferred for stable, reproducible simulation.
*/
virtual void runFor(NxF32 elapsedTime, NxF32 maxTimestep=1.0f/60.0f, NxU32 maxIter=8, NxTimeStepMethod method=NX_TIMESTEP_FIXED) = 0;
--
Best regards,
---------------------------------------------------------------------
Nguyen Binh
Software Engineer
Glass Egg Digital Media
E.Town Building
7th Floor, 364 CongHoa Street
Tan Binh District,
HoChiMinh City,
VietNam,
Phone : +84 8 8109018
Fax : +84 8 8109013
www.glassegg.com
---------------------------------------------------------------------
More information about the ODE
mailing list