[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [43036] branches/bmesh/blender/source/ blender: remesh now working for bmesh

Campbell Barton ideasman42 at gmail.com
Sat Dec 31 13:58:10 CET 2011


Revision: 43036
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=43036
Author:   campbellbarton
Date:     2011-12-31 12:58:03 +0000 (Sat, 31 Dec 2011)
Log Message:
-----------
remesh now working for bmesh

Modified Paths:
--------------
    branches/bmesh/blender/source/blender/blenkernel/BKE_cdderivedmesh.h
    branches/bmesh/blender/source/blender/blenkernel/intern/cdderivedmesh.c
    branches/bmesh/blender/source/blender/modifiers/intern/MOD_remesh.c

Modified: branches/bmesh/blender/source/blender/blenkernel/BKE_cdderivedmesh.h
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/BKE_cdderivedmesh.h	2011-12-31 12:03:36 UTC (rev 43035)
+++ branches/bmesh/blender/source/blender/blenkernel/BKE_cdderivedmesh.h	2011-12-31 12:58:03 UTC (rev 43036)
@@ -119,7 +119,8 @@
  */
 void CDDM_lower_num_verts(struct DerivedMesh *dm, int numVerts);
 void CDDM_lower_num_edges(struct DerivedMesh *dm, int numEdges);
-void CDDM_lower_num_faces(struct DerivedMesh *dm, int numFaces);
+void CDDM_lower_num_polys(struct DerivedMesh *dm, int numPolys);
+void CDDM_lower_num_tessfaces(DerivedMesh *dm, int numTessFaces);
 
 /* vertex/edge/face access functions
  * should always succeed if index is within bounds

Modified: branches/bmesh/blender/source/blender/blenkernel/intern/cdderivedmesh.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/cdderivedmesh.c	2011-12-31 12:03:36 UTC (rev 43035)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/cdderivedmesh.c	2011-12-31 12:58:03 UTC (rev 43036)
@@ -2601,6 +2601,14 @@
 	dm->numEdgeData = numEdges;
 }
 
+void CDDM_lower_num_tessfaces(DerivedMesh *dm, int numTessFaces)
+{
+	if (numTessFaces < dm->numTessFaceData)
+		CustomData_free_elem(&dm->faceData, numTessFaces, dm->numTessFaceData-numTessFaces);
+
+	dm->numTessFaceData = numTessFaces;
+}
+
 void CDDM_lower_num_polys(DerivedMesh *dm, int numPolys)
 {
 	if (numPolys < dm->numPolyData)

Modified: branches/bmesh/blender/source/blender/modifiers/intern/MOD_remesh.c
===================================================================
--- branches/bmesh/blender/source/blender/modifiers/intern/MOD_remesh.c	2011-12-31 12:03:36 UTC (rev 43035)
+++ branches/bmesh/blender/source/blender/modifiers/intern/MOD_remesh.c	2011-12-31 12:58:03 UTC (rev 43036)
@@ -85,9 +85,9 @@
 	mesh->co_stride = sizeof(MVert);
 	mesh->totco = dm->getNumVerts(dm);
 
-	mesh->faces = (void*)dm->getFaceArray(dm);
+	mesh->faces = (void*)dm->getTessFaceArray(dm);
 	mesh->face_stride = sizeof(MFace);
-	mesh->totface = dm->getNumFaces(dm);
+	mesh->totface = dm->getNumTessFaces(dm);
 
 	dm->getMinMax(dm, mesh->min, mesh->max);
 }
@@ -108,7 +108,7 @@
 							  "DualConOutput")))
 		return NULL;
 	
-	output->dm = CDDM_new(totvert, 0, totquad);
+	output->dm = CDDM_new(totvert, 0, totquad, 0, 0);
 	return output;
 }
 
@@ -129,9 +129,9 @@
 	DerivedMesh *dm = output->dm;
 	MFace *mface;
 	
-	assert(output->curface < dm->getNumFaces(dm));
+	assert(output->curface < dm->getNumTessFaces(dm));
 
-	mface = &CDDM_get_faces(dm)[output->curface];
+	mface = &CDDM_get_tessfaces(dm)[output->curface];
 	mface->v1 = vert_indices[0];
 	mface->v2 = vert_indices[1];
 	mface->v3 = vert_indices[2];
@@ -184,13 +184,29 @@
 					 rmd->scale,
 					 rmd->depth);
 	result = output->dm;
-	CDDM_lower_num_faces(result, output->curface);
+	CDDM_lower_num_tessfaces(result, output->curface);
 	MEM_freeN(output);
 
 	CDDM_calc_edges(result);
 	CDDM_calc_normals(result);
 
+	/* BMESH_TODO - create polygons */
+
+#if 0
+
 	return result;
+
+#else /* BMESH ONLY */
+
+	dm = CDDM_copy(result, 1); /*builds ngon faces from tess (mface) faces*/
+	CDDM_calc_normals(dm);
+	result->needsFree = 1;
+	result->release(result);
+
+	return dm;
+
+#endif
+
 }
 
 #else /* !WITH_MOD_REMESH */




More information about the Bf-blender-cvs mailing list