[Bf-blender-cvs] [9596871292] cloth-improvements: Fix collision response scalings (had missed a few before)
Luca Rood
noreply at git.blender.org
Tue Jan 17 02:32:56 CET 2017
Commit: 9596871292eb94b727d63a47c122e1cf2bd6e57e
Author: Luca Rood
Date: Mon Jan 16 01:39:17 2017 -0200
Branches: cloth-improvements
https://developer.blender.org/rB9596871292eb94b727d63a47c122e1cf2bd6e57e
Fix collision response scalings (had missed a few before)
===================================================================
M source/blender/blenkernel/intern/collision.c
===================================================================
diff --git a/source/blender/blenkernel/intern/collision.c b/source/blender/blenkernel/intern/collision.c
index 445881b394..b79f69d413 100644
--- a/source/blender/blenkernel/intern/collision.c
+++ b/source/blender/blenkernel/intern/collision.c
@@ -298,7 +298,11 @@ static int cloth_collision_response_static ( ClothModifierData *clmd, CollisionM
if ( magtangent > ALMOST_ZERO ) {
normalize_v3(vrel_t_pre);
- impulse = magtangent / ( 1.0f + w1*w1 + w2*w2 + w3*w3 ); /* 2.0 * */
+ /*impulse = magtangent / ( 1.0f + w1*w1 + w2*w2 + w3*w3 ); 2.0 * */
+
+ /* Impulse shoud be uniform throughout polygon, the scaling used above was wrong */
+ impulse = magtangent / 1.5;
+
VECADDMUL ( i1, vrel_t_pre, w1 * impulse );
VECADDMUL ( i2, vrel_t_pre, w2 * impulse );
VECADDMUL ( i3, vrel_t_pre, w3 * impulse );
@@ -310,7 +314,7 @@ static int cloth_collision_response_static ( ClothModifierData *clmd, CollisionM
/*impulse = magrelVel / ( 1.0 + w1*w1 + w2*w2 + w3*w3 );*/
/* Impulse shoud be uniform throughout polygon, the scaling used above was wrong */
- impulse = magrelVel;
+ impulse = magrelVel / 1.5f;
VECADDMUL ( i1, collpair->normal, w1 * impulse );
cloth1->verts[collpair->ap1].impulse_count++;
@@ -338,7 +342,11 @@ static int cloth_collision_response_static ( ClothModifierData *clmd, CollisionM
repulse = min_ff( repulse, 5.0*impulse );
repulse = max_ff(impulse, repulse);
- impulse = repulse / ( 1.0f + w1*w1 + w2*w2 + w3*w3 ); /* original 2.0 / 0.25 */
+ /*impulse = repulse / ( 1.0f + w1*w1 + w2*w2 + w3*w3 ); original 2.0 / 0.25 */
+
+ /* Impulse shoud be uniform throughout polygon, the scaling used above was wrong */
+ impulse = repulse / 1.5f;
+
VECADDMUL ( i1, collpair->normal, impulse );
VECADDMUL ( i2, collpair->normal, impulse );
VECADDMUL ( i3, collpair->normal, impulse );
@@ -359,7 +367,10 @@ static int cloth_collision_response_static ( ClothModifierData *clmd, CollisionM
/* stay on the safe side and clamp repulse */
float repulse = d*1.0f/spf;
- float impulse = repulse / ( 3.0f * ( 1.0f + w1*w1 + w2*w2 + w3*w3 )); /* original 2.0 / 0.25 */
+ /*float impulse = repulse / ( 3.0f * ( 1.0f + w1*w1 + w2*w2 + w3*w3 )); original 2.0 / 0.25 */
+
+ /* Impulse shoud be uniform throughout polygon, the scaling used above was wrong */
+ float impulse = repulse / 4.5f;
VECADDMUL ( i1, collpair->normal, impulse );
VECADDMUL ( i2, collpair->normal, impulse );
More information about the Bf-blender-cvs
mailing list