[Bf-blender-cvs] [a495b782dba] refactor-mesh-corners-generic: 68 Remaining uses of MLoop

Hans Goudey noreply at git.blender.org
Tue Dec 6 06:42:36 CET 2022


Commit: a495b782dba25ea82d38321b2a9d3170ea9433be
Author: Hans Goudey
Date:   Mon Dec 5 23:42:26 2022 -0600
Branches: refactor-mesh-corners-generic
https://developer.blender.org/rBa495b782dba25ea82d38321b2a9d3170ea9433be

68 Remaining uses of MLoop

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

M	source/blender/blenkernel/BKE_mesh.h
M	source/blender/blenkernel/BKE_mesh_types.h
M	source/blender/blenkernel/BKE_pbvh.h
M	source/blender/blenkernel/BKE_shrinkwrap.h
M	source/blender/blenkernel/intern/mesh_fair.cc
M	source/blender/blenkernel/intern/mesh_remesh_voxel.cc
M	source/blender/blenkernel/intern/multires.cc
M	source/blender/blenkernel/intern/pbvh.cc
M	source/blender/blenkernel/intern/shrinkwrap.cc
M	source/blender/blenkernel/intern/volume_to_mesh.cc
M	source/blender/draw/intern/draw_pbvh.cc
M	source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_lines_adjacency.cc
M	source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_edituv_stretch_angle.cc
M	source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_edituv_stretch_area.cc
M	source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_tan.cc
M	source/blender/editors/sculpt_paint/paint_vertex.cc
M	source/blender/editors/sculpt_paint/sculpt.cc
M	source/blender/editors/sculpt_paint/sculpt_face_set.cc
M	source/blender/geometry/intern/mesh_merge_by_distance.cc
M	source/blender/geometry/intern/mesh_to_volume.cc
M	source/blender/io/alembic/intern/abc_customdata.h
M	source/blender/io/wavefront_obj/importer/obj_import_objects.hh
M	source/blender/makesdna/DNA_meshdata_types.h
M	source/blender/modifiers/intern/MOD_laplaciansmooth.c
M	source/blender/modifiers/intern/MOD_multires.cc
M	source/blender/modifiers/intern/MOD_ocean.c
M	source/blender/modifiers/intern/MOD_solidify_extrude.c
M	source/blender/modifiers/intern/MOD_solidify_nonmanifold.c

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

diff --git a/source/blender/blenkernel/BKE_mesh.h b/source/blender/blenkernel/BKE_mesh.h
index 5b841f0de3c..62dd6cb6d1c 100644
--- a/source/blender/blenkernel/BKE_mesh.h
+++ b/source/blender/blenkernel/BKE_mesh.h
@@ -771,8 +771,6 @@ void BKE_mesh_mdisp_flip(struct MDisps *md, bool use_loop_mdisp_flip);
  * (keeping the same vertex as 'start point').
  *
  * \param mpoly: the polygon to flip.
- * \param mloop: the full loops array.
- * \param ldata: the loops custom data.
  */
 void BKE_mesh_polygon_flip_ex(const struct MPoly *mpoly,
                               int *corner_verts,
diff --git a/source/blender/blenkernel/BKE_mesh_types.h b/source/blender/blenkernel/BKE_mesh_types.h
index 930c98c4e63..819551cf1a6 100644
--- a/source/blender/blenkernel/BKE_mesh_types.h
+++ b/source/blender/blenkernel/BKE_mesh_types.h
@@ -47,7 +47,7 @@ typedef enum eMeshBatchDirtyMode {
 
 /** #MeshRuntime.wrapper_type */
 typedef enum eMeshWrapperType {
-  /** Use mesh data (#Mesh.positions(), #Mesh.medge, #Mesh.mloop, #Mesh.mpoly). */
+  /** Use mesh data (#Mesh.positions(), #Mesh.medge, #Mesh.corner_verts, #Mesh.mpoly). */
   ME_WRAPPER_TYPE_MDATA = 0,
   /** Use edit-mesh data (#Mesh.edit_mesh, #MeshRuntime.edit_data). */
   ME_WRAPPER_TYPE_BMESH = 1,
diff --git a/source/blender/blenkernel/BKE_pbvh.h b/source/blender/blenkernel/BKE_pbvh.h
index 592cefceb60..17412e8bbdd 100644
--- a/source/blender/blenkernel/BKE_pbvh.h
+++ b/source/blender/blenkernel/BKE_pbvh.h
@@ -258,7 +258,7 @@ PBVH *BKE_pbvh_new(PBVHType type);
 /**
  * Do a full rebuild with on Mesh data structure.
  *
- * \note Unlike mpoly/mloop/verts, looptri is *totally owned* by PBVH
+ * \note Unlike mpoly/corner_verts/verts, looptri is *totally owned* by PBVH
  * (which means it may rewrite it if needed, see #BKE_pbvh_vert_coords_apply().
  */
 void BKE_pbvh_build_mesh(PBVH *pbvh,
diff --git a/source/blender/blenkernel/BKE_shrinkwrap.h b/source/blender/blenkernel/BKE_shrinkwrap.h
index 70065ab5961..9bfd3715009 100644
--- a/source/blender/blenkernel/BKE_shrinkwrap.h
+++ b/source/blender/blenkernel/BKE_shrinkwrap.h
@@ -75,6 +75,7 @@ typedef struct ShrinkwrapTreeData {
 
   const struct MPoly *polys;
   const float (*vert_normals)[3];
+  const int *corner_edges;
   const float (*pnors)[3];
   const float (*clnors)[3];
   ShrinkwrapBoundaryData *boundary;
diff --git a/source/blender/blenkernel/intern/mesh_fair.cc b/source/blender/blenkernel/intern/mesh_fair.cc
index 0a36c43de2d..ac6198b1c57 100644
--- a/source/blender/blenkernel/intern/mesh_fair.cc
+++ b/source/blender/blenkernel/intern/mesh_fair.cc
@@ -200,11 +200,12 @@ class MeshFairingContext : public FairingContext {
     MutableSpan<float3> positions = mesh->positions_for_write();
     medge_ = mesh->edges();
     mpoly_ = mesh->polys();
-    mloop_ = mesh->loops();
+    corner_verts_ = mesh->corner_verts();
+    corner_edges_ = mesh->corner_edges();
     BKE_mesh_vert_loop_map_create(&vlmap_,
                                   &vlmap_mem_,
                                   mpoly_.data(),
-                                  mloop_.data(),
+                                  corner_verts_.data(),
                                   mesh->totvert,
                                   mesh->totpoly,
                                   mesh->totloop);
@@ -222,7 +223,8 @@ class MeshFairingContext : public FairingContext {
       }
     }
 
-    loop_to_poly_map_ = blender::bke::mesh_topology::build_loop_to_poly_map(mpoly_, mloop_.size());
+    loop_to_poly_map_ = blender::bke::mesh_topology::build_loop_to_poly_map(mpoly_,
+                                                                            corner_verts_.size());
   }
 
   ~MeshFairingContext() override
@@ -238,8 +240,8 @@ class MeshFairingContext : public FairingContext {
     const int vert = corner_verts_[loop];
     const MPoly *p = &mpoly_[loop_to_poly_map_[loop]];
     const int corner = poly_find_loop_from_vert(p, &corner_verts_[p->loopstart], vert);
-    copy_v3_v3(r_adj_next, co_[ME_POLY_LOOP_NEXT(mloop_, p, corner)->v]);
-    copy_v3_v3(r_adj_prev, co_[ME_POLY_LOOP_PREV(mloop_, p, corner)->v]);
+    copy_v3_v3(r_adj_next, co_[corner_verts_[ME_POLY_LOOP_NEXT(p, corner)]]);
+    copy_v3_v3(r_adj_prev, co_[corner_verts_[ME_POLY_LOOP_PREV(p, corner)]]);
   }
 
   int other_vertex_index_from_loop(const int loop, const uint v) override
diff --git a/source/blender/blenkernel/intern/mesh_remesh_voxel.cc b/source/blender/blenkernel/intern/mesh_remesh_voxel.cc
index 32b561820be..a7d8b012310 100644
--- a/source/blender/blenkernel/intern/mesh_remesh_voxel.cc
+++ b/source/blender/blenkernel/intern/mesh_remesh_voxel.cc
@@ -423,7 +423,7 @@ void BKE_remesh_reproject_vertex_paint(Mesh *target, const Mesh *source)
         BKE_mesh_vert_loop_map_create(&source_lmap,
                                       &source_lmap_mem,
                                       source->polys().data(),
-                                      source->loops().data(),
+                                      source->corner_verts().data(),
                                       source->totvert,
                                       source->totpoly,
                                       source->totloop);
@@ -431,7 +431,7 @@ void BKE_remesh_reproject_vertex_paint(Mesh *target, const Mesh *source)
         BKE_mesh_vert_loop_map_create(&target_lmap,
                                       &target_lmap_mem,
                                       target->polys().data(),
-                                      target->loops().data(),
+                                      target->corner_verts().data(),
                                       target->totvert,
                                       target->totpoly,
                                       target->totloop);
diff --git a/source/blender/blenkernel/intern/multires.cc b/source/blender/blenkernel/intern/multires.cc
index c8824dc00ce..1f48f247726 100644
--- a/source/blender/blenkernel/intern/multires.cc
+++ b/source/blender/blenkernel/intern/multires.cc
@@ -1595,7 +1595,7 @@ int mdisp_rot_face_to_crn(
     float mindist = FLT_MAX;
 
     for (i = 0; i < mpoly->totloop; i++) {
-      float len = len_v3v3(nullptr, positions[mloop[mpoly->loopstart + i].v].co);
+      float len = len_v3v3(nullptr, positions[corner_verts[mpoly->loopstart + i]].co);
       if (len < mindist) {
         mindist = len;
         minS = i;
diff --git a/source/blender/blenkernel/intern/pbvh.cc b/source/blender/blenkernel/intern/pbvh.cc
index 71c3c741d40..2a0664173ae 100644
--- a/source/blender/blenkernel/intern/pbvh.cc
+++ b/source/blender/blenkernel/intern/pbvh.cc
@@ -96,7 +96,7 @@ static void pbvh_vertex_color_get(const PBVH &pbvh, PBVHVertRef vertex, float r_
     for (const int i_poly : Span(melem.indices, melem.count)) {
       const MPoly &mp = pbvh.mpoly[i_poly];
       Span<T> colors{static_cast<const T *>(pbvh.color_layer->data) + mp.loopstart, mp.totloop};
-      Span<int> poly_verts{pbvh.mloop + mp.loopstart, mp.totloop};
+      Span<int> poly_verts{pbvh.corner_verts + mp.loopstart, mp.totloop};
 
       for (const int i : IndexRange(mp.totloop)) {
         if (poly_verts[i] == index) {
@@ -129,7 +129,7 @@ static void pbvh_vertex_color_set(PBVH &pbvh, PBVHVertRef vertex, const float co
     for (const int i_poly : Span(melem.indices, melem.count)) {
       const MPoly &mp = pbvh.mpoly[i_poly];
       MutableSpan<T> colors{static_cast<T *>(pbvh.color_layer->data) + mp.loopstart, mp.totloop};
-      Span<int> poly_verts{pbvh.mloop + mp.loopstart, mp.totloop};
+      Span<int> poly_verts{pbvh.corner_verts + mp.loopstart, mp.totloop};
 
       for (const int i : IndexRange(mp.totloop)) {
         if (poly_verts[i] == index) {
diff --git a/source/blender/blenkernel/intern/shrinkwrap.cc b/source/blender/blenkernel/intern/shrinkwrap.cc
index fd08ce8dde1..a53c611b439 100644
--- a/source/blender/blenkernel/intern/shrinkwrap.cc
+++ b/source/blender/blenkernel/intern/shrinkwrap.cc
@@ -115,6 +115,7 @@ bool BKE_shrinkwrap_init_tree(
 
   data->mesh = mesh;
   data->polys = BKE_mesh_polys(mesh);
+  data->corner_edges = mesh->corner_edges().data();
   data->vert_normals = BKE_mesh_vertex_normals_ensure(mesh);
 
   if (shrinkType == MOD_SHRINKWRAP_NEAREST_VERTEX) {
@@ -191,6 +192,7 @@ static ShrinkwrapBoundaryData *shrinkwrap_build_boundary_data(Mesh *mesh)
   using namespace blender;
   const float(*positions)[3] = BKE_mesh_positions(mesh);
   const MEdge *medge = BKE_mesh_edges(mesh);
+  const Span<int> corner_verts = mesh->corner_verts();
   const Span<int> corner_edges = mesh->corner_edges();
 
   /* Count faces per edge (up to 2). */
@@ -240,7 +242,8 @@ static ShrinkwrapBoundaryData *shrinkwrap_build_boundary_data(Mesh *mesh)
 
   for (int i = 0; i < totlooptri; i++) {
     int edges[3];
-    BKE_mesh_looptri_get_real_edges(medge, mloop, &mlooptri[i], edges);
+    BKE_mesh_looptri_get_real_edges(
+        medge, corner_verts.data(), corner_edges.data(), &mlooptri[i], edges);
 
     for (int j = 0; j < 3; j++) {
       if (edges[j] >= 0 && edge_mode[edges[j]]) {
@@ -1050,7 +1053,7 @@ static void mesh_looptri_target_project(void *userdata,
     const BLI_bitmap *is_boundary = tree->boundary->edge_is_boundary;
     int edges[3];
 
-    BKE_mesh_looptri_get_real_edges(data->edge, data->loop, lt, edges);
+    BKE_mesh_looptri_get_real_edges(data->edge, data->corner_verts, tree->corner_edges, lt, edges);
 
     for (int i = 0; i < 3; i++) {
       if (edges[i] >= 0 && BLI_BITMAP_TEST(is_boundary, edges[i])) {
diff --git a/source/blender/blenkernel/intern/volume_to_mesh.cc b/source/blender/blenkernel/intern/volume_to_mesh.cc
index 864e8fb9d69..e451b6ab1f9 100644
--- a/source/blender/blenkernel/intern/volume_to_mesh.cc
+++ b/source/blender/blenkernel/intern/volume_to_mesh.cc
@@ -177,7 +177,7 @@ Mesh *volume_to_mesh(const openvdb::GridBase &grid,
                               0,
                               mesh->positions_for_write(),
                               mesh->polys_for_write(),
-                              mesh->loops_for_write());
+                              mesh->corner_verts_for_write());
 
   BKE_mesh_calc_edges(mesh, false, false);
 
diff --git a/source/blender/draw/intern/draw_pbvh.cc b/source/ble

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list