New particle collisions code:
authorJanne Karhu <jhkarh@gmail.com>
Fri, 18 Mar 2011 15:31:32 +0000 (15:31 +0000)
committerJanne Karhu <jhkarh@gmail.com>
Fri, 18 Mar 2011 15:31:32 +0000 (15:31 +0000)
commit60ce95f5622d3947e30fe960eda22ea305660619
tree20a322ff834993f9794ebb5c110437da41273812
parent7e53769d09863b59beae4155ea0ad13c6ab2fac2
New particle collisions code:
* The old collisions code detected particle collisions by calculating the
  collision times analytically from the collision mesh faces. This was
  pretty accurate, but didn't support rotating/deforming faces at all, as
  the equations for these quickly become quite nasty.
* The new code uses a simple "distance to plane/edge/vert" function and
  iterates this with the Newton-Rhapson method to find the closest particle
  distance during a simulation step.
* The advantage in this is that the collision object can now move, rotate,
  scale or even deform freely and collisions are still detected reliably.
* For some extreme movements the calculation errors could stack up so much
  that the detection fails, but this can be easily fixed by increasing the
  particle size or simulation substeps.
* As a side note the algorithm doesn't really do point particles anymore,
  but uses a very small radius as the particle size when "size deflect" isn't
  selected.
* I've also updated the collision response code a bit, so now the particles
  shouldn't leak even from tight corners.

All in all the collisions code is now much cleaner and more robust than before!
source/blender/blenkernel/BKE_particle.h
source/blender/blenkernel/intern/boids.c
source/blender/blenkernel/intern/particle_system.c
source/blender/blenloader/intern/readfile.c
source/blender/editors/physics/particle_edit.c
source/blender/makesdna/DNA_modifier_types.h
source/blender/modifiers/intern/MOD_collision.c