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);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to