[Bf-blender-cvs] [20c30534aaf] blender-v2.83-release: Fix T75383:Bevel weird behaviour when using bevel weights

Hans Goudey noreply at git.blender.org
Tue May 19 22:54:22 CEST 2020


Commit: 20c30534aafc4a97803d9e72ae765b5415fb1359
Author: Hans Goudey
Date:   Tue May 19 16:40:40 2020 -0400
Branches: blender-v2.83-release
https://developer.blender.org/rB20c30534aafc4a97803d9e72ae765b5415fb1359

Fix T75383:Bevel weird behaviour when using bevel weights

Don't use the cube corner special case when the offsets are different
for the three edges involved. The generic VMesh for this situation isn't
perfect, but it's much better than a failed cube corner VMesh.

Tests pass.

===================================================================

M	source/blender/bmesh/tools/bmesh_bevel.c

===================================================================

diff --git a/source/blender/bmesh/tools/bmesh_bevel.c b/source/blender/bmesh/tools/bmesh_bevel.c
index bc127243836..0891070ce77 100644
--- a/source/blender/bmesh/tools/bmesh_bevel.c
+++ b/source/blender/bmesh/tools/bmesh_bevel.c
@@ -4167,6 +4167,10 @@ static int tri_corner_test(BevelParams *bp, BevVert *bv)
   if (bv->vmesh->count != 3) {
     return 0;
   }
+
+  /* Only use the tri-corner special case if the offset is the same for every edge. */
+  float offset = bv->edges[0].offset_l;
+
   totang = 0.0f;
   for (i = 0; i < bv->edgecount; i++) {
     e = &bv->edges[i];
@@ -4178,6 +4182,11 @@ static int tri_corner_test(BevelParams *bp, BevVert *bv)
     else if (absang >= 3.0f * (float)M_PI_4) {
       return -1;
     }
+
+    if (e->is_bev && !compare_ff(e->offset_l, offset, BEVEL_EPSILON)) {
+      return -1;
+    }
+
     totang += ang;
   }
   if (in_plane_e != bv->edgecount - 3) {



More information about the Bf-blender-cvs mailing list