remesh now working for bmesh
This commit is contained in:
@@ -119,7 +119,8 @@ void CDDM_recalc_tesselation(struct DerivedMesh *dm);
|
||||
*/
|
||||
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
|
||||
|
||||
@@ -2601,6 +2601,14 @@ void CDDM_lower_num_edges(DerivedMesh *dm, int numEdges)
|
||||
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)
|
||||
|
||||
@@ -85,9 +85,9 @@ static void init_dualcon_mesh(DualConInput *mesh, DerivedMesh *dm)
|
||||
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 @@ static void *dualcon_alloc_output(int totvert, int totquad)
|
||||
"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 @@ static void dualcon_add_quad(void *output_v, const int vert_indices[4])
|
||||
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 @@ static DerivedMesh *applyModifier(ModifierData *md,
|
||||
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 */
|
||||
|
||||
Reference in New Issue
Block a user