Simplify the quadriflow manifold mesh function for loops

No need to iterate over all polygons if we just want to iterate over all
face loops anyways.
This commit is contained in:
Sebastian Parborg 2019-10-07 18:09:38 +02:00
parent 0c0d2f3581
commit fc9e921495
1 changed files with 14 additions and 19 deletions

View File

@ -219,7 +219,6 @@ static bool mesh_is_manifold_consistent(Mesh *mesh)
bool is_manifold_consistent = true;
const MLoop *mloop = mesh->mloop;
const MPoly *mpoly = mesh->mpoly;
char *edge_faces = (char *)MEM_callocN(mesh->totedge * sizeof(char), "remesh_manifold_check");
int *edge_vert = (int *)MEM_malloc_arrayN(
mesh->totedge, sizeof(unsigned int), "remesh_consistent_check");
@ -228,25 +227,21 @@ static bool mesh_is_manifold_consistent(Mesh *mesh)
edge_vert[i] = -1;
}
for (unsigned int poly_index = 0; poly_index < mesh->totpoly && is_manifold_consistent;
poly_index++) {
const MPoly *poly = &mpoly[poly_index];
for (unsigned int corner = 0; corner < poly->totloop; corner++) {
const MLoop *loop = &mloop[poly->loopstart + corner];
edge_faces[loop->e] += 1;
if (edge_faces[loop->e] > 2) {
is_manifold_consistent = false;
break;
}
for (unsigned int loop_idx = 0; loop_idx < mesh->totloop; loop_idx++) {
const MLoop *loop = &mloop[loop_idx];
edge_faces[loop->e] += 1;
if (edge_faces[loop->e] > 2) {
is_manifold_consistent = false;
break;
}
if (edge_vert[loop->e] == -1) {
edge_vert[loop->e] = loop->v;
}
else if (edge_vert[loop->e] == loop->v) {
/* Mesh has flips in the surface so it is non consistent */
is_manifold_consistent = false;
break;
}
if (edge_vert[loop->e] == -1) {
edge_vert[loop->e] = loop->v;
}
else if (edge_vert[loop->e] == loop->v) {
/* Mesh has flips in the surface so it is non consistent */
is_manifold_consistent = false;
break;
}
}