[Bf-blender-cvs] [8d454ff13a] cloth-improvements: Separate self collision distance from object collision distance

Luca Rood noreply at git.blender.org
Fri Jan 20 05:38:44 CET 2017


Commit: 8d454ff13acad49433e69459afa4893608a97ad8
Author: Luca Rood
Date:   Thu Jan 19 20:32:22 2017 -0200
Branches: cloth-improvements
https://developer.blender.org/rB8d454ff13acad49433e69459afa4893608a97ad8

Separate self collision distance from object collision distance

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

M	source/blender/blenkernel/intern/cloth.c
M	source/blender/blenkernel/intern/collision.c
M	source/blender/makesrna/intern/rna_cloth.c

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

diff --git a/source/blender/blenkernel/intern/cloth.c b/source/blender/blenkernel/intern/cloth.c
index 2dade1c7ba..c717967e6a 100644
--- a/source/blender/blenkernel/intern/cloth.c
+++ b/source/blender/blenkernel/intern/cloth.c
@@ -125,7 +125,7 @@ void cloth_init(ClothModifierData *clmd )
 	clmd->coll_parms->epsilon = 0.015f;
 	clmd->coll_parms->flags = CLOTH_COLLSETTINGS_FLAG_ENABLED;
 	clmd->coll_parms->collision_list = NULL;
-	clmd->coll_parms->selfepsilon = 0.75;
+	clmd->coll_parms->selfepsilon = 0.015;
 	clmd->coll_parms->vgroup_selfcol = 0;
 
 	/* These defaults are copied from softbody.c's
@@ -913,7 +913,7 @@ static int cloth_from_object(Object *ob, ClothModifierData *clmd, DerivedMesh *d
 		maxdist = MAX2(maxdist, clmd->coll_parms->selfepsilon* ( cloth->verts[i].avg_spring_len*2.0f));
 	}
 	
-	clmd->clothObject->bvhselftree = bvhtree_build_from_cloth ( clmd, clmd->coll_parms->epsilon );
+	clmd->clothObject->bvhselftree = bvhtree_build_from_cloth ( clmd, clmd->coll_parms->selfepsilon );
 
 	return 1;
 }
diff --git a/source/blender/blenkernel/intern/collision.c b/source/blender/blenkernel/intern/collision.c
index caa2cf0ea2..b6ffe2b58d 100644
--- a/source/blender/blenkernel/intern/collision.c
+++ b/source/blender/blenkernel/intern/collision.c
@@ -564,7 +564,7 @@ static int cloth_selfcollision_response_static (ClothModifierData *clmd, CollPai
 			 * DG TODO: Fix usage of dt here! */
 			spf = (float)clmd->sim_parms->stepsPerFrame / clmd->sim_parms->timescale;
 
-			d = clmd->coll_parms->epsilon*8.0f/9.0f * 2.0f - collpair->distance;
+			d = clmd->coll_parms->selfepsilon * 8.0f / 9.0f * 2.0f - collpair->distance;
 
 			if ( ( magrelVel < 0.1f*d*spf ) && ( d > ALMOST_ZERO ) ) {
 				repulse = MIN2 ( d*1.0f/spf, 0.1f*d*spf - magrelVel );
@@ -595,7 +595,7 @@ static int cloth_selfcollision_response_static (ClothModifierData *clmd, CollPai
 			float spf = (float)clmd->sim_parms->stepsPerFrame / clmd->sim_parms->timescale;
 			float d;
 
-			d = clmd->coll_parms->epsilon*8.0f/9.0f * 2.0f - (float)collpair->distance;
+			d = clmd->coll_parms->selfepsilon * 8.0f / 9.0f * 2.0f - (float)collpair->distance;
 
 			if ( d > ALMOST_ZERO) {
 				/* stay on the safe side and clamp repulse */
@@ -736,7 +736,7 @@ static CollPair* cloth_selfcollision(ModifierData *md1, BVHTreeOverlap *overlap,
 	const MVertTri *tri_a, *tri_b;
 	ClothVertex *verts1 = clmd->clothObject->verts;
 	double distance = 0;
-	float epsilon = clmd->coll_parms->epsilon;
+	float epsilon = clmd->coll_parms->selfepsilon;
 
 	tri_a = &clmd->clothObject->tri[overlap->indexA];
 	tri_b = &clmd->clothObject->tri[overlap->indexB];
diff --git a/source/blender/makesrna/intern/rna_cloth.c b/source/blender/makesrna/intern/rna_cloth.c
index 0a327f2b8d..c3e3104dc8 100644
--- a/source/blender/makesrna/intern/rna_cloth.c
+++ b/source/blender/makesrna/intern/rna_cloth.c
@@ -841,8 +841,8 @@ static void rna_def_cloth_collision_settings(BlenderRNA *brna)
 	
 	prop = RNA_def_property(srna, "self_distance_min", PROP_FLOAT, PROP_NONE);
 	RNA_def_property_float_sdna(prop, NULL, "selfepsilon");
-	RNA_def_property_range(prop, 0.5f, 1.0f);
-	RNA_def_property_ui_text(prop, "Self Minimum Distance", "0.5 means no distance at all, 1.0 is maximum distance");
+	RNA_def_property_range(prop, 0.001f, 0.1f);
+	RNA_def_property_ui_text(prop, "Self Minimum Distance", "Minimum distance between cloth faces before collision response takes in");
 	RNA_def_property_update(prop, 0, "rna_cloth_update");
 	
 	prop = RNA_def_property(srna, "self_friction", PROP_FLOAT, PROP_NONE);




More information about the Bf-blender-cvs mailing list