[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