[Bf-blender-cvs] [55aa21bb164] fracture_modifier: fix attempt for uncontrolled "snapping" when using keep distort

Martin Felke noreply at git.blender.org
Wed Jun 14 19:33:40 CEST 2017


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;
+				}
 			}
 		}
 	}




More information about the Bf-blender-cvs mailing list