[Bf-blender-cvs] [d6a6417e3b] cloth-improvements: Fix silly mistake in collision impulse clamping

Luca Rood noreply at git.blender.org
Sun Mar 19 16:36:39 CET 2017


Commit: d6a6417e3b9034b7fe73ed9e4acaf8563daa8c2b
Author: Luca Rood
Date:   Sun Mar 19 12:34:11 2017 -0300
Branches: cloth-improvements
https://developer.blender.org/rBd6a6417e3b9034b7fe73ed9e4acaf8563daa8c2b

Fix silly mistake in collision impulse clamping

Forgot to ignore clamping when set to zero, so collisions were just
being completely ignored at that value :\

===================================================================

M	source/blender/blenkernel/intern/collision.c

===================================================================

diff --git a/source/blender/blenkernel/intern/collision.c b/source/blender/blenkernel/intern/collision.c
index d6df750682..5e2047dbfa 100644
--- a/source/blender/blenkernel/intern/collision.c
+++ b/source/blender/blenkernel/intern/collision.c
@@ -791,16 +791,25 @@ static int cloth_collision_response_static(ClothModifierData *clmd, CollisionMod
 		}
 
 		if (result) {
+			float clamp;
+
+			if (clmd->coll_parms->self_clamp > 0.0f) {
+				clamp = clmd->coll_parms->clamp * dt;
+			}
+			else {
+				clamp = FLT_MAX;
+			}
+
 			if (cloth1->verts[collpair->ap1].impulse_count > 0) {
-				insert_impulse_in_cluster_array(&vert_imp_clusters[collpair->ap1], i1, (M_PI / 20), (clmd->coll_parms->clamp * dt));
+				insert_impulse_in_cluster_array(&vert_imp_clusters[collpair->ap1], i1, (M_PI / 20), clamp);
 			}
 
 			if (cloth1->verts[collpair->ap2].impulse_count > 0) {
-				insert_impulse_in_cluster_array(&vert_imp_clusters[collpair->ap2], i2, (M_PI / 20), (clmd->coll_parms->clamp * dt));
+				insert_impulse_in_cluster_array(&vert_imp_clusters[collpair->ap2], i2, (M_PI / 20), clamp);
 			}
 
 			if (cloth1->verts[collpair->ap3].impulse_count > 0) {
-				insert_impulse_in_cluster_array(&vert_imp_clusters[collpair->ap3], i3, (M_PI / 20), (clmd->coll_parms->clamp * dt));
+				insert_impulse_in_cluster_array(&vert_imp_clusters[collpair->ap3], i3, (M_PI / 20), clamp);
 			}
 		}
 	}
@@ -959,16 +968,25 @@ static int cloth_selfcollision_response_static(ClothModifierData *clmd, CollPair
 		}
 
 		if (result) {
+			float clamp;
+
+			if (clmd->coll_parms->self_clamp > 0.0f) {
+				clamp = clmd->coll_parms->self_clamp * dt;
+			}
+			else {
+				clamp = FLT_MAX;
+			}
+
 			if (cloth1->verts[collpair->ap1].impulse_count > 0) {
-				insert_impulse_in_cluster_array(&vert_imp_clusters[collpair->ap1], i1, (M_PI / 20), (clmd->coll_parms->self_clamp * dt));
+				insert_impulse_in_cluster_array(&vert_imp_clusters[collpair->ap1], i1, (M_PI / 20), clamp);
 			}
 
 			if (cloth1->verts[collpair->ap2].impulse_count > 0) {
-				insert_impulse_in_cluster_array(&vert_imp_clusters[collpair->ap2], i2, (M_PI / 20), (clmd->coll_parms->self_clamp * dt));
+				insert_impulse_in_cluster_array(&vert_imp_clusters[collpair->ap2], i2, (M_PI / 20), clamp);
 			}
 
 			if (cloth1->verts[collpair->ap3].impulse_count > 0) {
-				insert_impulse_in_cluster_array(&vert_imp_clusters[collpair->ap3], i3, (M_PI / 20), (clmd->coll_parms->self_clamp * dt));
+				insert_impulse_in_cluster_array(&vert_imp_clusters[collpair->ap3], i3, (M_PI / 20), clamp);
 			}
 		}
 	}




More information about the Bf-blender-cvs mailing list