diff options
Diffstat (limited to 'source/blender/nodes/geometry/nodes/node_geo_sample_nearest.cc')
-rw-r--r-- | source/blender/nodes/geometry/nodes/node_geo_sample_nearest.cc | 11 |
1 files changed, 5 insertions, 6 deletions
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 7028b013dc6..b7142bc8521 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_sample_nearest.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_sample_nearest.cc @@ -163,7 +163,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(); @@ -178,24 +178,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; |