Blender Git Commit Log
Git Commits -> Revision 60ce95f
Revision 60ce95f by Janne Karhu (master) March 18, 2011, 15:31 (GMT) |
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! |
Commit Details:
Full Hash: 60ce95f5622d3947e30fe960eda22ea305660619
SVN Revision: 35614
Parent Commit: 7e53769
Lines Changed: +829, -429
7 Modified Paths:
/source/blender/blenkernel/BKE_particle.h (+48, -12) (Diff)
/source/blender/blenkernel/intern/boids.c (+20, -25) (Diff)
/source/blender/blenkernel/intern/particle_system.c (+606, -381) (Diff)
/source/blender/blenloader/intern/readfile.c (+1, -1) (Diff)
/source/blender/editors/physics/particle_edit.c (+144, -1) (Diff)
/source/blender/makesdna/DNA_modifier_types.h (+1, -1) (Diff)
/source/blender/modifiers/intern/MOD_collision.c (+9, -8) (Diff)
/source/blender/blenkernel/intern/boids.c (+20, -25) (Diff)
/source/blender/blenkernel/intern/particle_system.c (+606, -381) (Diff)
/source/blender/blenloader/intern/readfile.c (+1, -1) (Diff)
/source/blender/editors/physics/particle_edit.c (+144, -1) (Diff)
/source/blender/makesdna/DNA_modifier_types.h (+1, -1) (Diff)
/source/blender/modifiers/intern/MOD_collision.c (+9, -8) (Diff)