[Bf-blender-cvs] [bf168f0] master: Fix T43137: vertex bevel percent mode wasn't implemented.

Howard Trickey noreply at git.blender.org
Tue Jan 6 15:13:51 CET 2015


Commit: bf168f0600ceaa7b82b09f4cd369cc4c831f98f5
Author: Howard Trickey
Date:   Tue Jan 6 09:12:40 2015 -0500
Branches: master
https://developer.blender.org/rBbf168f0600ceaa7b82b09f4cd369cc4c831f98f5

Fix T43137: vertex bevel percent mode wasn't implemented.

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

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 c3d1ca8..81236b4 100644
--- a/source/blender/bmesh/tools/bmesh_bevel.c
+++ b/source/blender/bmesh/tools/bmesh_bevel.c
@@ -1474,7 +1474,7 @@ static void build_boundary(BevelParams *bp, BevVert *bv, bool construct)
 		return;
 	}
 
-	lastd = bp->vertex_only ? bv->offset : e->offset_l;
+	lastd = e->offset_l;
 	do {
 		if (e->is_bev) {
 			/* handle only left side of beveled edge e here: next iteration should do right side */
@@ -1557,9 +1557,10 @@ static void build_boundary(BevelParams *bp, BevVert *bv, bool construct)
 				/* None of e->prev, e, e->next are beveled.
 				 * could either leave alone or add slide points to make
 				 * one polygon around bv->v.  For now, we choose latter.
+				 * For vertex bevel, we use e->offset_l as slide distance.
 				 * Could slide to make an even bevel plane but for now will
 				 * just use last distance a meet point moved from bv->v. */
-				slide_dist(e, bv->v, lastd, co);
+				slide_dist(e, bv->v, bp->vertex_only ? e->offset_l : lastd, co);
 				if (construct) {
 					v = add_new_bound_vert(mem_arena, vm, co);
 					v->efirst = v->elast = e;
@@ -3078,6 +3079,18 @@ static BevVert *bevel_vert_construct(BMesh *bm, BevelParams *bp, BMVert *v)
 				e->offset_r_spec *= weight;
 			}
 		}
+		else if (bp->vertex_only) {
+			/* Weight has already been applied to bv->offset, if present.
+			 * Transfer to e->offset_[lr]_spec and treat percet as special case */
+			if (bp->offset_type == BEVEL_AMT_PERCENT) {
+				v2 = BM_edge_other_vert(e->e, bv->v);
+				e->offset_l_spec = BM_edge_calc_length(e->e) * bv->offset / 100.0f;
+			}
+			else {
+				e->offset_l_spec = bv->offset;
+			}
+			e->offset_r_spec = e->offset_l_spec;
+		}
 		else {
 			e->offset_l_spec = e->offset_r_spec = 0.0f;
 		}




More information about the Bf-blender-cvs mailing list