[Bf-blender-cvs] [e266938] fracture_modifier: simplified greasepencil to mesh code (in fracture by greasepencil edge) a bit

Martin Felke noreply at git.blender.org
Sun Feb 22 11:10:07 CET 2015


Commit: e2669381e2b8d80917b17ba245a7acfdce58ae71
Author: Martin Felke
Date:   Sun Feb 22 11:05:33 2015 +0100
Branches: fracture_modifier
https://developer.blender.org/rBe2669381e2b8d80917b17ba245a7acfdce58ae71

simplified greasepencil to mesh code (in fracture by greasepencil edge) a bit

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

M	source/blender/blenkernel/intern/fracture.c

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

diff --git a/source/blender/blenkernel/intern/fracture.c b/source/blender/blenkernel/intern/fracture.c
index e2fac9b..07f6fc8 100644
--- a/source/blender/blenkernel/intern/fracture.c
+++ b/source/blender/blenkernel/intern/fracture.c
@@ -821,18 +821,19 @@ static void parse_cell_neighbors(cell c, int *neighbors, int totpoly)
 
 static void stroke_to_faces(FractureModifierData *fmd, Object* ob, BMesh** bm, bGPDstroke *gps, int inner_material_index)
 {
-	BMVert *lastv = NULL;
-	BMEdge *laste = NULL;
+	BMVert *lastv1 = NULL;
+	BMVert *lastv2 = NULL;
 	int p = 0;
 	float imat[4][4];
 	float thresh = (float)fmd->grease_decimate / 100.0f;
-	float half[3];
+	float half[3] = {0, 0, 1};
 
 	invert_m4_m4(imat, ob->obmat);
 
 	for (p = 0; p < gps->totpoints; p++) {
+
 		if ((BLI_frand() < thresh) || (p == 0) || (p == gps->totpoints-1)) {
-			BMVert *v;
+			BMVert *v1, *v2;
 			float point[3] = {0, 0, 0};
 
 			point[0] = gps->points[p].x;
@@ -840,15 +841,12 @@ static void stroke_to_faces(FractureModifierData *fmd, Object* ob, BMesh** bm, b
 			point[2] = gps->points[p].z;
 
 			mul_m4_v3(imat, point);
-			v = BM_vert_create(*bm, point, NULL, 0);
+			v1 = BM_vert_create(*bm, point, NULL, 0);
 
-			if (lastv) {
+			if (lastv1)
+			{
 				BMFace* f;
-				BMEdge* e, *e1, *e2, *e3;
-				BMVert* v1, *v2;
-
 				float nvec[3], co1[3], co2[3];
-				e = BM_edge_create(*bm, lastv, v, NULL, 0);
 
 				/*also "extrude" this along the normal, no...use global axises instead*/
 				if (fmd->cutter_axis == MOD_FRACTURE_CUTTER_X)
@@ -871,68 +869,25 @@ static void stroke_to_faces(FractureModifierData *fmd, Object* ob, BMesh** bm, b
 					nvec[1] = 0.0f;
 					nvec[2] = 1.0f;
 				}
-#if 0
-				copy_v3_v3(vec, fmd->forward_vector);
-				if (is_zero_v3(vec))
-				{
-					sub_v3_v3v3(vec, v->co, lastv->co);
-				}
-
-				ortho_v3_v3(nvec, vec);
-				/*glGetFloatv(GL_MODELVIEW_MATRIX, viewmat);
-				nvec[0] = viewmat[2];
-				nvec[1] = viewmat[6];
-				nvec[2] = viewmat[10];*/
-
-				normalize_v3(nvec);
-#endif
 
 				mul_v3_fl(nvec, fmd->grease_offset);
 				mul_v3_v3fl(half, nvec, 0.5f);
 
-				/* move v and lastv a bit into the opposite direction */
-				//sub_v3_v3(v->co, half);
-/*
-				if (firstv != NULL) {
-					sub_v3_v3(firstv->co, half);
-					firstv = NULL;
-				} */
-
-				/* create orthogonal edge */
-				add_v3_v3v3(co1, v->co, nvec);
-				v1 = BM_vert_create(*bm, co1, NULL, 0);
-				e1 = BM_edge_create(*bm, v, v1, NULL, 0);
-				if (!laste)
-				{
-					/* no last edge, connect last vert with displaced one */
-					//sub_v3_v3(lastv->co, half);
-					add_v3_v3v3(co2, lastv->co, nvec);
-					v2 = BM_vert_create(*bm, co2, NULL, 0);
-					laste = e1;
-				}
-				else
+				add_v3_v3v3(co1, v1->co, nvec);
+				v2 = BM_vert_create(*bm, co1, NULL, 0);
+
+				if (!lastv2)
 				{
-					/* update last edge with current */
-					e2 = laste;
-					v2 = laste->v2;
-					laste = e1;
+					add_v3_v3v3(co2, lastv1->co, nvec);
+					lastv2 = BM_vert_create(*bm, co2, NULL, 0);
 				}
 
-				/*create displaced edge */
-				e3 = BM_edge_create(*bm, v1, v2, NULL, 0);
-
-				/*create a quad face */
-				f = BM_face_create_quad_tri(*bm, lastv, v, v1, v2, NULL, 0);
+				f = BM_face_create_quad_tri(*bm, lastv1, v1, v2, lastv2, NULL, 0);
 				f->mat_nr = inner_material_index;
+				lastv2 = v2;
 			}
-#if 0
-			else
-			{
-				firstv = v;
-			}
-#endif
 
-			lastv = v;
+			lastv1 = v1;
 		}
 	}
 
@@ -1078,15 +1033,18 @@ void BKE_fracture_shard_by_greasepencil(FractureModifierData *fmd, Object *obj,
 				for (gps = gpf->strokes.first; gps; gps = gps->next) {
 					BMesh *bm = BM_mesh_create(&bm_mesh_allocsize_default);
 					DerivedMesh *dm = NULL;
-//					Object* o;
+
 
 					/*create stroke mesh */
 					stroke_to_faces(fmd, obj, &bm, gps, inner_material_index);
 					dm = CDDM_from_bmesh(bm, true);
 #if 0
-					/*create debug mesh*/
-					o = BKE_object_add(G.main, fmd->modifier.scene, OB_MESH);
-					BM_mesh_bm_to_me(bm, o->data, true);
+					{
+						/*create debug mesh*/
+						Object* o;
+						o = BKE_object_add(G.main, fmd->modifier.scene, OB_MESH);
+						BM_mesh_bm_to_me(bm, o->data, true);
+					}
 #endif
 
 					BM_mesh_free(bm);




More information about the Bf-blender-cvs mailing list