[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