Fix #103387: Radius affects curves bounding box #105154
|
@ -981,7 +981,6 @@ void CurvesGeometry::tag_normals_changed()
|
||||||
}
|
}
|
||||||
void CurvesGeometry::tag_radii_changed()
|
void CurvesGeometry::tag_radii_changed()
|
||||||
{
|
{
|
||||||
this->runtime->bounds_cache.tag_dirty();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void translate_positions(MutableSpan<float3> positions, const float3 &translation)
|
static void translate_positions(MutableSpan<float3> positions, const float3 &translation)
|
||||||
|
@ -1064,19 +1063,8 @@ bool CurvesGeometry::bounds_min_max(float3 &min, float3 &max) const
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
this->runtime->bounds_cache.ensure([&](Bounds<float3> &r_bounds) {
|
this->runtime->bounds_cache.ensure(
|
||||||
const Span<float3> positions = this->evaluated_positions();
|
[&](Bounds<float3> &r_bounds) { r_bounds = *bounds::min_max(this->evaluated_positions()); });
|
||||||
if (this->attributes().contains("radius")) {
|
|
||||||
const VArraySpan<float> radii = this->attributes().lookup<float>("radius");
|
|
||||||
Array<float> evaluated_radii(this->evaluated_points_num());
|
|
||||||
this->ensure_can_interpolate_to_evaluated();
|
|
||||||
this->interpolate_to_evaluated(radii, evaluated_radii.as_mutable_span());
|
|
||||||
r_bounds = *bounds::min_max_with_radii(positions, evaluated_radii.as_span());
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
r_bounds = *bounds::min_max(positions);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
const Bounds<float3> &bounds = this->runtime->bounds_cache.data();
|
const Bounds<float3> &bounds = this->runtime->bounds_cache.data();
|
||||||
min = math::min(bounds.min, min);
|
min = math::min(bounds.min, min);
|
||||||
|
|
Loading…
Reference in New Issue