[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [19291] branches/bmesh/blender/source/ blender/bmesh: some problems fixed from last commit.

Joseph Eagar joeedh at gmail.com
Sat Mar 14 14:59:45 CET 2009


Revision: 19291
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=19291
Author:   joeedh
Date:     2009-03-14 14:59:45 +0100 (Sat, 14 Mar 2009)

Log Message:
-----------
some problems fixed from last commit.

Modified Paths:
--------------
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_polygon.c
    branches/bmesh/blender/source/blender/bmesh/operators/extrudeops.c

Modified: branches/bmesh/blender/source/blender/bmesh/intern/bmesh_polygon.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/intern/bmesh_polygon.c	2009-03-14 13:43:30 UTC (rev 19290)
+++ branches/bmesh/blender/source/blender/bmesh/intern/bmesh_polygon.c	2009-03-14 13:59:45 UTC (rev 19291)
@@ -99,6 +99,11 @@
 	double n[3] = {0.0, 0.0, 0.0}, l;
 	int i;
 
+	/*this fixes some weird numerical error*/
+	verts[0][0] += 0.0001f;
+	verts[0][1] += 0.0001f;
+	verts[0][2] += 0.0001f;
+
 	for(i = 0; i < nverts; i++){
 		u = verts[i];
 		v = verts[(i+1) % nverts];
@@ -634,11 +639,6 @@
 	
 	///bmesh_update_face_normal(bm, f, projectverts);
 
-	/*this fixes some weird numerical error*/
-	projectverts[0][0] += 0.0001f;
-	projectverts[0][1] += 0.0001f;
-	projectverts[0][2] += 0.0001f;
-
 	compute_poly_normal(f->no, projectverts, f->len);
 	poly_rotate_plane(f->no, projectverts, i);
 
@@ -709,7 +709,7 @@
 {
 	BMIter iter;
 	BMLoop *l;
-	float v1[3], v2[3], v3[3], v4[3], no[3], mid[3], *p1, *p2;
+	float v1[3], v2[3], v3[3], v4[3], no[3], mid[3], *p1, *p2, *p3, *p4;
 	float out[3] = {-234324.0f, -234324.0f, 0.0f};
 	float projectverts[100][3];
 	float edgevertsstack[200][3];
@@ -746,24 +746,19 @@
 	
 	for (i=0; i<f->len; i++) {
 		p1 = projverts[i];
-		out[0] = MAX2(out[0], p1[0]) + 0.001;
-		out[1] = MAX2(out[1], p1[1]) + 0.001;
+		out[0] = MAX2(out[0], p1[0]) + 0.01;
+		out[1] = MAX2(out[1], p1[1]) + 0.01;
 		out[2] = 0.0f;
+		p1[2] = 0.0f;
 	}
 
 	/*do convexity test*/
 	for (i=0; i<len; i++) {
-		//l = (BMLoop*)loops[i][0]->head.prev;
-		//VECCOPY(v1, projverts[l->head.eflag2]);
-		
 		l = (BMLoop*)loops[i][0];
 		VECCOPY(v2, edgeverts[i*2]);
 		
 		l = (BMLoop*)loops[i][1];
 		VECCOPY(v3, edgeverts[i*2+1]);
-		
-		//l = (BMLoop*)loops[i][1]->head.next;
-		//VECCOPY(v4, projverts[l->head.eflag2]);
 
 		VecAddf(mid, v2, v3);
 		VecMulf(mid, 0.5f);
@@ -787,9 +782,6 @@
 		if (clen%2 == 0) {
 			loops[i][0] = NULL;
 		}
-		//if (testedgeside(v1, v2, v3)) { // || testedgeside(v2, v3, v4)) {
-		//	loops[i][0] = NULL;
-		//}
 	}
 	
 	/*do line crossing tests*/
@@ -811,6 +803,21 @@
 			}
 		}
 	}
+
+	for (i=0; i<len; i++) {
+		for (j=0; j<len; j++) {
+			if (j != i) continue;
+			if (!loops[i][0]) continue;
+			if (!loops[j][0]) continue;
+
+			p1 = edgeverts[i*2];
+			p2 = edgeverts[i*2+1];
+			p3 = edgeverts[j*2];
+			p4 = edgeverts[j*2+1];
+
+			if (linecrossesf(p1, p2, p3, p4)) loops[i][0]=NULL;
+		}
+	}
 	
 	if (projverts != projectverts) MEM_freeN(projverts);
 	if (edgeverts != edgevertsstack) MEM_freeN(edgeverts);

Modified: branches/bmesh/blender/source/blender/bmesh/operators/extrudeops.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/operators/extrudeops.c	2009-03-14 13:43:30 UTC (rev 19290)
+++ branches/bmesh/blender/source/blender/bmesh/operators/extrudeops.c	2009-03-14 13:59:45 UTC (rev 19291)
@@ -93,8 +93,8 @@
 		if (BMO_InMap(bm, op, BMOP_EXFACE_EXCLUDEMAP, e)) continue;
 
 		newedge = BMO_IterMapVal(&siter);
+		newedge = *(BMEdge**)newedge;
 		if (!newedge) continue;
-		newedge = *(BMEdge**)newedge;
 
 		verts[0] = e->v1;
 		verts[1] = e->v2;





More information about the Bf-blender-cvs mailing list