diff options
Diffstat (limited to 'source/blender/blenkernel/intern/mesh_sample.cc')
-rw-r--r-- | source/blender/blenkernel/intern/mesh_sample.cc | 36 |
1 files changed, 18 insertions, 18 deletions
diff --git a/source/blender/blenkernel/intern/mesh_sample.cc b/source/blender/blenkernel/intern/mesh_sample.cc index ed7ae8113a7..005986cb767 100644 --- a/source/blender/blenkernel/intern/mesh_sample.cc +++ b/source/blender/blenkernel/intern/mesh_sample.cc @@ -156,7 +156,7 @@ Span<float3> MeshAttributeInterpolator::ensure_barycentric_coords() } bary_coords_.reinitialize(mask_.min_array_size()); - const Span<MVert> verts = mesh_->verts(); + const Span<float3> positions = mesh_->positions(); const Span<MLoop> loops = mesh_->loops(); const Span<MLoopTri> looptris = mesh_->looptris(); @@ -169,9 +169,9 @@ Span<float3> MeshAttributeInterpolator::ensure_barycentric_coords() const int v2_index = loops[looptri.tri[2]].v; interp_weights_tri_v3(bary_coords_[i], - verts[v0_index].co, - verts[v1_index].co, - verts[v2_index].co, + positions[v0_index], + positions[v1_index], + positions[v2_index], positions_[i]); } return bary_coords_; @@ -185,7 +185,7 @@ Span<float3> MeshAttributeInterpolator::ensure_nearest_weights() } nearest_weights_.reinitialize(mask_.min_array_size()); - const Span<MVert> verts = mesh_->verts(); + const Span<float3> positions = mesh_->positions(); const Span<MLoop> loops = mesh_->loops(); const Span<MLoopTri> looptris = mesh_->looptris(); @@ -197,9 +197,9 @@ Span<float3> MeshAttributeInterpolator::ensure_nearest_weights() const int v1_index = loops[looptri.tri[1]].v; const int v2_index = loops[looptri.tri[2]].v; - const float d0 = len_squared_v3v3(positions_[i], verts[v0_index].co); - const float d1 = len_squared_v3v3(positions_[i], verts[v1_index].co); - const float d2 = len_squared_v3v3(positions_[i], verts[v2_index].co); + const float d0 = len_squared_v3v3(positions_[i], positions[v0_index]); + const float d1 = len_squared_v3v3(positions_[i], positions[v1_index]); + const float d2 = len_squared_v3v3(positions_[i], positions[v2_index]); nearest_weights_[i] = MIN3_PAIR(d0, d1, d2, float3(1, 0, 0), float3(0, 1, 0), float3(0, 0, 1)); } @@ -258,7 +258,7 @@ int sample_surface_points_spherical(RandomNumberGenerator &rng, Vector<int> &r_looptri_indices, Vector<float3> &r_positions) { - const Span<MVert> verts = mesh.verts(); + const Span<float3> positions = mesh.positions(); const Span<MLoop> loops = mesh.loops(); const Span<MLoopTri> looptris = mesh.looptris(); @@ -272,9 +272,9 @@ int sample_surface_points_spherical(RandomNumberGenerator &rng, for (const int looptri_index : looptri_indices_to_sample) { const MLoopTri &looptri = looptris[looptri_index]; - const float3 &v0 = verts[loops[looptri.tri[0]].v].co; - const float3 &v1 = verts[loops[looptri.tri[1]].v].co; - const float3 &v2 = verts[loops[looptri.tri[2]].v].co; + const float3 &v0 = positions[loops[looptri.tri[0]].v]; + const float3 &v1 = positions[loops[looptri.tri[1]].v]; + const float3 &v2 = positions[loops[looptri.tri[2]].v]; const float looptri_area = area_tri_v3(v0, v1, v2); @@ -355,7 +355,7 @@ int sample_surface_points_projected( Vector<int> &r_looptri_indices, Vector<float3> &r_positions) { - const Span<MVert> verts = mesh.verts(); + const Span<float3> positions = mesh.positions(); const Span<MLoop> loops = mesh.loops(); const Span<MLoopTri> looptris = mesh.looptris(); @@ -398,7 +398,7 @@ int sample_surface_points_projected( const float3 pos = ray_hit.co; const float3 bary_coords = compute_bary_coord_in_triangle( - verts, loops, looptris[looptri_index], pos); + positions, loops, looptris[looptri_index], pos); r_positions.append(pos); r_bary_coords.append(bary_coords); @@ -408,14 +408,14 @@ int sample_surface_points_projected( return point_count; } -float3 compute_bary_coord_in_triangle(const Span<MVert> verts, +float3 compute_bary_coord_in_triangle(const Span<float3> positions, const Span<MLoop> loops, const MLoopTri &looptri, const float3 &position) { - const float3 &v0 = verts[loops[looptri.tri[0]].v].co; - const float3 &v1 = verts[loops[looptri.tri[1]].v].co; - const float3 &v2 = verts[loops[looptri.tri[2]].v].co; + const float3 &v0 = positions[loops[looptri.tri[0]].v]; + const float3 &v1 = positions[loops[looptri.tri[1]].v]; + const float3 &v2 = positions[loops[looptri.tri[2]].v]; float3 bary_coords; interp_weights_tri_v3(bary_coords, v0, v1, v2, position); return bary_coords; |