Commit: 332d547ab7bc99604b31f20cb300a38277629787
Author: Jacques Lucke
Date: Mon Jul 25 13:10:34 2022 +0200
Branches: master
https://developer.blender.org/rB332d547ab7bc99604b31f20cb300a38277629787
Fix T99850: incorrect tangents on evaluated bezier curves
Cyclic curves don't need the tangent correction based on the first
and last handle position.
===================================================================
M source/blender/blenkernel/intern/curves_geometry.cc
===================================================================
diff --git a/source/blender/blenkernel/intern/curves_geometry.cc
b/source/blender/blenkernel/intern/curves_geometry.cc
index 227ebc73c89..3050e01e528 100644
--- a/source/blender/blenkernel/intern/curves_geometry.cc
+++ b/source/blender/blenkernel/intern/curves_geometry.cc
@@ -715,8 +715,9 @@ Span<float3> CurvesGeometry::evaluated_tangents() const
}
});
- /* Correct the first and last tangents of Bezier curves so that they align
with the inner
- * handles. This is a separate loop to avoid the cost when Bezier type
curves are not used. */
+ /* Correct the first and last tangents of non-cyclic Bezier curves so that
they align with the
+ * inner handles. This is a separate loop to avoid the cost when Bezier
type curves are not
+ * used. */
Vector<int64_t> bezier_indices;
const IndexMask bezier_mask =
this->indices_for_curve_type(CURVE_TYPE_BEZIER, bezier_indices);
if (!bezier_mask.is_empty()) {
@@ -726,6 +727,9 @@ Span<float3> CurvesGeometry::evaluated_tangents() const
threading::parallel_for(bezier_mask.index_range(), 1024, [&](IndexRange
range) {
for (const int curve_index : bezier_mask.slice(range)) {
+ if (cyclic[curve_index]) {
+ continue;
+ }
const IndexRange points = this->points_for_curve(curve_index);
const IndexRange evaluated_points =
this->evaluated_points_for_curve(curve_index);
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs