fix for face normal flipping calculation.

This commit is contained in:
Campbell Barton 2013-07-25 18:16:55 +00:00
parent b9e34d2938
commit 66d9c0def9

@ -200,6 +200,8 @@ BMFace *BM_face_create_ngon(BMesh *bm, BMVert *v1, BMVert *v2, BMEdge **edges, c
ev1 = edges[0]->v1;
ev2 = edges[0]->v2;
BLI_assert(ELEM(v1, ev1, ev2) && ELEM(v2, ev1, ev2));
if (v1 == ev2) {
/* Swapping here improves performance and consistency of face
* structure in the special case that the edges are already in
@ -344,6 +346,7 @@ BMFace *BM_face_create_ngon_verts(BMesh *bm, BMVert **vert_arr, const int len, c
/* we want to use the reverse winding to the existing order */
BM_edge_ordered_verts(edge_arr[i], &test_v2, &test_v1);
winding[(vert_arr[i_prev] == test_v2)]++;
BLI_assert(vert_arr[i_prev] == test_v2 || vert_arr[i_prev] == test_v1);
}
}
@ -370,7 +373,11 @@ BMFace *BM_face_create_ngon_verts(BMesh *bm, BMVert **vert_arr, const int len, c
/* --- */
/* create the face */
return BM_face_create_ngon(bm, vert_arr[winding[0]], vert_arr[winding[1]], edge_arr, len, create_flag);
return BM_face_create_ngon(
bm,
vert_arr[(len - 2) + winding[0]],
vert_arr[(len - 1) + winding[1]],
edge_arr, len, create_flag);
}