[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [52287] trunk/blender/source/blender/bmesh /operators/bmo_bevel.c: use quad-strip for filling even when no segments are being added, this gives quad-loops along the bevel whereas before it made ngons.

Campbell Barton ideasman42 at gmail.com
Fri Nov 16 22:25:14 CET 2012


Revision: 52287
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=52287
Author:   campbellbarton
Date:     2012-11-16 21:25:11 +0000 (Fri, 16 Nov 2012)
Log Message:
-----------
use quad-strip for filling even when no segments are being added, this gives quad-loops along the bevel whereas before it made ngons.

Modified Paths:
--------------
    trunk/blender/source/blender/bmesh/operators/bmo_bevel.c

Modified: trunk/blender/source/blender/bmesh/operators/bmo_bevel.c
===================================================================
--- trunk/blender/source/blender/bmesh/operators/bmo_bevel.c	2012-11-16 21:05:27 UTC (rev 52286)
+++ trunk/blender/source/blender/bmesh/operators/bmo_bevel.c	2012-11-16 21:25:11 UTC (rev 52287)
@@ -92,7 +92,7 @@
 		M_NONE,         /* no polygon mesh needed */
 		M_POLY,         /* a simple polygon */
 		M_ADJ,          /* "adjacent edges" mesh pattern */
-		M_CROSS,        /* "cross edges" mesh pattern */
+//		M_CROSS,        /* "cross edges" mesh pattern */
 		M_TRI_FAN,      /* a simple polygon - fan filled */
 		M_QUAD_STRIP,   /* a simple polygon - cut into paralelle strips */
 	} mesh_kind;
@@ -745,6 +745,9 @@
 	if (vm->count == 2 && bv->edgecount == 3) {
 		vm->mesh_kind = M_NONE;
 	}
+	else if (bv->selcount == 2) {
+		vm->mesh_kind = M_QUAD_STRIP;
+	}
 	else if (efirst->seg == 1 || bv->selcount == 1) {
 		if (vm->count == 3 && bv->selcount == 1) {
 			vm->mesh_kind = M_TRI_FAN;
@@ -754,12 +757,7 @@
 		}
 	}
 	else {
-		if (bv->selcount == 2) {
-			vm->mesh_kind = M_QUAD_STRIP;
-		}
-		else {
-			vm->mesh_kind = M_ADJ;
-		}
+		vm->mesh_kind = M_ADJ;
 	}
 	/* TODO: if vm->count == 4 and bv->selcount == 4, use M_CROSS pattern */
 }
@@ -1219,7 +1217,7 @@
 			}
 
 			/* turns out we don't need this,
-			 * because of how BM_face_split works we always get the loop of the larger face */
+			 * because of how BM_face_split works we always get the loop of the next face */
 #if 0
 			if (l_new->f->len < l_new->radial_next->f->len) {
 				l_new = l_new->radial_next;
@@ -1371,14 +1369,23 @@
 			copy_mesh_vert(vm, weld2->index, 0, ns - k, weld1->index, 0, k);
 	}
 
-	if (vm->mesh_kind == M_ADJ)
-		bevel_build_rings(bm, bv);
-	else if (vm->mesh_kind == M_POLY)
-		bevel_build_poly(bm, bv);
-	else if (vm->mesh_kind == M_TRI_FAN)
-		bevel_build_trifan(bm, bv);
-	else if (vm->mesh_kind == M_QUAD_STRIP)
-		bevel_build_quadstrip(bm, bv);
+	switch (vm->mesh_kind) {
+		case M_NONE:
+			/* do nothing */
+			break;
+		case M_POLY:
+			bevel_build_poly(bm, bv);
+			break;
+		case M_ADJ:
+			bevel_build_rings(bm, bv);
+			break;
+		case M_TRI_FAN:
+			bevel_build_trifan(bm, bv);
+			break;
+		case M_QUAD_STRIP:
+			bevel_build_quadstrip(bm, bv);
+			break;
+	}
 }
 
 /*




More information about the Bf-blender-cvs mailing list