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 */

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to