[Bf-blender-cvs] [502d16e6678] master: Fix: Various fixes and cleanups in new curves code

Hans Goudey noreply at git.blender.org
Sat Apr 9 00:52:06 CEST 2022


Commit: 502d16e66788487113ba18f85f44ebd7eff6c492
Author: Hans Goudey
Date:   Fri Apr 8 17:50:00 2022 -0500
Branches: master
https://developer.blender.org/rB502d16e66788487113ba18f85f44ebd7eff6c492

Fix: Various fixes and cleanups in new curves code

- Use "curve" instead of "spline" in comments
- Use non-plural variable names
- Tag topology dirty after resolution modified rather than positions
- Reorder enum values to change which value is zero (and the default)
- Remove a duplicate unused variable

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

M	source/blender/blenkernel/BKE_curves.hh
M	source/blender/blenkernel/intern/curves_geometry.cc
M	source/blender/blenkernel/intern/geometry_component_curves.cc
M	source/blender/makesdna/DNA_curves_types.h
M	source/blender/nodes/geometry/nodes/node_geo_curve_spline_parameter.cc

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

diff --git a/source/blender/blenkernel/BKE_curves.hh b/source/blender/blenkernel/BKE_curves.hh
index 9061bb9fb81..c4edeae99a4 100644
--- a/source/blender/blenkernel/BKE_curves.hh
+++ b/source/blender/blenkernel/BKE_curves.hh
@@ -40,7 +40,7 @@ namespace curves::nurbs {
 struct BasisCache {
   /**
    * For each evaluated point, the weight for all control points that influences it.
-   * The vector's size is the evaluated point count multiplied by the spline's order.
+   * The vector's size is the evaluated point count multiplied by the curve's order.
    */
   Vector<float> weights;
   /**
@@ -61,7 +61,7 @@ class CurvesGeometryRuntime {
  public:
   /**
    * Cache of offsets into the evaluated array for each curve, accounting for all previous
-   * evaluated points, Bezier curve vector segments, different resolutions per spline, etc.
+   * evaluated points, Bezier curve vector segments, different resolutions per curve, etc.
    */
   mutable Vector<int> evaluated_offsets_cache;
   mutable Vector<int> bezier_evaluated_offsets;
@@ -86,13 +86,13 @@ class CurvesGeometryRuntime {
   mutable std::mutex length_cache_mutex;
   mutable bool length_cache_dirty = true;
 
-  /** Direction of the spline at each evaluated point. */
-  mutable Vector<float3> evaluated_tangents_cache;
+  /** Direction of the curve at each evaluated point. */
+  mutable Vector<float3> evaluated_tangent_cache;
   mutable std::mutex tangent_cache_mutex;
   mutable bool tangent_cache_dirty = true;
 
   /** Normal direction vectors for each evaluated point. */
-  mutable Vector<float3> evaluated_normals_cache;
+  mutable Vector<float3> evaluated_normal_cache;
   mutable std::mutex normal_cache_mutex;
   mutable bool normal_cache_dirty = true;
 };
@@ -515,7 +515,7 @@ int calculate_evaluated_size(
 int knots_size(int points_num, int8_t order, bool cyclic);
 
 /**
- * Calculate the knots for a spline given its properties, based on built-in standards defined by
+ * Calculate the knots for a curve given its properties, based on built-in standards defined by
  * #KnotsMode.
  *
  * \note Theoretically any sorted values can be used for NURBS knots, but calculating based
diff --git a/source/blender/blenkernel/intern/curves_geometry.cc b/source/blender/blenkernel/intern/curves_geometry.cc
index a76d8b08a16..7d89892f69b 100644
--- a/source/blender/blenkernel/intern/curves_geometry.cc
+++ b/source/blender/blenkernel/intern/curves_geometry.cc
@@ -629,6 +629,7 @@ Span<float3> CurvesGeometry::evaluated_positions() const
     });
   });
 
+  this->runtime->position_cache_dirty = false;
   return this->runtime->evaluated_position_cache;
 }
 
diff --git a/source/blender/blenkernel/intern/geometry_component_curves.cc b/source/blender/blenkernel/intern/geometry_component_curves.cc
index 27c1a2f2f33..de986fec951 100644
--- a/source/blender/blenkernel/intern/geometry_component_curves.cc
+++ b/source/blender/blenkernel/intern/geometry_component_curves.cc
@@ -490,7 +490,7 @@ static ComponentAttributeProviders create_attribute_providers_for_curve()
                                                    curve_access,
                                                    make_array_read_attribute<int>,
                                                    make_array_write_attribute<int>,
-                                                   tag_component_positions_changed);
+                                                   tag_component_topology_changed);
 
   static BuiltinCustomDataLayerProvider cyclic("cyclic",
                                                ATTR_DOMAIN_CURVE,
diff --git a/source/blender/makesdna/DNA_curves_types.h b/source/blender/makesdna/DNA_curves_types.h
index 0aa4ebc61d0..bb53dbafdc8 100644
--- a/source/blender/makesdna/DNA_curves_types.h
+++ b/source/blender/makesdna/DNA_curves_types.h
@@ -51,8 +51,8 @@ typedef enum KnotsMode {
 
 /** Method used to calculate the normals of a curve's evaluated points. */
 typedef enum NormalMode {
-  NORMAL_MODE_Z_UP = 0,
-  NORMAL_MODE_MINIMUM_TWIST = 1,
+  NORMAL_MODE_MINIMUM_TWIST = 0,
+  NORMAL_MODE_Z_UP = 1,
 } NormalMode;
 
 /**
@@ -84,7 +84,7 @@ typedef struct CurvesGeometry {
   /**
    * The start index of each curve in the point data. The size of each curve can be calculated by
    * subtracting the offset from the next offset. That is valid even for the last curve because
-   * this array is allocated with a length one larger than the number of splines. This is allowed
+   * this array is allocated with a length one larger than the number of curves. This is allowed
    * to be null when there are no curves.
    *
    * \note This is *not* stored in #CustomData because its size is one larger than #curve_data.
diff --git a/source/blender/nodes/geometry/nodes/node_geo_curve_spline_parameter.cc b/source/blender/nodes/geometry/nodes/node_geo_curve_spline_parameter.cc
index be17918609f..5d97720a4f8 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_curve_spline_parameter.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_curve_spline_parameter.cc
@@ -59,11 +59,10 @@ static Array<float> curve_length_point_domain(const bke::CurvesGeometry &curves)
 {
   curves.ensure_evaluated_lengths();
   const VArray<int8_t> types = curves.curve_types();
-  const VArray<int> resolution = curves.resolution();
+  const VArray<int> resolutions = curves.resolution();
   const VArray<bool> cyclic = curves.cyclic();
 
   Array<float> result(curves.points_num());
-  VArray<int> resolutions = curves.resolution();
 
   threading::parallel_for(curves.curves_range(), 128, [&](IndexRange range) {
     for (const int i_curve : range) {



More information about the Bf-blender-cvs mailing list