[Bf-blender-cvs] [0f8f494] master: Fix T49296, assert failure in Bevel code.

Howard Trickey noreply at git.blender.org
Mon Sep 12 13:31:51 CEST 2016


Commit: 0f8f494d637cab3802239120456c3eb58011cdff
Author: Howard Trickey
Date:   Mon Sep 12 07:27:29 2016 -0400
Branches: master
https://developer.blender.org/rB0f8f494d637cab3802239120456c3eb58011cdff

Fix T49296, assert failure in Bevel code.

The mesh interpolation function failed to fill a fractions-of-the-way
array properly when the distances are very small but nonzero.

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

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 1dfb9de..45fbfdd 100644
--- a/source/blender/bmesh/tools/bmesh_bevel.c
+++ b/source/blender/bmesh/tools/bmesh_bevel.c
@@ -2194,10 +2194,13 @@ static void fill_vmesh_fracs(VMesh *vm, float *frac, int i)
 		total += len_v3v3(mesh_vert(vm, i, 0, k)->co, mesh_vert(vm, i, 0, k + 1)->co);
 		frac[k + 1] = total;
 	}
-	if (total > BEVEL_EPSILON) {
+	if (total > 0.0f) {
 		for (k = 1; k <= ns; k++)
 			frac[k] /= total;
 	}
+	else {
+		frac[ns] = 1.0f;
+	}
 }
 
 /* Like fill_vmesh_fracs but want fractions for profile points of bndv, with ns segments */
@@ -2215,11 +2218,14 @@ static void fill_profile_fracs(BevelParams *bp, BoundVert *bndv, float *frac, in
 		frac[k + 1] = total;
 		copy_v3_v3(co, nextco);
 	}
-	if (total > BEVEL_EPSILON) {
+	if (total > 0.0f) {
 		for (k = 1; k <= ns; k++) {
 			frac[k] /= total;
 		}
 	}
+	else {
+		frac[ns] = 1.0f;
+	}
 }
 
 /* Return i such that frac[i] <= f <= frac[i + 1], where frac[n] == 1.0




More information about the Bf-blender-cvs mailing list