[Bf-committers] Verlet integration patch (Farsthary)

Raul Fernandez Hernandez raulf at info.upr.edu.cu
Sat Nov 21 19:02:37 CET 2009


Hi all :)

  Currently the particle system support 3 integrators types (in english
integrators are what actually advance particles in space and time)
and for many users that´s the kind of options that fall under the
I-always-will-use-the-default-value category,
and while for many set ups different integrators provide very similar
results, in others they could make the difference.

 The simplest integrator, Euler, is very fast but not very accurate,
internally Blender performs only one cycle of some calculations.

 The second integrator, Midpoint , is sligthly slower because it performs
2 cycles but is more accurate than Euler and is the default integrator.


 And the third , RK4 (Runge-Kutta) , as you may guess is the slowest and
more accurate of them, and performs 4 cycles of calculations in Blender


 The good news here is that I have implemented another integrator type
that is as fast as the Euler integrator (the fastest) since it requires
only one cycle of calculations and is more accurate than the Midpoint
even, the error is of fourth order: The Verlet integrator
http://en.wikipedia.org/wiki/Verlet_integration#Basic_Verlet
 have several advantages over the others and is very stable , fast, and
gives realistic results.

  this is the manual patch (is very small so will not cause any troubles
patching Blender): http://www.pasteall.org/9292/diff

 Check my site: http://farsthary.wordpress.com for more details

 I have implemented it in Blender seamlessly and I suggest it as the
default integrator, the previous integrators suffer from an increase of
energy in time, note how the amplitude of each bounce is biger than the
others in the previos integrators while in the Verlet is uniform as
should behave in a conservative enviroment (no friction,damping,etc).

 Also for many particles interacting each others the Verlet integrator
clearly shows its speed even compared with Euler. Is very easy to
implement in Blender and is a small step toward improvement.

 Could some core dev review it for commit?
                                                                                                                                           Cheers

Farsthary




More information about the Bf-committers mailing list