[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [20228] branches/bmesh/blender: NOTE: do not test.

Joseph Eagar joeedh at gmail.com
Sat May 16 18:18:08 CEST 2009


Revision: 20228
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=20228
Author:   joeedh
Date:     2009-05-16 18:18:08 +0200 (Sat, 16 May 2009)

Log Message:
-----------
NOTE: do not test.  work-in-progress commit with editmesh ripped out and replaced with bmesh.  this is not usable by any means.  for those who read through this, note the design is still fairly messy in places, and fyi BMTessMesh is the replacement for EditMesh, I need to rename it to BMEditMesh.

Modified Paths:
--------------
    branches/bmesh/blender/projectfiles_vc9/blender/blenkernel/BKE_blenkernel.vcproj
    branches/bmesh/blender/source/blender/blenkernel/BKE_DerivedMesh.h
    branches/bmesh/blender/source/blender/blenkernel/BKE_cdderivedmesh.h
    branches/bmesh/blender/source/blender/blenkernel/BKE_customdata.h
    branches/bmesh/blender/source/blender/blenkernel/BKE_modifier.h
    branches/bmesh/blender/source/blender/blenkernel/BKE_utildefines.h
    branches/bmesh/blender/source/blender/blenkernel/SConscript
    branches/bmesh/blender/source/blender/blenkernel/intern/DerivedMesh.c
    branches/bmesh/blender/source/blender/blenkernel/intern/anim.c
    branches/bmesh/blender/source/blender/blenkernel/intern/cdderivedmesh.c
    branches/bmesh/blender/source/blender/blenkernel/intern/customdata.c
    branches/bmesh/blender/source/blender/blenkernel/intern/mesh.c
    branches/bmesh/blender/source/blender/blenkernel/intern/modifier.c
    branches/bmesh/blender/source/blender/blenkernel/intern/object.c
    branches/bmesh/blender/source/blender/blenkernel/intern/shrinkwrap.c
    branches/bmesh/blender/source/blender/blenloader/intern/readfile.c
    branches/bmesh/blender/source/blender/bmesh/bmesh.h
    branches/bmesh/blender/source/blender/bmesh/bmesh_iterators.h
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_construct.c
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_iterators.c
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_mesh.c
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_mods.c
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_polygon.c
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_queries.c
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_to_editmesh.c
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_walkers.c
    branches/bmesh/blender/source/blender/bmesh/intern/editmesh_to_bmesh.c
    branches/bmesh/blender/source/blender/bmesh/operators/bmesh_dupeops.c
    branches/bmesh/blender/source/blender/bmesh/operators/dissolveops.c
    branches/bmesh/blender/source/blender/bmesh/operators/extrudeops.c
    branches/bmesh/blender/source/blender/bmesh/operators/subdivideop.c
    branches/bmesh/blender/source/blender/editors/armature/reeb.c
    branches/bmesh/blender/source/blender/editors/include/ED_mesh.h
    branches/bmesh/blender/source/blender/editors/include/ED_view3d.h
    branches/bmesh/blender/source/blender/editors/mesh/bmeshutils.c
    branches/bmesh/blender/source/blender/editors/mesh/editmesh.c
    branches/bmesh/blender/source/blender/editors/mesh/editmesh_add.c
    branches/bmesh/blender/source/blender/editors/mesh/editmesh_loop.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/mesh/meshtools.c
    branches/bmesh/blender/source/blender/editors/object/SConscript
    branches/bmesh/blender/source/blender/editors/object/object_edit.c
    branches/bmesh/blender/source/blender/editors/screen/screen_ops.c
    branches/bmesh/blender/source/blender/editors/space_view3d/SConscript
    branches/bmesh/blender/source/blender/editors/space_view3d/drawmesh.c
    branches/bmesh/blender/source/blender/editors/space_view3d/drawobject.c
    branches/bmesh/blender/source/blender/editors/space_view3d/view3d_select.c
    branches/bmesh/blender/source/blender/editors/space_view3d/view3d_snap.c
    branches/bmesh/blender/source/blender/editors/transform/SConscript
    branches/bmesh/blender/source/blender/editors/transform/transform_conversions.c
    branches/bmesh/blender/source/blender/editors/transform/transform_generics.c
    branches/bmesh/blender/source/blender/editors/transform/transform_orientations.c
    branches/bmesh/blender/source/blender/editors/transform/transform_snap.c
    branches/bmesh/blender/source/blender/editors/util/ed_util.c
    branches/bmesh/blender/source/blender/editors/uvedit/uvedit_draw.c
    branches/bmesh/blender/source/blender/makesdna/DNA_mesh_types.h

Added Paths:
-----------
    branches/bmesh/blender/source/blender/blenkernel/BKE_tessmesh.h
    branches/bmesh/blender/source/blender/blenkernel/intern/editderivedbmesh.c
    branches/bmesh/blender/source/blender/editors/mesh/bmeshutils_mods.c

Modified: branches/bmesh/blender/projectfiles_vc9/blender/blenkernel/BKE_blenkernel.vcproj
===================================================================
--- branches/bmesh/blender/projectfiles_vc9/blender/blenkernel/BKE_blenkernel.vcproj	2009-05-16 13:56:40 UTC (rev 20227)
+++ branches/bmesh/blender/projectfiles_vc9/blender/blenkernel/BKE_blenkernel.vcproj	2009-05-16 16:18:08 UTC (rev 20228)
@@ -594,6 +594,10 @@
 				>
 			</File>
 			<File
+				RelativePath="..\..\..\source\blender\blenkernel\intern\editderivedbmesh.c"
+				>
+			</File>
+			<File
 				RelativePath="..\..\..\source\blender\blenkernel\intern\effect.c"
 				>
 			</File>
@@ -1051,6 +1055,10 @@
 				>
 			</File>
 			<File
+				RelativePath="..\..\..\source\blender\blenkernel\BKE_tessmesh.h"
+				>
+			</File>
+			<File
 				RelativePath="..\..\..\source\blender\blenkernel\BKE_text.h"
 				>
 			</File>

Modified: branches/bmesh/blender/source/blender/blenkernel/BKE_DerivedMesh.h
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/BKE_DerivedMesh.h	2009-05-16 13:56:40 UTC (rev 20227)
+++ branches/bmesh/blender/source/blender/blenkernel/BKE_DerivedMesh.h	2009-05-16 16:18:08 UTC (rev 20228)
@@ -52,11 +52,12 @@
 struct Object;
 struct Scene;
 struct Mesh;
-struct EditMesh;
+struct BMTessMesh;
 struct ModifierData;
 struct MCol;
 struct ColorBand;
 struct GPUVertexAttribs;
+struct BMTessMesh;
 
 /* number of sub-elements each mesh element has (for interpolation) */
 #define SUB_ELEMS_VERT 0
@@ -432,6 +433,9 @@
 DerivedMesh *mesh_create_derived_render(struct Scene *scene, struct Object *ob,
                                         CustomDataMask dataMask);
 
+DerivedMesh *getEditDerivedBMesh(struct BMTessMesh *em, struct Object *ob,
+                                           float (*vertexCos)[3]);
+
 DerivedMesh *mesh_create_derived_index_render(struct Scene *scene, struct Object *ob, CustomDataMask dataMask, int index);
 
 		/* same as above but wont use render settings */
@@ -444,17 +448,17 @@
                                                   float (*vertCos)[3],
                                                   CustomDataMask dataMask);
 
-DerivedMesh *editmesh_get_derived_base(struct Object *, struct EditMesh *em);
-DerivedMesh *editmesh_get_derived_cage(struct Scene *scene, struct Object *, 
-									   struct EditMesh *em, CustomDataMask dataMask);
-DerivedMesh *editmesh_get_derived_cage_and_final(struct Scene *scene, struct Object *, 
-												 struct EditMesh *em, DerivedMesh **final_r,
+DerivedMesh *editbmesh_get_derived_base(struct Object *, struct BMTessMesh *em);
+DerivedMesh *editbmesh_get_derived_cage(struct Scene *scene, struct Object *, 
+									   struct BMTessMesh *em, CustomDataMask dataMask);
+DerivedMesh *editbmesh_get_derived_cage_and_final(struct Scene *scene, struct Object *, 
+						 struct BMTessMesh *em, DerivedMesh **final_r,
                                                  CustomDataMask dataMask);
-void makeDerivedMesh(struct Scene *scene, struct Object *ob, struct EditMesh *em, CustomDataMask dataMask);
+void makeDerivedMesh(struct Scene *scene, struct Object *ob, struct BMTessMesh *em, CustomDataMask dataMask);
 
 /* returns an array of deform matrices for crazyspace correction, and the
    number of modifiers left */
-int editmesh_get_first_deform_matrices(struct Object *, struct EditMesh *em, float (**deformmats)[3][3],
+int editbmesh_get_first_deform_matrices(struct Object *, struct BMTessMesh *em, float (**deformmats)[3][3],
                                        float (**deformcos)[3]);
 
 void weight_to_rgb(float input, float *fr, float *fg, float *fb);

Modified: branches/bmesh/blender/source/blender/blenkernel/BKE_cdderivedmesh.h
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/BKE_cdderivedmesh.h	2009-05-16 13:56:40 UTC (rev 20227)
+++ branches/bmesh/blender/source/blender/blenkernel/BKE_cdderivedmesh.h	2009-05-16 16:18:08 UTC (rev 20228)
@@ -38,6 +38,7 @@
 #include "BKE_DerivedMesh.h"
 
 struct DerivedMesh;
+struct BMTessMesh;
 struct EditMesh;
 struct Mesh;
 struct Object;
@@ -54,6 +55,9 @@
 /* creates a CDDerivedMesh from the given EditMesh */
 struct DerivedMesh *CDDM_from_editmesh(struct EditMesh *em, struct Mesh *me);
 
+/* creates a CDDerivedMesh from the given BMTessMesh */
+DerivedMesh *CDDM_from_BMTessMesh(struct BMTessMesh *em, struct Mesh *me);
+
 /* Copies the given DerivedMesh with verts, faces & edges stored as
  * custom element data.
  */

Modified: branches/bmesh/blender/source/blender/blenkernel/BKE_customdata.h
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/BKE_customdata.h	2009-05-16 13:56:40 UTC (rev 20227)
+++ branches/bmesh/blender/source/blender/blenkernel/BKE_customdata.h	2009-05-16 16:18:08 UTC (rev 20228)
@@ -179,6 +179,7 @@
  * returns NULL if there is no layer of type
  */
 void *CustomData_get(const struct CustomData *data, int index, int type);
+void *CustomData_get_n(const struct CustomData *data, int type, int index, int n);
 void *CustomData_em_get(const struct CustomData *data, void *block, int type);
 void *CustomData_em_get_n(const struct CustomData *data, void *block, int type, int n);
 void *CustomData_bmesh_get(const struct CustomData *data, void *block, int type);

Modified: branches/bmesh/blender/source/blender/blenkernel/BKE_modifier.h
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/BKE_modifier.h	2009-05-16 13:56:40 UTC (rev 20227)
+++ branches/bmesh/blender/source/blender/blenkernel/BKE_modifier.h	2009-05-16 16:18:08 UTC (rev 20228)
@@ -43,6 +43,7 @@
 struct LinkNode;
 struct bArmature;
 struct ModifierData;
+struct BMTessMesh;
 
 typedef enum {
 	/* Should not be used, only for None modifier type */
@@ -130,13 +131,13 @@
 	 */
 	void (*deformVertsEM)(
 	            struct ModifierData *md, struct Object *ob,
-	            struct EditMesh *editData, struct DerivedMesh *derivedData,
+	            struct BMTessMesh *editData, struct DerivedMesh *derivedData,
 	            float (*vertexCos)[3], int numVerts);
 
 	/* Set deform matrix per vertex for crazyspace correction */
 	void (*deformMatricesEM)(
 	            struct ModifierData *md, struct Object *ob,
-	            struct EditMesh *editData, struct DerivedMesh *derivedData,
+	            struct BMTessMesh *editData, struct DerivedMesh *derivedData,
 	            float (*vertexCos)[3], float (*defMats)[3][3], int numVerts);
 
 	/********************* Non-deform modifier functions *********************/
@@ -174,7 +175,7 @@
 	 */
 	struct DerivedMesh *(*applyModifierEM)(
 	                            struct ModifierData *md, struct Object *ob,
-	                            struct EditMesh *editData,
+	                            struct BMTessMesh *editData,
 	                            struct DerivedMesh *derivedData);
 
 

Added: branches/bmesh/blender/source/blender/blenkernel/BKE_tessmesh.h
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/BKE_tessmesh.h	                        (rev 0)
+++ branches/bmesh/blender/source/blender/blenkernel/BKE_tessmesh.h	2009-05-16 16:18:08 UTC (rev 20228)
@@ -0,0 +1,58 @@
+#include "bmesh.h"
+
+struct BMesh;
+struct BMLoop;
+struct DerivedMesh;
+struct BMFace;
+
+typedef struct BMEditSelection
+{
+	struct BMEditSelection *next, *prev;
+	short type;
+	void *data;
+} BMEditSelection;
+
+/*this structure replaces EditMesh.
+ 
+  through this, you get access to both the edit bmesh,
+  it's tesselation, and various stuff that doesn't belong in the BMesh
+  struct itself.
+  
+  the entire derivedmesh and modifier system works with this structure,
+  and not BMesh.  Mesh->editbmesh will store a pointer to this structure.*/
+typedef struct BMTessMesh {
+	struct BMesh *bm;
+	
+	/*we store tesselations as triplets of three loops,
+	  which each define a triangle.*/
+	struct BMLoop *(*looptris)[3];
+	int tottri;
+
+	/*derivedmesh stuff*/
+	struct DerivedMesh *derivedFinal, *derivedCage;
+	int lastDataMask;
+	
+	/*retopo data pointer*/
+	struct RetopoPaintData *retopo_paint_data;
+
+	/*active face pointer*/
+	struct BMFace *act_face; 
+
+	/*index tables, to map indices to elements via
+	  EDBM_init_index_arrays and associated functions.  don't
+	  touch this or read it directly.*/
+	struct BMVert **vert_index;
+	struct BMEdge **edge_index;
+	struct BMFace **face_index;
+	
+	/*selection order list*/
+	ListBase selected;
+
+	/*selection mode*/
+	int selectmode, totfacesel, totvertsel, totedgesel;
+} BMTessMesh;
+
+void TM_RecalcTesselation(BMTessMesh *tm);
+BMTessMesh *TM_Create(BMesh *bm);
+BMTessMesh *TM_Copy(BMTessMesh *tm);
+void TM_Free(BMTessMesh *em);

Modified: branches/bmesh/blender/source/blender/blenkernel/BKE_utildefines.h
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/BKE_utildefines.h	2009-05-16 13:56:40 UTC (rev 20227)
+++ branches/bmesh/blender/source/blender/blenkernel/BKE_utildefines.h	2009-05-16 16:18:08 UTC (rev 20228)
@@ -225,6 +225,12 @@
 
 #define V_DECLARE(vec) int _##vec##_count=0; void *_##vec##_tmp
 
+/*in the future, I plan on having V_DECLARE allocate stack memory it'll
+  use at first, and switch over to heap when it needs more.  that'll mess
+  up cases where you'd want to use this API to build a dynamic list for
+  non-local use, so all such cases should use this macro.*/
+#define V_DYNDECLARE(vec) V_DECLARE(vec)
+
 /*this returns the entire size of the array, including any buffering.*/
 #define V_SIZE(vec) ((signed int)((vec)==NULL ? 0 : MEM_allocN_len(vec) / sizeof(*vec)))
 

Modified: branches/bmesh/blender/source/blender/blenkernel/SConscript
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/SConscript	2009-05-16 13:56:40 UTC (rev 20227)
+++ branches/bmesh/blender/source/blender/blenkernel/SConscript	2009-05-16 16:18:08 UTC (rev 20228)
@@ -11,6 +11,7 @@
 incs += ' #/intern/bmfont'
 incs += ' #/intern/opennl/extern #/intern/bsp/extern'
 incs += ' ../gpu #/extern/glew/include'
+incs += ' ../bmesh'
 
 incs += ' ' + env['BF_OPENGL_INC']
 incs += ' ' + env['BF_ZLIB_INC']


@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list