[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57163] trunk/blender/source/blender/bmesh /operators/bmo_bridge.c: previous fix for #35578 didnt work right, check direction of the open edge loop too.

Campbell Barton ideasman42 at gmail.com
Fri May 31 20:58:33 CEST 2013


Revision: 57163
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57163
Author:   campbellbarton
Date:     2013-05-31 18:58:32 +0000 (Fri, 31 May 2013)
Log Message:
-----------
previous fix for #35578 didnt work right, check direction of the open edge loop too.

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

Modified: trunk/blender/source/blender/bmesh/operators/bmo_bridge.c
===================================================================
--- trunk/blender/source/blender/bmesh/operators/bmo_bridge.c	2013-05-31 18:33:46 UTC (rev 57162)
+++ trunk/blender/source/blender/bmesh/operators/bmo_bridge.c	2013-05-31 18:58:32 UTC (rev 57163)
@@ -175,11 +175,27 @@
 		BM_edgeloop_calc_normal(bm, el_store_b);
 	}
 	else {
+		ListBase *lb_a = BM_edgeloop_verts_get(el_store_a);
+		ListBase *lb_b = BM_edgeloop_verts_get(el_store_b);
+
 		/* normalizing isn't strictly needed but without we may get very large values */
 		float no[3];
+		float dir_a[3], dir_b[3];
+
+		sub_v3_v3v3(dir_a,
+		            ((BMVert *)(((LinkData *)lb_a->first)->data))->co,
+		            ((BMVert *)(((LinkData *)lb_a->last)->data))->co);
+		sub_v3_v3v3(dir_b,
+		            ((BMVert *)(((LinkData *)lb_b->first)->data))->co,
+		            ((BMVert *)(((LinkData *)lb_b->last)->data))->co);
+
+		/* this isnt totally reliable but works well in most cases */
+		if (dot_v3v3(dir_a, dir_b) < 0.0f) {
+			BM_edgeloop_flip(bm, el_store_b);
+		}
+
 		normalize_v3_v3(no, el_dir);
 		BM_edgeloop_calc_normal_aligned(bm, el_store_a, no);
-		negate_v3(no);
 		BM_edgeloop_calc_normal_aligned(bm, el_store_b, no);
 	}
 




More information about the Bf-blender-cvs mailing list