[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [18856] branches/bmesh/blender/source/ blender: yay triangle patterns work in new bmesh esubdivide.

Joseph Eagar joeedh at gmail.com
Sun Feb 8 09:52:54 CET 2009


Revision: 18856
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18856
Author:   joeedh
Date:     2009-02-08 09:52:25 +0100 (Sun, 08 Feb 2009)

Log Message:
-----------
yay triangle patterns work in new bmesh esubdivide.

Modified Paths:
--------------
    branches/bmesh/blender/source/blender/bmesh/operators/subdivideop.c
    branches/bmesh/blender/source/blender/editors/mesh/mesh_ops.c

Modified: branches/bmesh/blender/source/blender/bmesh/operators/subdivideop.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/operators/subdivideop.c	2009-02-07 23:20:36 UTC (rev 18855)
+++ branches/bmesh/blender/source/blender/bmesh/operators/subdivideop.c	2009-02-08 08:52:25 UTC (rev 18856)
@@ -382,6 +382,136 @@
 	MEM_freeN(lines);
 }
 
+/*    v3
+     / \
+    /   \
+   /     \
+  /       \
+ /         \
+v4--v0--v1--v2
+    s    s
+*/
+static void t_1edge_split(BMesh *bm, BMFace *face, BMVert **vlist, 
+			     int numcuts, int flag, float rad) {
+	BMFace *nf;
+	int i;
+	
+	for (i=0; i<numcuts; i++) {
+		BM_Connect_Verts(bm, vlist[i], vlist[numcuts+1], &nf);
+	}
+}
+
+subdpattern t_1edge = {
+	{1, 0, 0},
+	t_1edge_split,
+	3,
+};
+
+/*    v5
+     / \
+    /   \ v4 s
+   /     \
+  /       \ v3 s
+ /         \
+v6--v0--v1--v2
+    s   s
+*/
+static void t_2edge_split(BMesh *bm, BMFace *face, BMVert **vlist, 
+			     int numcuts, int flag, float rad) {
+	BMFace *nf;
+	int i;
+	
+	for (i=0; i<numcuts; i++) {
+		BM_Connect_Verts(bm, vlist[i], vlist[numcuts+numcuts-i], &nf);
+	}
+}
+
+subdpattern t_2edge = {
+	{1, 1, 0},
+	t_2edge_split,
+	3,
+};
+
+
+/*     v5
+      / \
+ s v6/---\ v4 s
+    / \ / \
+sv7/---v---\ v3 s
+  /  \/  \/ \
+ v8--v0--v1--v2
+    s    s
+*/
+static void t_3edge_split(BMesh *bm, BMFace *face, BMVert **vlist, 
+			     int numcuts, int flag, float rad) {
+	BMFace *nf;
+	BMEdge *e, *ne;
+	BMVert ***lines, *v;
+	void *stackarr[1];
+	int i, j, u, a, b;
+	
+	/*number of verts in each line*/
+	lines = MEM_callocN(sizeof(void*)*(numcuts+2), "triangle vert table");
+	
+	lines[0] = stackarr;
+	lines[0][0] = vlist[numcuts*2+1];
+	
+	lines[1+numcuts] = MEM_callocN(sizeof(void*)*(numcuts+2), 
+		                       "triangle vert table 2");
+	for (i=0; i<numcuts; i++) {
+		lines[1+numcuts][1+i] = vlist[i];
+	}
+	lines[1+numcuts][0] = vlist[numcuts*3+2];
+	lines[1+numcuts][1+numcuts] = vlist[numcuts];
+
+	for (i=0; i<numcuts; i++) {
+		lines[i+1] = MEM_callocN(sizeof(void*)*(2+i), 
+			               "triangle vert table row");
+		a = numcuts*2 + 2 + i;
+		b = numcuts + numcuts - i;
+		e = BM_Connect_Verts(bm, vlist[a], vlist[b], &nf);
+
+		lines[i+1][0] = vlist[a];
+		lines[i+1][1+i] = vlist[b];
+
+		for (j=0; j<i; j++) {
+			v = subdivideedgenum(bm, e, j, i, rad, flag, &ne,
+			                     vlist[a], vlist[b]);
+			lines[i+1][j+1] = v;
+		}
+	}
+	
+
+/*     v5
+      / \
+ s v6/---\ v4 s
+    / \ / \
+sv7/---v---\ v3 s
+  /  \/  \/ \
+ v8--v0--v1--v2
+    s    s
+*/
+	for (i=1; i<numcuts+1; i++) {
+		for (j=0; j<i; j++) {
+			BM_Connect_Verts(bm, lines[i][j], lines[i+1][j+1],&nf);
+			BM_Connect_Verts(bm,lines[i][j+1],lines[i+1][j+1],&nf);
+		}
+	}
+
+	for (i=0; i<numcuts; i++) {
+		MEM_freeN(lines[i]);
+	}
+
+	MEM_freeN(lines);
+}
+
+subdpattern t_3edge = {
+	{1, 1, 1},
+	t_3edge_split,
+	3,
+};
+
+
 subdpattern q_4edge = {
 	{1, 1, 1, 1},
 	q_4edge_split,
@@ -394,6 +524,9 @@
 	&q_4edge,
 	&q_3edge,
 	&q_2edge,
+	&t_1edge,
+	&t_2edge,
+	&t_3edge,
 };
 
 #define PLEN	(sizeof(patterns) / sizeof(void*))

Modified: branches/bmesh/blender/source/blender/editors/mesh/mesh_ops.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/mesh/mesh_ops.c	2009-02-07 23:20:36 UTC (rev 18855)
+++ branches/bmesh/blender/source/blender/editors/mesh/mesh_ops.c	2009-02-08 08:52:25 UTC (rev 18856)
@@ -110,13 +110,15 @@
 	WM_operatortype_append(MESH_OT_bmesh_test);
 	WM_operatortype_append(MESH_OT_select_more);
 	WM_operatortype_append(MESH_OT_select_less);
-	WM_operatortype_append(MESH_OT_selectswap_mesh);
+	WM_operatortype_append(MESH_OT_select_invert);
 	WM_operatortype_append(MESH_OT_select_non_manifold);
-	WM_operatortype_append(MESH_OT_selectconnected_mesh_all);
-	WM_operatortype_append(MESH_OT_selectconnected_mesh);
-	WM_operatortype_append(MESH_OT_hide_mesh);
-	WM_operatortype_append(MESH_OT_reveal_mesh);
-	WM_operatortype_append(MESH_OT_righthandfaces);
+	WM_operatortype_append(MESH_OT_select_linked);
+	WM_operatortype_append(MESH_OT_select_linked_pick);
+	WM_operatortype_append(MESH_OT_select_random);
+	WM_operatortype_append(MESH_OT_selection_type);
+	WM_operatortype_append(MESH_OT_hide);
+	WM_operatortype_append(MESH_OT_reveal);
+	WM_operatortype_append(MESH_OT_consistant_normals);
 	WM_operatortype_append(MESH_OT_subdivide);
 	WM_operatortype_append(MESH_OT_subdivide_multi);
 	WM_operatortype_append(MESH_OT_subdivide_multi_fractal);
@@ -134,11 +136,33 @@
 	WM_operatortype_append(MESH_OT_add_primitive_monkey);
 	WM_operatortype_append(MESH_OT_add_primitive_uv_sphere);
 	WM_operatortype_append(MESH_OT_add_primitive_ico_sphere);
+	WM_operatortype_append(MESH_OT_clear_fgon);
+	WM_operatortype_append(MESH_OT_make_fgon);
 	WM_operatortype_append(MESH_OT_add_duplicate);
 	WM_operatortype_append(MESH_OT_removedoublesflag);
-	WM_operatortype_append(MESH_OT_extrude_mesh);
-	WM_operatortype_append(MESH_OT_edit_faces);
+	WM_operatortype_append(MESH_OT_extrude);
+	WM_operatortype_append(MESH_OT_vertices_to_sphere);
+
+	WM_operatortype_append(MESH_OT_fill);
+	WM_operatortype_append(MESH_OT_beauty_fill);
+	WM_operatortype_append(MESH_OT_convert_quads_to_tris);
+	WM_operatortype_append(MESH_OT_convert_tris_to_quads);
+	WM_operatortype_append(MESH_OT_edge_flip);
+	WM_operatortype_append(MESH_OT_faces_shade_smooth);
+	WM_operatortype_append(MESH_OT_faces_shade_solid);
+
+	WM_operatortype_append(MESH_OT_delete);
+
 	WM_operatortype_append(MESH_OT_separate);
+	WM_operatortype_append(MESH_OT_dupli_extrude_cursor);
+	WM_operatortype_append(MESH_OT_loop_select);
+	WM_operatortype_append(MESH_OT_add_edge_face);
+	WM_operatortype_append(MESH_OT_shortest_path_select);
+	WM_operatortype_append(MESH_OT_similar_vertex_select);
+	WM_operatortype_append(MESH_OT_similar_edge_select);
+	WM_operatortype_append(MESH_OT_similar_face_select);
+	WM_operatortype_append(MESH_OT_select_multi_loop);
+	WM_operatortype_append(MESH_OT_separate);
 	
 }
 
@@ -146,44 +170,82 @@
 void ED_keymap_mesh(wmWindowManager *wm)
 {	
 	ListBase *keymap= WM_keymap_listbase(wm, "EditMesh", 0, 0);
+	wmKeymapItem *kmi;
 	
 	/* selecting */
+	/* standard mouse selection goes via space_view3d */
+	WM_keymap_add_item(keymap, "MESH_OT_loop_select", SELECTMOUSE, KM_PRESS, KM_ALT, 0);
+	kmi= WM_keymap_add_item(keymap, "MESH_OT_loop_select", SELECTMOUSE, KM_PRESS, KM_SHIFT|KM_ALT, 0);
+	RNA_boolean_set(kmi->ptr, "extend", 1);
+	kmi= WM_keymap_add_item(keymap, "MESH_OT_loop_select", SELECTMOUSE, KM_PRESS, KM_ALT|KM_CTRL, 0);
+	RNA_boolean_set(kmi->ptr, "ring", 1);
+	kmi= WM_keymap_add_item(keymap, "MESH_OT_loop_select", SELECTMOUSE, KM_PRESS, KM_SHIFT|KM_ALT|KM_CTRL, 0);
+	RNA_boolean_set(kmi->ptr, "extend", 1);
+	RNA_boolean_set(kmi->ptr, "ring", 1);
+
+	WM_keymap_add_item(keymap, "MESH_OT_shortest_path_select", SELECTMOUSE, KM_PRESS, KM_CTRL, 0);
+	
 	WM_keymap_add_item(keymap, "MESH_OT_de_select_all", AKEY, KM_PRESS, 0, 0);
 	WM_keymap_add_item(keymap, "MESH_OT_bmesh_test", JKEY, KM_PRESS, 0, 0);
 	WM_keymap_add_item(keymap, "MESH_OT_select_more", PADPLUSKEY, KM_PRESS, KM_CTRL, 0);
 	WM_keymap_add_item(keymap, "MESH_OT_select_less", PADMINUS, KM_PRESS, KM_CTRL, 0);
-	WM_keymap_add_item(keymap, "MESH_OT_selectswap_mesh", IKEY, KM_PRESS, KM_CTRL, 0);
+	WM_keymap_add_item(keymap, "MESH_OT_select_invert", IKEY, KM_PRESS, KM_CTRL, 0);
 	WM_keymap_add_item(keymap, "MESH_OT_select_non_manifold", MKEY, KM_PRESS, (KM_CTRL|KM_SHIFT|KM_ALT), 0);
 	
-	WM_keymap_add_item(keymap, "MESH_OT_selectconnected_mesh_all", LKEY, KM_PRESS, KM_CTRL, 0);
-	WM_keymap_add_item(keymap, "MESH_OT_selectconnected_mesh", LKEY, KM_PRESS, 0, 0);
-	RNA_boolean_set(WM_keymap_add_item(keymap, "MESH_OT_selectconnected_mesh", LKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "deselect", 1);
+	WM_keymap_add_item(keymap, "MESH_OT_select_linked", LKEY, KM_PRESS, KM_CTRL, 0);
+	WM_keymap_add_item(keymap, "MESH_OT_select_linked_pick", LKEY, KM_PRESS, 0, 0);
+	RNA_boolean_set(WM_keymap_add_item(keymap, "MESH_OT_select_linked_pick", LKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "deselect", 1);
 	
 	RNA_float_set(WM_keymap_add_item(keymap, "MESH_OT_select_linked_flat_faces", FKEY, KM_PRESS, (KM_CTRL|KM_SHIFT|KM_ALT), 0)->ptr,"sharpness",135.0);
-	RNA_float_set(WM_keymap_add_item(keymap, "MESH_OT_select_sharp_edges", SKEY, KM_PRESS, (KM_CTRL|KM_SHIFT|KM_ALT), 0)->ptr,"sharpness",135.0);		
+	RNA_float_set(WM_keymap_add_item(keymap, "MESH_OT_select_sharp_edges", SKEY, KM_PRESS, (KM_CTRL|KM_SHIFT|KM_ALT), 0)->ptr,"sharpness",135.0);
 	
+	WM_keymap_add_item(keymap, "MESH_OT_select_random", SPACEKEY, KM_PRESS, 0, 0);
+	WM_keymap_add_item(keymap, "MESH_OT_vertices_to_sphere", SKEY, KM_PRESS, KM_CTRL|KM_SHIFT , 0);
+	
+	/* temp hotkeys! */
+	WM_keymap_add_item(keymap, "MESH_OT_similar_vertex_select", GKEY, KM_PRESS, KM_SHIFT, 0);
+	WM_keymap_add_item(keymap, "MESH_OT_similar_edge_select", GKEY, KM_PRESS, KM_SHIFT2|KM_CTRL, 0);
+	WM_keymap_add_item(keymap, "MESH_OT_similar_face_select", GKEY, KM_PRESS, KM_SHIFT|KM_CTRL2, 0);
+	
+	/* selection mode */
+	
+	WM_keymap_add_item(keymap, "MESH_OT_selection_type", TABKEY, KM_PRESS, KM_CTRL, 0);
+	
 	/* hide */
-	WM_keymap_add_item(keymap, "MESH_OT_hide_mesh", HKEY, KM_PRESS, 0, 0);
-	RNA_boolean_set(WM_keymap_add_item(keymap, "MESH_OT_hide_mesh", HKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "swap", 1);
-	WM_keymap_add_item(keymap, "MESH_OT_reveal_mesh", HKEY, KM_PRESS, KM_ALT, 0);
+	WM_keymap_add_item(keymap, "MESH_OT_hide", HKEY, KM_PRESS, 0, 0);
+	RNA_boolean_set(WM_keymap_add_item(keymap, "MESH_OT_hide", HKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "invert", 1);
+	WM_keymap_add_item(keymap, "MESH_OT_reveal", HKEY, KM_PRESS, KM_ALT, 0);
 	
 	/* tools */
-	RNA_int_set(WM_keymap_add_item(keymap, "MESH_OT_righthandfaces", NKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0)->ptr, "select", 2);
-	RNA_int_set(WM_keymap_add_item(keymap, "MESH_OT_righthandfaces", NKEY, KM_PRESS, KM_CTRL, 0)->ptr, "select", 1);
+	WM_keymap_add_item(keymap, "MESH_OT_consistant_normals", NKEY, KM_PRESS, KM_CTRL, 0);
+	RNA_boolean_set(WM_keymap_add_item(keymap, "MESH_OT_consistant_normals", NKEY, KM_PRESS, KM_SHIFT|KM_CTRL, 0)->ptr, "inside", 1);
 	
 	WM_keymap_add_item(keymap, "MESH_OT_subdivs", WKEY, KM_PRESS, 0, 0); // this is the menu
 	/*WM_keymap_add_item(keymap, "MESH_OT_subdivide_multi", WKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0);
 	WM_keymap_add_item(keymap, "MESH_OT_subdivide_multi_fractal", WKEY, KM_PRESS, KM_ALT, 0);

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list