Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHoward Trickey <howard.trickey@gmail.com>2020-07-20 23:08:43 +0300
committerHoward Trickey <howard.trickey@gmail.com>2020-07-20 23:08:43 +0300
commit731d9f0bfa40cabd33abcbabc37acca9bc5837eb (patch)
tree1d88a28ca6efd7ce767dc73312b2ef3a29948a98 /source/blender/bmesh
parented870f87b94224c195cbe2df14445e4808b7b5f3 (diff)
Fix T78733 Bevel sometimes produces zero-area UV face with odd segments.
A bug introduced when I made the choice of interpolation face cleverer.
Diffstat (limited to 'source/blender/bmesh')
-rw-r--r--source/blender/bmesh/tools/bmesh_bevel.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/source/blender/bmesh/tools/bmesh_bevel.c b/source/blender/bmesh/tools/bmesh_bevel.c
index 626d58f75f8..8650d899398 100644
--- a/source/blender/bmesh/tools/bmesh_bevel.c
+++ b/source/blender/bmesh/tools/bmesh_bevel.c
@@ -6730,11 +6730,19 @@ static void bevel_build_edge_polygons(BMesh *bm, BevelParams *bp, BMEdge *bme)
verts[2] = mesh_vert(vm2, i2, 0, nseg - k)->v;
if (odd && k == mid + 1) {
BMFace *fchoices[2] = {f1, f2};
- edges[0] = edges[1] = NULL;
- edges[2] = edges[3] = bme;
f_choice = choose_rep_face(bp, fchoices, 2);
if (e1->is_seam) {
- /* Straddles a seam: choose to interpolate in f_choice and snap right edge to bme. */
+ /* Straddles a seam: choose to interpolate in f_choice and snap the loops whose verts
+ * are in the non-chosen face to bme for interpolation purposes.
+ */
+ if (f_choice == f1) {
+ edges[0] = edges[1] = NULL;
+ edges[2] = edges[3] = bme;
+ }
+ else {
+ edges[0] = edges[1] = bme;
+ edges[2] = edges[3] = NULL;
+ }
r_f = bev_create_ngon(bm, verts, 4, NULL, f_choice, edges, mat_nr, true);
}
else {