[Bf-blender-cvs] [74ace41160b] soc-2018-bevel: Minor cleanup and fixed normal updating erasing entire mesh

Rohan Rathi noreply at git.blender.org
Mon Jul 2 18:17:33 CEST 2018


Commit: 74ace41160bd6e98c904b34e5efe0893b1719387
Author: Rohan Rathi
Date:   Mon Jul 2 21:47:15 2018 +0530
Branches: soc-2018-bevel
https://developer.blender.org/rB74ace41160bd6e98c904b34e5efe0893b1719387

Minor cleanup and fixed normal updating erasing entire mesh

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

M	source/blender/bmesh/tools/bmesh_bevel.c
M	source/blender/editors/mesh/editmesh_bevel.c

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

diff --git a/source/blender/bmesh/tools/bmesh_bevel.c b/source/blender/bmesh/tools/bmesh_bevel.c
index bf32e8e6970..9259be7b240 100644
--- a/source/blender/bmesh/tools/bmesh_bevel.c
+++ b/source/blender/bmesh/tools/bmesh_bevel.c
@@ -37,7 +37,6 @@
 
 #include "BLI_array.h"
 #include "BLI_alloca.h"
-#include "BLI_bitmap.h"
 #include "BLI_gsqueue.h"
 #include "BLI_math.h"
 #include "BLI_memarena.h"
@@ -1538,12 +1537,12 @@ static void check_edge_data_seam_sharp_edges(BevVert *bv, int flag, bool neg)
 {
 	EdgeHalf *e = &bv->edges[0], *efirst = &bv->edges[0];
 
-	while (neg ^ !EDGE_DATA_CHECK(e, flag)) {
+	while ((!neg && !EDGE_DATA_CHECK(e, flag) || (neg && EDGE_DATA_CHECK(e, flag)))) {
 		e = e->next;
 		if (e == efirst)
 			break;
 	}
-	if (neg ^ !EDGE_DATA_CHECK(e, flag))
+	if ((!neg && !EDGE_DATA_CHECK(e, flag) || (neg && EDGE_DATA_CHECK(e, flag))))
 		return;
 
 	efirst = e;
@@ -1551,12 +1550,13 @@ static void check_edge_data_seam_sharp_edges(BevVert *bv, int flag, bool neg)
 		int flag_count = 0;
 		EdgeHalf *ne = e->next;
 		
-		while ((neg ^ !EDGE_DATA_CHECK(ne, flag)) && ne != efirst) {
+		while ((!neg && !EDGE_DATA_CHECK(e, flag) || (neg && EDGE_DATA_CHECK(e, flag))) && ne != efirst) {
 			if (ne->is_bev)
 				flag_count++;
 			ne = ne->next;
 		}
-		if (ne == e || (ne == efirst && (neg ^ !EDGE_DATA_CHECK(efirst, flag)))) {
+		if (ne == e || (ne == efirst && (!neg && !EDGE_DATA_CHECK(e, flag) ||
+										(neg && EDGE_DATA_CHECK(e, flag))))) {
 			break;
 		}
  		if (flag == BM_ELEM_SEAM)
@@ -5736,14 +5736,14 @@ void BM_mesh_bevel(
 			}
 		}
 
-		GHASH_ITER(giter, bp.vert_hash) {
-			bv = BLI_ghashIterator_getValue(&giter);
-			bevel_extend_edge_data(bv);
-			if(bm->use_toolflags)
+		if (bm->use_toolflags) {
+			GHASH_ITER(giter, bp.vert_hash) {
+				bv = BLI_ghashIterator_getValue(&giter);
+				bevel_extend_edge_data(bv);
 				bevel_harden_normals_mode(bm, &bp, bv, op);
+			}
 		}
 
-
 		/* Rebuild face polygons around affected vertices */
 		BM_ITER_MESH (v, &iter, bm, BM_VERTS_OF_MESH) {
 			if (BM_elem_flag_test(v, BM_ELEM_TAG)) {
@@ -5752,6 +5752,13 @@ void BM_mesh_bevel(
 			}
 		}
 
+		BM_ITER_MESH_MUTABLE (v, v_next, &iter, bm, BM_VERTS_OF_MESH) {
+			if (BM_elem_flag_test(v, BM_ELEM_TAG)) {
+				BLI_assert(find_bevvert(&bp, v) != NULL);
+				BM_vert_kill(bm, v);
+			}
+		}
+
 		if (do_fix_shading) {
 			BM_mesh_normals_update(bm);
 			BM_lnorspace_update(bm);
@@ -5763,13 +5770,6 @@ void BM_mesh_bevel(
 			BLI_ghash_free(bp.faceHash, NULL, NULL);
 		}
 
-		BM_ITER_MESH_MUTABLE (v, v_next, &iter, bm, BM_VERTS_OF_MESH) {
-			if (BM_elem_flag_test(v, BM_ELEM_TAG)) {
-				BLI_assert(find_bevvert(&bp, v) != NULL);
-				BM_vert_kill(bm, v);
-			}
-		}
-
 		/* When called from operator (as opposed to modifier), bm->use_toolflags
 		 * will be set, and we to transfer the oflags to BM_ELEM_TAGs */
 		if (bm->use_toolflags) {
diff --git a/source/blender/editors/mesh/editmesh_bevel.c b/source/blender/editors/mesh/editmesh_bevel.c
index 40be91aada1..d92d655641f 100644
--- a/source/blender/editors/mesh/editmesh_bevel.c
+++ b/source/blender/editors/mesh/editmesh_bevel.c
@@ -197,8 +197,8 @@ static void bevel_harden_normals(BMEditMesh *em, BMOperator *bmop, float face_st
 					normalize_v3(cn_wght);
 					normalize_v3(cn_unwght);
 					if (calc_n) {
-						mul_v3_fl(calc_n, face_strength);
-						mul_v3_fl(cn_wght, 1.0f - face_strength);
+						mul_v3_fl(cn_wght, face_strength);
+						mul_v3_fl(calc_n, 1.0f - face_strength);
 						add_v3_v3(calc_n, cn_wght);
 						normalize_v3(calc_n);
 					}
@@ -341,7 +341,8 @@ static bool edbm_bevel_calc(wmOperator *op)
 			BMO_slot_buffer_hflag_enable(em->bm, bmop.slots_out, "faces.out", BM_FACE, BM_ELEM_SELECT, true);
 		}
 
-		bevel_harden_normals(em, &bmop, strength, hnmode);
+		if(hnmode != BEVEL_HN_NONE)
+			bevel_harden_normals(em, &bmop, strength, hnmode);
 
 		/* no need to de-select existing geometry */
 		if (!EDBM_op_finish(em, &bmop, op, true)) {
@@ -788,5 +789,5 @@ void MESH_OT_bevel(wmOperatorType *ot)
 	RNA_def_int(ot->srna, "material", -1, -1, INT_MAX, "Material",
 		"Material for bevel faces (-1 means use adjacent faces)", -1, 100);
 	RNA_def_float(ot->srna, "strength", 0.5f, 0.0f, 1.0f, "Normal Strength", "Strength of calculated normal", 0.0f, 1.0f);
-	RNA_def_enum(ot->srna, "hnmode", harden_normals_items, BEVEL_HN_FACE, "Normal Mode", "Weighting mode for Harden Normals");
+	RNA_def_enum(ot->srna, "hnmode", harden_normals_items, BEVEL_HN_NONE, "Normal Mode", "Weighting mode for Harden Normals");
 }



More information about the Bf-blender-cvs mailing list