[Bf-blender-cvs] [acb8ac6870e] refactor-mesh-position-generic: Cleanup

Hans Goudey noreply at git.blender.org
Wed Sep 28 06:40:12 CEST 2022


Commit: acb8ac6870e831b0ebf61cef79ff993e8849fc37
Author: Hans Goudey
Date:   Tue Sep 27 23:40:03 2022 -0500
Branches: refactor-mesh-position-generic
https://developer.blender.org/rBacb8ac6870e831b0ebf61cef79ff993e8849fc37

Cleanup

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

M	source/blender/blenkernel/intern/DerivedMesh.cc
M	source/blender/blenkernel/intern/cloth.c
M	source/blender/nodes/geometry/nodes/node_geo_sample_nearest.cc

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

diff --git a/source/blender/blenkernel/intern/DerivedMesh.cc b/source/blender/blenkernel/intern/DerivedMesh.cc
index 4be80145eb6..2e2a917821d 100644
--- a/source/blender/blenkernel/intern/DerivedMesh.cc
+++ b/source/blender/blenkernel/intern/DerivedMesh.cc
@@ -668,7 +668,8 @@ static void mesh_calc_modifiers(struct Depsgraph *depsgraph,
 
   BLI_assert((mesh_input->id.tag & LIB_TAG_COPIED_ON_WRITE_EVAL_RESULT) == 0);
 
-  /* TODO(Hans): Remove use of "deformed_verts" in mesh modifier stack. */
+  /* TODO: Remove use of "deformed_verts" in mesh modifier stack since mesh positions are now in a
+   * contiguous array. */
   float(*deformed_verts)[3] = nullptr;
   int num_deformed_verts = mesh_input->totvert;
   bool isPrevDeform = false;
diff --git a/source/blender/blenkernel/intern/cloth.c b/source/blender/blenkernel/intern/cloth.c
index 31f3353c91d..711b1179bd2 100644
--- a/source/blender/blenkernel/intern/cloth.c
+++ b/source/blender/blenkernel/intern/cloth.c
@@ -251,7 +251,6 @@ static int do_step_cloth(
   ClothVertex *verts = NULL;
   Cloth *cloth;
   ListBase *effectors = NULL;
-  MVert *mvert;
   uint i = 0;
   int ret = 0;
   bool vert_mass_changed = false;
diff --git a/source/blender/nodes/geometry/nodes/node_geo_sample_nearest.cc b/source/blender/nodes/geometry/nodes/node_geo_sample_nearest.cc
index 95f7c7add3a..54f7954abd5 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_sample_nearest.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_sample_nearest.cc
@@ -165,7 +165,7 @@ static void get_closest_mesh_corners(const Mesh &mesh,
                                      const MutableSpan<float> r_distances_sq,
                                      const MutableSpan<float3> r_positions)
 {
-  const Span<MVert> verts = mesh.verts();
+  const Span<float3> mesh_positions = mesh.positions();
   const Span<MPoly> polys = mesh.polys();
   const Span<MLoop> loops = mesh.loops();
 
@@ -180,24 +180,23 @@ static void get_closest_mesh_corners(const Mesh &mesh,
 
     /* Find the closest vertex in the polygon. */
     float min_distance_sq = FLT_MAX;
-    const MVert *closest_mvert;
+    int closest_vert_index = 0;
     int closest_loop_index = 0;
     for (const int loop_index : IndexRange(poly.loopstart, poly.totloop)) {
       const MLoop &loop = loops[loop_index];
       const int vertex_index = loop.v;
-      const MVert &mvert = verts[vertex_index];
-      const float distance_sq = math::distance_squared(position, float3(mvert.co));
+      const float distance_sq = math::distance_squared(position, mesh_positions[vertex_index]);
       if (distance_sq < min_distance_sq) {
         min_distance_sq = distance_sq;
         closest_loop_index = loop_index;
-        closest_mvert = &mvert;
+        closest_vert_index = vertex_index;
       }
     }
     if (!r_corner_indices.is_empty()) {
       r_corner_indices[i] = closest_loop_index;
     }
     if (!r_positions.is_empty()) {
-      r_positions[i] = closest_mvert->co;
+      r_positions[i] = mesh_positions[closest_vert_index];
     }
     if (!r_distances_sq.is_empty()) {
       r_distances_sq[i] = min_distance_sq;



More information about the Bf-blender-cvs mailing list