Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/blenkernel/intern/mesh_sample.cc')
-rw-r--r--source/blender/blenkernel/intern/mesh_sample.cc36
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;