[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [42112] branches/bmesh/blender/source/ blender/bmesh/operators/mesh_conv.c: fix [#29313] In object mode wire frame edges between two planar faces render

Campbell Barton ideasman42 at gmail.com
Thu Nov 24 03:52:47 CET 2011


Revision: 42112
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=42112
Author:   campbellbarton
Date:     2011-11-24 02:52:38 +0000 (Thu, 24 Nov 2011)
Log Message:
-----------
fix [#29313] In object mode wire frame edges between two planar faces render

Modified Paths:
--------------
    branches/bmesh/blender/source/blender/bmesh/operators/mesh_conv.c

Modified: branches/bmesh/blender/source/blender/bmesh/operators/mesh_conv.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/operators/mesh_conv.c	2011-11-24 01:33:41 UTC (rev 42111)
+++ branches/bmesh/blender/source/blender/bmesh/operators/mesh_conv.c	2011-11-24 02:52:38 UTC (rev 42112)
@@ -420,7 +420,7 @@
 	MLoop *mloop;
 	MPoly *mpoly;
 	MVert *mvert, *oldverts;
-	MEdge *medge;
+	MEdge *med, *medge;
 	MFace *mface;
 	BMVert *v, *eve;
 	BMEdge *e;
@@ -514,17 +514,18 @@
 	}
 	bm->elem_index_dirty &= ~BM_VERT;
 
+	med= medge;
 	i = 0;
 	BM_ITER(e, &iter, bm, BM_EDGES_OF_MESH, NULL) {
 		float *crease = CustomData_bmesh_get(&bm->edata, e->head.data, CD_CREASE);
 		float *bweight = CustomData_bmesh_get(&bm->edata, e->head.data, CD_BWEIGHT);
 		
-		medge->v1 = BM_GetIndex(e->v1);
-		medge->v2 = BM_GetIndex(e->v2);
-		medge->crease = crease ? (char)((*crease)*255) : 0;
-		medge->bweight = bweight ? (char)((*bweight)*255) : 0;
+		med->v1 = BM_GetIndex(e->v1);
+		med->v2 = BM_GetIndex(e->v2);
+		med->crease = crease ? (char)((*crease)*255) : 0;
+		med->bweight = bweight ? (char)((*bweight)*255) : 0;
 		
-		medge->flag = BMFlags_To_MEFlags(e);
+		med->flag = BMFlags_To_MEFlags(e);
 		
 		BM_SetIndex(e, i); /* set_inline */
 
@@ -532,7 +533,7 @@
 		CustomData_from_bmesh_block(&bm->edata, &me->edata, e->head.data, i);
 
 		i++;
-		medge++;
+		med++;
 		BM_CHECK_ELEMENT(bm, e);
 	}
 	bm->elem_index_dirty &= ~BM_EDGE;
@@ -660,6 +661,21 @@
 			mloop->e = BM_GetIndex(l->e);
 			mloop->v = BM_GetIndex(l->v);
 
+
+#if 1
+			/* this is a cheap way to set the edge draw, just so happens
+			 * at this part of the code the info is available, feel free to
+			 * move this block of code elsewhere */
+
+			if ( (l != l->radial_next) &&
+			     (medge[mloop->e].flag & ME_EDGEDRAW) &&
+			     (dot_v3v3(f->no, l->radial_next->f->no) > 0.995f))
+			{
+				medge[mloop->e].flag &= ~ME_EDGEDRAW;
+			}
+#endif
+
+
 			/*copy over customdata*/
 			CustomData_from_bmesh_block(&bm->ldata, &me->ldata, l->head.data, j);
 			BM_CHECK_ELEMENT(bm, l);




More information about the Bf-blender-cvs mailing list