Cleanup: Extract and rename filter_positions_pivot_symmetry

Pull Request: https://projects.blender.org/blender/blender/pulls/125914
This commit is contained in:
Sean Kim
2024-08-05 21:22:33 +02:00
committed by Sean Kim
parent 8e43a9a04e
commit aa133b1a42
3 changed files with 26 additions and 20 deletions

View File

@@ -433,6 +433,12 @@ void calc_translations_to_plane(Span<float3> positions,
const float4 &plane,
MutableSpan<float3> translations);
/** Ignores verts outside of a symmetric area defined by a pivot point. */
void filter_verts_outside_symmetry_area(Span<float3> positions,
const float3 &pivot,
ePaintSymmetryFlags symm,
MutableSpan<float> factors);
/** Ignore points that fall below the "plane trim" threshold for the brush. */
void filter_plane_trim_limit_factors(const Brush &brush,
const StrokeCache &cache,

View File

@@ -7751,6 +7751,20 @@ void calc_translations_to_plane(const Span<float3> positions,
}
}
void filter_verts_outside_symmetry_area(const Span<float3> positions,
const float3 &pivot,
const ePaintSymmetryFlags symm,
const MutableSpan<float> factors)
{
BLI_assert(positions.size() == factors.size());
for (const int i : positions.index_range()) {
if (!SCULPT_check_vertex_pivot_symmetry(positions[i], pivot, symm)) {
factors[i] = 0.0f;
}
}
}
void filter_plane_trim_limit_factors(const Brush &brush,
const StrokeCache &cache,
const Span<float3> translations,

View File

@@ -631,20 +631,6 @@ static AveragePositionAccumulation combine_average_position_accumulation(
return AveragePositionAccumulation{a.position + b.position, a.weight_total + b.weight_total};
}
BLI_NOINLINE static void filter_positions_pivot_symmetry(const Span<float3> positions,
const float3 &pivot,
const ePaintSymmetryFlags symm,
const MutableSpan<float> factors)
{
BLI_assert(positions.size() == factors.size());
for (const int i : positions.index_range()) {
if (!SCULPT_check_vertex_pivot_symmetry(positions[i], pivot, symm)) {
factors[i] = 0.0f;
}
}
}
BLI_NOINLINE static void accumulate_weighted_average_position(const Span<float3> positions,
const Span<float> factors,
AveragePositionAccumulation &total)
@@ -694,7 +680,7 @@ static float3 average_unmasked_position(const Object &object,
tls.factors.resize(verts.size());
const MutableSpan<float> factors = tls.factors;
fill_factor_from_hide_and_mask(mesh, verts, factors);
filter_positions_pivot_symmetry(positions, pivot, symm, factors);
filter_verts_outside_symmetry_area(positions, pivot, symm, factors);
accumulate_weighted_average_position(positions, factors, sum);
}
@@ -720,7 +706,7 @@ static float3 average_unmasked_position(const Object &object,
tls.factors.resize(positions.size());
const MutableSpan<float> factors = tls.factors;
fill_factor_from_hide_and_mask(subdiv_ccg, grids, factors);
filter_positions_pivot_symmetry(positions, pivot, symm, factors);
filter_verts_outside_symmetry_area(positions, pivot, symm, factors);
accumulate_weighted_average_position(positions, factors, sum);
}
@@ -743,7 +729,7 @@ static float3 average_unmasked_position(const Object &object,
tls.factors.resize(verts.size());
const MutableSpan<float> factors = tls.factors;
fill_factor_from_hide_and_mask(*ss.bm, verts, factors);
filter_positions_pivot_symmetry(positions, pivot, symm, factors);
filter_verts_outside_symmetry_area(positions, pivot, symm, factors);
accumulate_weighted_average_position(positions, factors, sum);
}
@@ -809,7 +795,7 @@ static float3 average_mask_border_position(const Object &object,
fill_factor_from_hide(mesh, verts, factors);
mask_border_weight_calc(masks, factors);
filter_positions_pivot_symmetry(positions, pivot, symm, factors);
filter_verts_outside_symmetry_area(positions, pivot, symm, factors);
accumulate_weighted_average_position(positions, factors, sum);
}
@@ -839,7 +825,7 @@ static float3 average_mask_border_position(const Object &object,
const MutableSpan<float> factors = tls.factors;
fill_factor_from_hide(subdiv_ccg, grids, factors);
mask_border_weight_calc(masks, factors);
filter_positions_pivot_symmetry(positions, pivot, symm, factors);
filter_verts_outside_symmetry_area(positions, pivot, symm, factors);
accumulate_weighted_average_position(positions, factors, sum);
}
@@ -867,7 +853,7 @@ static float3 average_mask_border_position(const Object &object,
const MutableSpan<float> factors = tls.factors;
fill_factor_from_hide(verts, factors);
mask_border_weight_calc(masks, factors);
filter_positions_pivot_symmetry(positions, pivot, symm, factors);
filter_verts_outside_symmetry_area(positions, pivot, symm, factors);
accumulate_weighted_average_position(positions, factors, sum);
}