[Bf-blender-cvs] [fc9e9214953] master: Simplify the quadriflow manifold mesh function for loops

Sebastian Parborg noreply at git.blender.org
Mon Oct 7 18:13:42 CEST 2019


Commit: fc9e921495312ace23af11a69e738a8a7adbaeed
Author: Sebastian Parborg
Date:   Mon Oct 7 18:09:38 2019 +0200
Branches: master
https://developer.blender.org/rBfc9e921495312ace23af11a69e738a8a7adbaeed

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.

===================================================================

M	source/blender/editors/object/object_remesh.c

===================================================================

diff --git a/source/blender/editors/object/object_remesh.c b/source/blender/editors/object/object_remesh.c
index 86d41056634..a395a7013fe 100644
--- a/source/blender/editors/object/object_remesh.c
+++ b/source/blender/editors/object/object_remesh.c
@@ -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;
     }
   }



More information about the Bf-blender-cvs mailing list