[Bf-blender-cvs] [05c4c24] master: BMesh: add sharp edge delimiter

Campbell Barton noreply at git.blender.org
Sat May 16 02:19:14 CEST 2015


Commit: 05c4c2409ea4618704df28258866e39a8a53b3cb
Author: Campbell Barton
Date:   Sat May 16 10:18:38 2015 +1000
Branches: master
https://developer.blender.org/rB05c4c2409ea4618704df28258866e39a8a53b3cb

BMesh: add sharp edge delimiter

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

M	source/blender/bmesh/intern/bmesh_operator_api.h
M	source/blender/bmesh/tools/bmesh_decimate_dissolve.c
M	source/blender/editors/mesh/editmesh_select.c
M	source/blender/makesrna/intern/rna_mesh.c

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

diff --git a/source/blender/bmesh/intern/bmesh_operator_api.h b/source/blender/bmesh/intern/bmesh_operator_api.h
index 96f954f..917b9a9 100644
--- a/source/blender/bmesh/intern/bmesh_operator_api.h
+++ b/source/blender/bmesh/intern/bmesh_operator_api.h
@@ -302,6 +302,7 @@ typedef enum {
 	BMO_DELIM_NORMAL = 1 << 0,
 	BMO_DELIM_MATERIAL = 1 << 1,
 	BMO_DELIM_SEAM = 1 << 2,
+	BMO_DELIM_SHARP = 1 << 3,
 } BMO_Delimit;
 
 void BMO_op_flag_enable(BMesh *bm, BMOperator *op, const int op_flag);
diff --git a/source/blender/bmesh/tools/bmesh_decimate_dissolve.c b/source/blender/bmesh/tools/bmesh_decimate_dissolve.c
index 6d3b738a..8a14291 100644
--- a/source/blender/bmesh/tools/bmesh_decimate_dissolve.c
+++ b/source/blender/bmesh/tools/bmesh_decimate_dissolve.c
@@ -74,6 +74,12 @@ static float bm_edge_calc_dissolve_error(const BMEdge *e, const BMO_Delimit deli
 		goto fail;
 	}
 
+	if ((delimit & BMO_DELIM_SHARP) &&
+	    (BM_elem_flag_test(e, BM_ELEM_SMOOTH) == 0))
+	{
+		goto fail;
+	}
+
 	if ((delimit & BMO_DELIM_MATERIAL) &&
 	    (e->l->f->mat_nr != e->l->radial_next->f->mat_nr))
 	{
diff --git a/source/blender/editors/mesh/editmesh_select.c b/source/blender/editors/mesh/editmesh_select.c
index 288909e..bf32008 100644
--- a/source/blender/editors/mesh/editmesh_select.c
+++ b/source/blender/editors/mesh/editmesh_select.c
@@ -2363,6 +2363,12 @@ static bool select_linked_delimit_test(BMEdge *e, int delimit)
 		}
 	}
 
+	if (delimit & BMO_DELIM_SHARP) {
+		if (BM_elem_flag_test(e, BM_ELEM_SMOOTH) == 0) {
+			return true;
+		}
+	}
+
 	if (delimit & BMO_DELIM_NORMAL) {
 		if (!BM_edge_is_contiguous(e)) {
 			return true;
diff --git a/source/blender/makesrna/intern/rna_mesh.c b/source/blender/makesrna/intern/rna_mesh.c
index 400e98b..b5eb1a2 100644
--- a/source/blender/makesrna/intern/rna_mesh.c
+++ b/source/blender/makesrna/intern/rna_mesh.c
@@ -55,6 +55,7 @@ EnumPropertyItem mesh_delimit_mode_items[] = {
 	{BMO_DELIM_NORMAL, "NORMAL", 0, "Normal", "Delimit by face directions"},
 	{BMO_DELIM_MATERIAL, "MATERIAL", 0, "Material", "Delimit by face material"},
 	{BMO_DELIM_SEAM, "SEAM", 0, "Seam", "Delimit by edge seams"},
+	{BMO_DELIM_SHARP, "SHARP", 0, "Sharp", "Delimit by sharp edges"},
 	{0, NULL, 0, NULL, NULL},
 };




More information about the Bf-blender-cvs mailing list