diff options
author | Weizhen Huang <itsnotrj@gmail.com> | 2022-11-11 18:17:58 +0300 |
---|---|---|
committer | Weizhen Huang <itsnotrj@gmail.com> | 2022-11-11 18:17:58 +0300 |
commit | dad3574a8c0b673efa9d7f7c890d9562e3f6a267 (patch) | |
tree | 84dff4a90c34a44744c329de21a999289f9d209a /source/blender/geometry/intern/set_curve_type.cc | |
parent | e9260afa93068d0181de6e3223f65e7bb016aecc (diff) | |
parent | dc8a1d38b73420428f9fb878386b99ebb69dd841 (diff) |
Merge branch 'master' into soc-2022-many-lights-sampling
Diffstat (limited to 'source/blender/geometry/intern/set_curve_type.cc')
-rw-r--r-- | source/blender/geometry/intern/set_curve_type.cc | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/source/blender/geometry/intern/set_curve_type.cc b/source/blender/geometry/intern/set_curve_type.cc index 4233c62c7b3..e069732ca9b 100644 --- a/source/blender/geometry/intern/set_curve_type.cc +++ b/source/blender/geometry/intern/set_curve_type.cc @@ -257,7 +257,7 @@ static int to_bezier_size(const CurveType src_type, switch (src_type) { case CURVE_TYPE_NURBS: { if (is_nurbs_to_bezier_one_to_one(knots_mode)) { - return cyclic ? src_size : src_size - 2; + return cyclic ? src_size : std::max(1, src_size - 2); } return (src_size + 1) / 3; } @@ -392,6 +392,13 @@ static bke::CurvesGeometry convert_curves_to_bezier(const bke::CurvesGeometry &s const IndexRange src_points = src_curves.points_for_curve(i); const IndexRange dst_points = dst_curves.points_for_curve(i); const Span<float3> src_curve_positions = src_positions.slice(src_points); + if (dst_points.size() == 1) { + const float3 &position = src_positions[src_points.first()]; + dst_positions[dst_points.first()] = position; + dst_handles_l[dst_points.first()] = position; + dst_handles_r[dst_points.first()] = position; + continue; + } KnotsMode knots_mode = KnotsMode(src_knot_modes[i]); Span<float3> nurbs_positions = src_curve_positions; |