[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [46067] trunk/blender/source/blender: wireframe option to crase edges at the hub, much nicer subsurf

Campbell Barton ideasman42 at gmail.com
Sun Apr 29 14:33:56 CEST 2012


Revision: 46067
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=46067
Author:   campbellbarton
Date:     2012-04-29 12:33:56 +0000 (Sun, 29 Apr 2012)
Log Message:
-----------
wireframe option to crase edges at the hub, much nicer subsurf

Modified Paths:
--------------
    trunk/blender/source/blender/bmesh/intern/bmesh_opdefines.c
    trunk/blender/source/blender/bmesh/operators/bmo_wireframe.c
    trunk/blender/source/blender/editors/mesh/editmesh_tools.c
    trunk/blender/source/blender/windowmanager/intern/wm_event_system.c

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_opdefines.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_opdefines.c	2012-04-29 12:32:26 UTC (rev 46066)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_opdefines.c	2012-04-29 12:33:56 UTC (rev 46067)
@@ -1119,6 +1119,7 @@
 	 {BMO_OP_SLOT_ELEMENT_BUF, "faceout"}, /* output faces */
 	 {BMO_OP_SLOT_BOOL, "use_boundary"},
 	 {BMO_OP_SLOT_BOOL, "use_even_offset"},
+	 {BMO_OP_SLOT_BOOL, "use_crease"},
 	 {BMO_OP_SLOT_FLT, "thickness"},
 	 {BMO_OP_SLOT_BOOL, "use_relative_offset"},
 	 {BMO_OP_SLOT_FLT, "depth"},

Modified: trunk/blender/source/blender/bmesh/operators/bmo_wireframe.c
===================================================================
--- trunk/blender/source/blender/bmesh/operators/bmo_wireframe.c	2012-04-29 12:32:26 UTC (rev 46066)
+++ trunk/blender/source/blender/bmesh/operators/bmo_wireframe.c	2012-04-29 12:33:56 UTC (rev 46067)
@@ -28,6 +28,8 @@
 
 #include "BLI_math.h"
 
+#include "BKE_customdata.h"
+
 #include "bmesh.h"
 
 #include "intern/bmesh_operators_private.h" /* own include */
@@ -132,9 +134,11 @@
 
 void bmo_wireframe_exec(BMesh *bm, BMOperator *op)
 {
-	const int use_boundary        = BMO_slot_bool_get(op, "use_boundary");
-	const int use_even_offset     = BMO_slot_bool_get(op, "use_even_offset");
-	const int use_relative_offset = BMO_slot_bool_get(op, "use_relative_offset");
+	const int use_boundary        = BMO_slot_bool_get(op,  "use_boundary");
+	const int use_even_offset     = BMO_slot_bool_get(op,  "use_even_offset");
+	const int use_relative_offset = BMO_slot_bool_get(op,  "use_relative_offset");
+	const int use_crease          = (BMO_slot_bool_get(op,  "use_crease") &&
+	                                 CustomData_has_layer(&bm->edata, CD_CREASE));
 	const float depth             = BMO_slot_float_get(op, "thickness");
 	const float inset             = depth;
 
@@ -323,8 +327,6 @@
 			BM_elem_attrs_copy(bm, bm, l,      l_new->next);
 			BM_elem_attrs_copy(bm, bm, l,      l_new->next->next);
 
-
-
 			if (use_boundary) {
 				if (BM_elem_flag_test(l->e, BM_ELEM_TAG)) {
 					/* we know its a boundary and this is the only face user (which is being wire'd) */
@@ -349,8 +351,39 @@
 					BM_elem_attrs_copy(bm, bm, l,      l_new->prev);
 					BM_elem_attrs_copy(bm, bm, l_next, l_new->next);
 					BM_elem_attrs_copy(bm, bm, l_next, l_new->next->next);
+
+					if (use_crease) {
+						BMEdge *e_new;
+						e_new = BM_edge_exists(v_pos1, v_b1);
+						BM_elem_float_data_set(&bm->edata, e_new, CD_CREASE, 1.0f);
+
+						e_new = BM_edge_exists(v_pos2, v_b2);
+						BM_elem_float_data_set(&bm->edata, e_new, CD_CREASE, 1.0f);
+
+						e_new = BM_edge_exists(v_neg1, v_b1);
+						BM_elem_float_data_set(&bm->edata, e_new, CD_CREASE, 1.0f);
+
+						e_new = BM_edge_exists(v_neg2, v_b2);
+						BM_elem_float_data_set(&bm->edata, e_new, CD_CREASE, 1.0f);
+					}
 				}
 			}
+
+			if (use_crease) {
+				BMEdge *e_new;
+				e_new = BM_edge_exists(v_pos1, v_l1);
+				BM_elem_float_data_set(&bm->edata, e_new, CD_CREASE, 1.0f);
+
+				e_new = BM_edge_exists(v_pos2, v_l2);
+				BM_elem_float_data_set(&bm->edata, e_new, CD_CREASE, 1.0f);
+
+				e_new = BM_edge_exists(v_neg1, v_l1);
+				BM_elem_float_data_set(&bm->edata, e_new, CD_CREASE, 1.0f);
+
+				e_new = BM_edge_exists(v_neg2, v_l2);
+				BM_elem_float_data_set(&bm->edata, e_new, CD_CREASE, 1.0f);
+			}
+
 		}
 	}
 

Modified: trunk/blender/source/blender/editors/mesh/editmesh_tools.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_tools.c	2012-04-29 12:32:26 UTC (rev 46066)
+++ trunk/blender/source/blender/editors/mesh/editmesh_tools.c	2012-04-29 12:33:56 UTC (rev 46067)
@@ -4271,16 +4271,17 @@
 	Object *obedit = CTX_data_edit_object(C);
 	BMEditMesh *em = BMEdit_FromObject(obedit);
 	BMOperator bmop;
-	const int use_boundary          = RNA_boolean_get(op->ptr, "use_boundary");
-	const int use_even_offset       = RNA_boolean_get(op->ptr, "use_even_offset");
+	const int use_boundary        = RNA_boolean_get(op->ptr, "use_boundary");
+	const int use_even_offset     = RNA_boolean_get(op->ptr, "use_even_offset");
 	const int use_replace         = RNA_boolean_get(op->ptr, "use_replace");
-	const int use_relative_offset   = RNA_boolean_get(op->ptr, "use_relative_offset");
-	const float thickness           = RNA_float_get(op->ptr,   "thickness");
+	const int use_relative_offset = RNA_boolean_get(op->ptr, "use_relative_offset");
+	const int use_crease          = RNA_boolean_get(op->ptr, "use_crease");
+	const float thickness         = RNA_float_get(op->ptr,   "thickness");
 
 	EDBM_op_init(em, &bmop, op,
-	             "wireframe faces=%hf use_boundary=%b use_even_offset=%b use_relative_offset=%b "
+	             "wireframe faces=%hf use_boundary=%b use_even_offset=%b use_relative_offset=%b use_crease=%b "
 	             "thickness=%f",
-	             BM_ELEM_SELECT, use_boundary, use_even_offset, use_relative_offset,
+	             BM_ELEM_SELECT, use_boundary, use_even_offset, use_relative_offset, use_crease,
 	             thickness);
 
 	BMO_op_exec(em->bm, &bmop);
@@ -4324,6 +4325,7 @@
 	RNA_def_boolean(ot->srna, "use_boundary",        TRUE,  "Boundary",        "Inset face boundaries");
 	RNA_def_boolean(ot->srna, "use_even_offset",     TRUE,  "Offset Even",     "Scale the offset to give more even thickness");
 	RNA_def_boolean(ot->srna, "use_relative_offset", FALSE, "Offset Relative", "Scale the offset by surrounding geometry");
+	RNA_def_boolean(ot->srna, "use_crease",          FALSE, "Crease",          "Crease hub edges for improved subsurf");
 
 	prop = RNA_def_float(ot->srna, "thickness", 0.01f, 0.0f, FLT_MAX, "Thickness", "", 0.0f, 10.0f);
 	/* use 1 rather then 10 for max else dragging the button moves too far */

Modified: trunk/blender/source/blender/windowmanager/intern/wm_event_system.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_event_system.c	2012-04-29 12:32:26 UTC (rev 46066)
+++ trunk/blender/source/blender/windowmanager/intern/wm_event_system.c	2012-04-29 12:33:56 UTC (rev 46067)
@@ -746,7 +746,7 @@
 	}
 }
 
-#if 0 /* disabling for 2.63 release, since we keep getting reports some menu items are leaving props undefined */
+#if 1 /* disabling for 2.63 release, since we keep getting reports some menu items are leaving props undefined */
 int WM_operator_last_properties_init(wmOperator *op)
 {
 	int change = FALSE;




More information about the Bf-blender-cvs mailing list