Blender Git Commit Log

Git Commits -> Revision 277b1d7

Revision 277b1d7 by Alexander Gavrilov (master)
August 6, 2016, 07:11 (GMT)
Fix T26658: particles stopped or bounced by 100% permeability colliders.

There were two issues here. One is that the fix done originally for this
bug only checks for colliding with the same face as the single preceeding
hit. If the particle hits an edge or vertex of the collider, it in fact
hits two or more faces, so the loop ends up cycling between first two
of them and reaches the max collision limit.

The fix is to disable the collider for the sim step once a permeability
roll succeeds, by adding it to a skip list. Skipping just one face causes
some particles to bounce at odd angles in case of partial permeability.

The second problem was that the collider bounced back a small percentage
of particles, and the cause seemed to be that the code was set to flip
the velocity if the particle was just past the collider but still within
collision distance. Inverting both values causes a half permeable collider
to stop particles, so it seems that this if branch shouldn't bounce at all.

Test file: {F327322}

Reviewers: lukastoenne, brecht

Reviewed By: brecht

Subscribers: brecht, #physics

Maniphest Tasks: T26658

Differential Revision: https://developer.blender.org/D2120

Commit Details:

Full Hash: 277b1d76ff73c3dfb2150ec06af622962c300618
Parent Commit: b988309
Lines Changed: +23, -16

2 Modified Paths:

/source/blender/blenkernel/BKE_particle.h (+4, -3) (Diff)
/source/blender/blenkernel/intern/particle_system.c (+19, -13) (Diff)
By: Miika HämäläinenLast update: Nov-07-2014 14:18MiikaHweb | 2003-2021