[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