[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [19312] branches/bmesh/blender/source/ blender: edge subdivide ops now use bmesh code, rather then just the test bmesh op.

Joseph Eagar joeedh at gmail.com
Mon Mar 16 15:15:18 CET 2009


Revision: 19312
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=19312
Author:   joeedh
Date:     2009-03-16 15:15:18 +0100 (Mon, 16 Mar 2009)

Log Message:
-----------
edge subdivide ops now use bmesh code, rather then just the test bmesh op.  also, got bmesh edge subdivide's smooth subdivide mode to work (fractal already worked I think, not sure).

Modified Paths:
--------------
    branches/bmesh/blender/source/blender/bmesh/bmesh_operators.h
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_opdefines.c
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_polygon.c
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_private.h
    branches/bmesh/blender/source/blender/bmesh/operators/subdivideop.c
    branches/bmesh/blender/source/blender/bmesh/operators/triangulateop.c
    branches/bmesh/blender/source/blender/editors/mesh/editmesh.c
    branches/bmesh/blender/source/blender/editors/mesh/editmesh_mods.c
    branches/bmesh/blender/source/blender/editors/mesh/editmesh_tools.c
    branches/bmesh/blender/source/blender/editors/space_view3d/drawobject.c
    branches/bmesh/blender/source/blender/makesdna/DNA_meshdata_types.h

Modified: branches/bmesh/blender/source/blender/bmesh/bmesh_operators.h
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/bmesh_operators.h	2009-03-16 11:43:02 UTC (rev 19311)
+++ branches/bmesh/blender/source/blender/bmesh/bmesh_operators.h	2009-03-16 14:15:18 UTC (rev 19312)
@@ -1,198 +1,206 @@
-#ifndef BM_OPERATORS_H
-#define BM_OPERATORS_H
-
-/*slot names and operator names appear in comments next to/above tbeir
-  enumeration/define value*/
-
-/*------------begin operator defines (see bmesh_opdefines.c too)------------*/
-
-/*split*/
-#define BMOP_SPLIT				0
-
-/*the split operator.  splits geometry from the mesh.*/
-enum {
-	BMOP_SPLIT_MULTIN, /*geom*/
-	BMOP_SPLIT_MULTOUT, /*geomout*/
-
-	//bounding edges of split faces
-	BMOP_SPLIT_BOUNDS_EDGEMAP, /*boundarymap*/
-	BMOP_SPLIT_ISOLATED_VERTS_MAP, /*isovertmap*/
-	BMOP_SPLIT_TOTSLOT,
-};
-
-/*dupe*/
-#define BMOP_DUPE	1
-
-/*duplicates input geometry, and creates a bounds mapping between old/new
-  edges along the boundary.*/
-enum {
-	BMOP_DUPE_MULTIN, /*geom*/
-	BMOP_DUPE_ORIG, /*origout*/
-	BMOP_DUPE_NEW, /*newout*/
-	/*we need a map for verts duplicated not connected
-	  to any faces, too.*/	
-	BMOP_DUPE_BOUNDS_EDGEMAP, /*boundarymap*/
-	BMOP_DUPE_ISOLATED_VERTS_MAP, /*isovertmap*/
-	BMOP_DUPE_TOTSLOT
-};
-
-/*del*/
-#define BMOP_DEL	2
-
-/*deletes input geometry, using on of several deletion methods
-  specified by context.*/
-enum {
-	BMOP_DEL_MULTIN, /*geom*/
-	BMOP_DEL_CONTEXT, /*context*/
-	BMOP_DEL_TOTSLOT,
-};
-
-/*context slot values*/
-#define DEL_VERTS		1
-#define DEL_EDGES		2
-#define DEL_ONLYFACES	3
-#define DEL_EDGESFACES	4
-#define DEL_FACES		5
-#define DEL_ALL			6
-#define DEL_ONLYTAGGED		7
-
-/*editmesh_to_bmesh*/
-#define BMOP_FROM_EDITMESH		3
-
-/*editmesh->bmesh op*/
-enum {
-	BMOP_FROM_EDITMESH_EM, /*em*/
-	
-	/*maps old elements to new ones.
-	 coud do new elements to old too,
-	 in the future*/
-	BMOP_FROM_EDITMESH_MAP,
-	BMOP_FROM_EDITMESH_TOTSLOT,
-};
-
-/*bmesh_to_editmesh*/
-#define BMOP_TO_EDITMESH		4
-
-/*bmesh->editmesh op*/
-enum {
-	BMOP_TO_EDITMESH_EMOUT, /*emout*/
-	BMOP_TO_EDITMESH_TOTSLOT,
-};
-
-/*esubd*/
-#define BMOP_ESUBDIVIDE			5
-
-/*edge subdivide op*/
-enum {
-	BMOP_ESUBDIVIDE_EDGES, /*edges*/
-	BMOP_ESUBDIVIDE_NUMCUTS, /*numcuts*/
-
-	//beauty flag in esubdivide
-	BMOP_ESUBDIVIDE_FLAG, /*flag*/
-	BMOP_ESUBDIVIDE_RADIUS, /*radius*/
-
-	BMOP_ESUBDIVIDE_CUSTOMFILL_FACEMAP, /*custompatterns*/
-	BMOP_ESUBDIVIDE_PERCENT_EDGEMAP, /*edgepercents*/
-
-	/*inner verts/new faces of completely filled faces, e.g.
-	  fully selected face.*/
-	BMOP_ESUBDIVIDE_INNER_MULTOUT, /*outinner*/
-
-	/*new edges and vertices from splitting original edges,
-	  doesn't include edges creating by connecting verts.*/
-	BMOP_ESUBDIVIDE_SPLIT_MULTOUT, /*outsplit*/	
-	BMOP_ESUBDIVIDE_TOTSLOT,
-};
-/*
-SUBDIV_SELECT_INNER
-SUBDIV_SELECT_ORIG
-SUBDIV_SELECT_INNER_SEL
-SUBDIV_SELECT_LOOPCUT
-DOUBLEOPFILL
-*/
-
-/*triangulate*/
-#define BMOP_TRIANGULATE		6
-
-/*triangle tesselator op*/
-enum {
-	BMOP_TRIANG_FACEIN, /*faces*/
-	BMOP_TRIANG_NEW_EDGES, /*edgeout*/
-	BMOP_TRIANG_NEW_FACES, /*faceout*/
-	BMOP_TRIANG_TOTSLOT,
-};
-
-/*dissolvefaces*/
-#define BMOP_DISSOLVE_FACES		7
-
-/*dissolve faces*/
-enum {
-	BMOP_DISFACES_FACEIN,
-	//list of faces that comprise regions of split faces
-	BMOP_DISFACES_REGIONOUT,
-	BMOP_DISFACES_TOTSLOT,
-};
-
-/*dissolveverts*/
-#define BMOP_DISSOLVE_VERTS		8
-
-/*dissolve verts*/
-enum {
-	BMOP_DISVERTS_VERTIN, /*verts*/
-	BMOP_DISVERTS_TOTSLOT,
-};
-
-/*makefgon*/
-#define BMOP_MAKE_FGONS			9
-
-#define BMOP_MAKE_FGONS_TOTSLOT	0
-
-/*extrudefaceregion*/
-#define BMOP_EXTRUDE_EDGECONTEXT	10
-enum {
-	BMOP_EXFACE_EDGEFACEIN, /*edgefacein*/
-	
-	//exclude edges from skirt connecting
-	BMOP_EXFACE_EXCLUDEMAP,  /*exclude*/
-	
-	//new geometry
-	BMOP_EXFACE_MULTOUT,  /*geomout*/
-	BMOP_EXFACE_TOTSLOT,
-};
-
-/*connectverts*/
-#define BMOP_CONNECT_VERTS		11
-enum {
-	BM_CONVERTS_VERTIN, /*verts*/
-	BM_CONVERTS_EDGEOUT, /*edgeout*/
-	BM_CONVERTS_TOTSLOT
-};
-
-/*keep this updated!*/
-#define BMOP_TOTAL_OPS			12
-/*-------------------------------end operator defines------------------------*/
-
-extern BMOpDefine *opdefines[];
-extern int bmesh_total_ops;
-
-/*------specific operator helper functions-------*/
-
-/*executes the duplicate operation, feeding elements of 
-  type flag etypeflag and header flag flag to it.  note,
-  to get more useful information (such as the mapping from
-  original to new elements) you should run the dupe op manually.*/
-struct Object;
-struct EditMesh;
-
-void BMOP_DupeFromFlag(struct BMesh *bm, int etypeflag, int flag);
-void BM_esubdivideflag(struct Object *obedit, struct BMesh *bm, int selflag, float rad, 
-	       int flag, int numcuts, int seltype);
-void BM_extrudefaceflag(BMesh *bm, int flag);
-
-/*this next one return 1 if they did anything, or zero otherwise.
-  they're kindof a hackish way to integrate with fkey, until
-  such time as fkey is completely bmeshafied.*/
-/*this doesn't display errors to the user, btw*/
-int BM_ConnectVerts(struct EditMesh *em, int flag);
-
-#endif
+#ifndef BM_OPERATORS_H
+#define BM_OPERATORS_H
+
+/*slot names and operator names appear in comments next to/above tbeir
+  enumeration/define value*/
+
+/*------------begin operator defines (see bmesh_opdefines.c too)------------*/
+
+/*split*/
+#define BMOP_SPLIT				0
+
+/*the split operator.  splits geometry from the mesh.*/
+enum {
+	BMOP_SPLIT_MULTIN, /*geom*/
+	BMOP_SPLIT_MULTOUT, /*geomout*/
+
+	//bounding edges of split faces
+	BMOP_SPLIT_BOUNDS_EDGEMAP, /*boundarymap*/
+	BMOP_SPLIT_ISOLATED_VERTS_MAP, /*isovertmap*/
+	BMOP_SPLIT_TOTSLOT,
+};
+
+/*dupe*/
+#define BMOP_DUPE	1
+
+/*duplicates input geometry, and creates a bounds mapping between old/new
+  edges along the boundary.*/
+enum {
+	BMOP_DUPE_MULTIN, /*geom*/
+	BMOP_DUPE_ORIG, /*origout*/
+	BMOP_DUPE_NEW, /*newout*/
+	/*we need a map for verts duplicated not connected
+	  to any faces, too.*/	
+	BMOP_DUPE_BOUNDS_EDGEMAP, /*boundarymap*/
+	BMOP_DUPE_ISOLATED_VERTS_MAP, /*isovertmap*/
+	BMOP_DUPE_TOTSLOT
+};
+
+/*del*/
+#define BMOP_DEL	2
+
+/*deletes input geometry, using on of several deletion methods
+  specified by context.*/
+enum {
+	BMOP_DEL_MULTIN, /*geom*/
+	BMOP_DEL_CONTEXT, /*context*/
+	BMOP_DEL_TOTSLOT,
+};
+
+/*context slot values*/
+#define DEL_VERTS		1
+#define DEL_EDGES		2
+#define DEL_ONLYFACES	3
+#define DEL_EDGESFACES	4
+#define DEL_FACES		5
+#define DEL_ALL			6
+#define DEL_ONLYTAGGED		7
+
+/*editmesh_to_bmesh*/
+#define BMOP_FROM_EDITMESH		3
+
+/*editmesh->bmesh op*/
+enum {
+	BMOP_FROM_EDITMESH_EM, /*em*/
+	
+	/*maps old elements to new ones.
+	 coud do new elements to old too,
+	 in the future*/
+	BMOP_FROM_EDITMESH_MAP,
+	BMOP_FROM_EDITMESH_TOTSLOT,
+};
+
+/*bmesh_to_editmesh*/
+#define BMOP_TO_EDITMESH		4
+
+/*bmesh->editmesh op*/
+enum {
+	BMOP_TO_EDITMESH_EMOUT, /*emout*/
+	BMOP_TO_EDITMESH_TOTSLOT,
+};
+
+/*esubd*/
+#define BMOP_ESUBDIVIDE			5
+
+/*edge subdivide op*/
+enum {
+	BMOP_ESUBDIVIDE_EDGES, /*edges*/
+	BMOP_ESUBDIVIDE_NUMCUTS, /*numcuts*/
+
+	//beauty flag in esubdivide
+	BMOP_ESUBDIVIDE_FLAG, /*flag*/
+	BMOP_ESUBDIVIDE_RADIUS, /*radius*/
+
+	BMOP_ESUBDIVIDE_CUSTOMFILL_FACEMAP, /*custompatterns*/
+	BMOP_ESUBDIVIDE_PERCENT_EDGEMAP, /*edgepercents*/
+
+	/*inner verts/new faces of completely filled faces, e.g.
+	  fully selected face.*/
+	BMOP_ESUBDIVIDE_INNER_MULTOUT, /*outinner*/
+
+	/*new edges and vertices from splitting original edges,
+	  doesn't include edges creating by connecting verts.*/
+	BMOP_ESUBDIVIDE_SPLIT_MULTOUT, /*outsplit*/	
+	BMOP_ESUBDIVIDE_TOTSLOT,
+};
+/*
+SUBDIV_SELECT_INNER
+SUBDIV_SELECT_ORIG
+SUBDIV_SELECT_INNER_SEL
+SUBDIV_SELECT_LOOPCUT
+DOUBLEOPFILL
+*/
+
+/*triangulate*/
+#define BMOP_TRIANGULATE		6
+
+/*triangle tesselator op*/
+enum {
+	BMOP_TRIANG_FACEIN, /*faces*/
+	BMOP_TRIANG_NEW_EDGES, /*edgeout*/
+	BMOP_TRIANG_NEW_FACES, /*faceout*/
+	
+	/*facemap, maps new faces to old one.  since triangulator
+	  uses only split face, the original ngon face is still there,
+	  though it's just another triangle now.*/
+	BMOP_TRIANG_FACEMAP,
+	BMOP_TRIANG_TOTSLOT,
+};
+
+/*dissolvefaces*/
+#define BMOP_DISSOLVE_FACES		7
+
+/*dissolve faces*/
+enum {
+	BMOP_DISFACES_FACEIN,
+	//list of faces that comprise regions of split faces
+	BMOP_DISFACES_REGIONOUT,
+	BMOP_DISFACES_TOTSLOT,
+};
+
+/*dissolveverts*/
+#define BMOP_DISSOLVE_VERTS		8
+
+/*dissolve verts*/
+enum {
+	BMOP_DISVERTS_VERTIN, /*verts*/
+	BMOP_DISVERTS_TOTSLOT,
+};
+
+/*makefgon*/
+#define BMOP_MAKE_FGONS			9
+
+#define BMOP_MAKE_FGONS_TOTSLOT	0
+
+/*extrudefaceregion*/
+#define BMOP_EXTRUDE_EDGECONTEXT	10
+enum {
+	BMOP_EXFACE_EDGEFACEIN, /*edgefacein*/
+	
+	//exclude edges from skirt connecting
+	BMOP_EXFACE_EXCLUDEMAP,  /*exclude*/
+	
+	//new geometry
+	BMOP_EXFACE_MULTOUT,  /*geomout*/
+	BMOP_EXFACE_TOTSLOT,
+};
+
+/*connectverts*/
+#define BMOP_CONNECT_VERTS		11
+enum {
+	BM_CONVERTS_VERTIN, /*verts*/
+	BM_CONVERTS_EDGEOUT, /*edgeout*/
+	BM_CONVERTS_TOTSLOT
+};
+
+/*keep this updated!*/
+#define BMOP_TOTAL_OPS			12
+/*-------------------------------end operator defines------------------------*/
+
+extern BMOpDefine *opdefines[];
+extern int bmesh_total_ops;
+
+/*------specific operator helper functions-------*/
+
+/*executes the duplicate operation, feeding elements of 
+  type flag etypeflag and header flag flag to it.  note,
+  to get more useful information (such as the mapping from
+  original to new elements) you should run the dupe op manually.*/
+struct Object;
+struct EditMesh;
+
+void BMOP_DupeFromFlag(struct BMesh *bm, int etypeflag, int flag);
+void BM_esubdivideflag(struct Object *obedit, struct BMesh *bm, int selflag, float rad, 
+	       int flag, int numcuts, int seltype);
+void BM_esubdivideflag_conv(struct Object *obedit, struct EditMesh *em, 
+                            int selflag, float rad, int flag, int numcuts, 
+                            int seltype);
+void BM_extrudefaceflag(BMesh *bm, int flag);
+
+/*this next one return 1 if they did anything, or zero otherwise.
+  they're kindof a hackish way to integrate with fkey, until
+  such time as fkey is completely bmeshafied.*/
+/*this doesn't display errors to the user, btw*/
+int BM_ConnectVerts(struct EditMesh *em, int flag);
+
+#endif

Modified: branches/bmesh/blender/source/blender/bmesh/intern/bmesh_opdefines.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/intern/bmesh_opdefines.c	2009-03-16 11:43:02 UTC (rev 19311)

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list