Commit: 55aa21bb16447904f97b0286a3f2ee355d75c6c8
Author: Martin Felke
Date:   Wed Jun 14 19:33:30 2017 +0200
Branches: fracture_modifier
https://developer.blender.org/rB55aa21bb16447904f97b0286a3f2ee355d75c6c8

fix attempt for uncontrolled "snapping" when using keep distort

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

M       source/blender/modifiers/intern/MOD_fracture.c

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

diff --git a/source/blender/modifiers/intern/MOD_fracture.c 
b/source/blender/modifiers/intern/MOD_fracture.c
index 04eb1b0b020..56d8cab8fe6 100644
--- a/source/blender/modifiers/intern/MOD_fracture.c
+++ b/source/blender/modifiers/intern/MOD_fracture.c
@@ -3332,68 +3332,66 @@ static void prepare_automerge(FractureModifierData 
*fmd, BMesh *bm)
                mul_v3_fl(no, inverse);
                verts = 0;
 
-               //if (!vg->exceeded)
+               if ((len_squared_v3v3(co, v1->co) > (dist * dist)))
                {
-                       for (sv = vg->verts.first; sv; sv = sv->next)
-                       {
-                               v2 = bm->vtable[sv->index];
-
-                               if ((len_squared_v3v3(co, v2->co) > (dist * 
dist)))
-                               {
-                                       sv->moved = true;
-                               }
-
-                               if (len_squared_v3v3(co, v2->co) <= 
fmd->automerge_dist * fmd->automerge_dist)
-                               {
-                                       if (!sv->exceeded)
-                                       {
-                                               copy_v3_v3(v2->co, co);
-                                               copy_v3_v3(v2->no, no);
-                                       }
-                               }
-                               else {
-                                       sv->exceeded = true;
+                       vg->moved = true;
+               }
 
-                                       if (!sv->deltas_set){
-                                               sub_v3_v3v3(sv->delta, co, 
v2->co);
-                                               clamp_delta(sv, fmd);
-                                               sv->deltas_set = true;
-                                       }
-                               }
+               if (len_squared_v3v3(co, v1->co) <= fmd->automerge_dist * 
fmd->automerge_dist)
+               {
+                       if (!vg->exceeded) {
+                               copy_v3_v3(v1->co, co);
+                               copy_v3_v3(v1->no, no);
                        }
 
-                       if ((len_squared_v3v3(co, v1->co) > (dist * dist)))
+                       if (do_calc_delta && vg->deltas_set)
                        {
-                               vg->moved = true;
+                               calc_delta((SharedVert*)vg, v1);
                        }
+               }
+               else {
+                       vg->exceeded = true;
 
-                       if (len_squared_v3v3(co, v1->co) <= fmd->automerge_dist 
* fmd->automerge_dist)
-                       {
-                               if (!vg->exceeded) {
-                                       copy_v3_v3(v1->co, co);
-                                       copy_v3_v3(v1->no, no);
-                               }
+                       if (!vg->deltas_set){
+                               sub_v3_v3v3(vg->delta, co, v1->co);
+                               clamp_delta((SharedVert*)vg, fmd);
+                               vg->deltas_set = true;
                        }
-                       else {
+               }
 
-                               if (!vg->deltas_set){
-                                       sub_v3_v3v3(vg->delta, co, v1->co);
-                                       clamp_delta((SharedVert*)vg, fmd);
-                                       vg->deltas_set = true;
-                               }
+               if (vg->exceeded)
+               {
+                       BM_ITER_ELEM(e, &iter, v1, BM_EDGES_OF_VERT)
+                       {
+                               BM_ELEM_CD_SET_FLOAT(e, cd_edge_crease_offset, 
fmd->inner_crease);
                        }
                }
 
-               if (vg->exceeded)
+               for (sv = vg->verts.first; sv; sv = sv->next)
                {
-                       if (do_calc_delta && vg->deltas_set)
+                       v2 = bm->vtable[sv->index];
+
+                       if ((len_squared_v3v3(co, v2->co) > (dist * dist)))
                        {
-                               calc_delta((SharedVert*)vg, v1);
+                               sv->moved = true;
                        }
 
-                       BM_ITER_ELEM(e, &iter, v1, BM_EDGES_OF_VERT)
+                       if (len_squared_v3v3(co, v2->co) <= fmd->automerge_dist 
* fmd->automerge_dist)
                        {
-                               BM_ELEM_CD_SET_FLOAT(e, cd_edge_crease_offset, 
fmd->inner_crease);
+                               if (!sv->exceeded)
+                               {
+                                       copy_v3_v3(v2->co, co);
+                                       copy_v3_v3(v2->no, no);
+                               }
+                       }
+                       else {
+                               sv->exceeded = true;
+
+                               if (!sv->deltas_set){
+                                       sub_v3_v3v3(sv->delta, co, v2->co);
+                                       clamp_delta(sv, fmd);
+                                       sv->deltas_set = true;
+                               }
                        }
                }
        }

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

Reply via email to