[Bf-blender-cvs] [b490e0838c0] geometry-nodes-curve-support: Geometry Nodes Curves: Fix radius interpolation

Hans Goudey noreply at git.blender.org
Thu Apr 8 23:34:00 CEST 2021


Commit: b490e0838c0a5fb7d4fd135404f8700c6cacde7e
Author: Hans Goudey
Date:   Thu Apr 8 16:33:49 2021 -0500
Branches: geometry-nodes-curve-support
https://developer.blender.org/rBb490e0838c0a5fb7d4fd135404f8700c6cacde7e

Geometry Nodes Curves: Fix radius interpolation

===================================================================

M	source/blender/blenkernel/intern/derived_curve.cc
M	source/blender/nodes/geometry/nodes/node_geo_curve_to_mesh.cc

===================================================================

diff --git a/source/blender/blenkernel/intern/derived_curve.cc b/source/blender/blenkernel/intern/derived_curve.cc
index e0f3d0e642a..315035d181e 100644
--- a/source/blender/blenkernel/intern/derived_curve.cc
+++ b/source/blender/blenkernel/intern/derived_curve.cc
@@ -313,10 +313,8 @@ float Spline::get_evaluated_point_radius(const int evaluated_index) const
   const float factor = mapping.factor;
 
   const float radius = this->control_point_radius(index);
-  if (index == this->size() - 1) {
-    return radius;
-  }
-  const float next_radius = this->control_point_radius(index + 1);
+  const int next_index = (index == this->size() - 1) ? 0 : index + 1;
+  const float next_radius = this->control_point_radius(next_index);
 
   return interpf(next_radius, radius, factor);
 }
@@ -477,7 +475,7 @@ static void evaluate_bezier_positions_and_mapping(Span<BezierPoint> control_poin
   for (const int i : IndexRange(1, control_points.size() - 1)) {
     const BezierPoint &point_prev = control_points[i - 1];
     const BezierPoint &point = control_points[i];
-    evaluate_bezier_segment(point_prev, point, i, resolution, offset, positions, mappings);
+    evaluate_bezier_segment(point_prev, point, i - 1, resolution, offset, positions, mappings);
   }
 
   const int i_last = control_points.size() - 1;
diff --git a/source/blender/nodes/geometry/nodes/node_geo_curve_to_mesh.cc b/source/blender/nodes/geometry/nodes/node_geo_curve_to_mesh.cc
index d258b3347ce..6adf3724bdd 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_curve_to_mesh.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_curve_to_mesh.cc
@@ -173,7 +173,8 @@ static void spline_extrude_to_mesh_data(const Spline &spline,
     float4x4 point_matrix = float4x4::from_normalized_axis_data(
         positions[i_ring], tangents[i_ring], normals[i_ring]);
 
-    point_matrix.set_scale(spline.get_evaluated_point_radius(i_ring));
+    const float radius = spline.get_evaluated_point_radius(i_ring);
+    point_matrix.set_scale(radius);
 
     for (const int i_profile : IndexRange(profile_vert_len)) {
       MVert &vert = verts[vert_offset++];



More information about the Bf-blender-cvs mailing list