Cleanup: Extract and rename filter_positions_pivot_symmetry
Pull Request: https://projects.blender.org/blender/blender/pulls/125914
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user