Iterative solver (again) [Was: Re: [ODE] Russ' plans for
ODE?]
Antonio_Martini at scee.net
Antonio_Martini at scee.net
Tue Apr 27 10:33:33 MST 2004
you may me interested in:
http://www.shaderx2.com/shaderx.PDF
where a projected Jacobi method is mentioned.
and also in:
http://vcg.isti.cnr.it/people/vcgpeople/mendoza/jnrr.pdf
if you look carefully the first jacobi iteration started with force=0 is the same as step fast where off diagonal elements disappear. so it looks
like that step fast is like running the first iteration, setting the force to zero and running the first iteration again.
Antonio
Nguyen Binh <ngbinh at glassegg.com>@q12.org on 27/04/2004 04:30:08
Please respond to Nguyen Binh <ngbinh at glassegg.com>
Sent by: ode-bounces at q12.org
To: Antonio_Martini at scee.net
cc: ODE at q12.org
Subject: Re[2]: Iterative solver (again) [Was: Re: [ODE] Russ' plans for
ODE?]
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
---------------------------------------------------------------------
_______________________________________________
ODE mailing list
ODE at q12.org
http://q12.org/mailman/listinfo/ode
**********************************************************************
This email and any files transmitted with it are confidential and
intended solely for the use of the individual or entity to whom they
are addressed. If you have received this email in error please notify
postmaster at scee.net
This footnote also confirms that this email message has been checked
for all known viruses.
**********************************************************************
SCEE 2004
More information about the ODE
mailing list