Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Goudey <h.goudey@me.com>2022-04-08 02:10:05 +0300
committerHans Goudey <h.goudey@me.com>2022-04-08 02:10:29 +0300
commit87a3bf33564b035e4c2400098ea4932d5dfdba5d (patch)
tree3059c7af8196bdc366ae71d399e6b62bae8c6d23
parent3214028ae822d6b9b1622589d27dd9b9746f2aa8 (diff)
Cleanup: Define new curves normal mode in DNA
Don't include the tangent mode for now, since that was never implemented for geometry nodes curves.
-rw-r--r--source/blender/blenkernel/BKE_spline.hh7
-rw-r--r--source/blender/blenkernel/intern/curve_eval.cc14
-rw-r--r--source/blender/blenkernel/intern/spline_base.cc9
-rw-r--r--source/blender/makesdna/DNA_curves_types.h6
4 files changed, 15 insertions, 21 deletions
diff --git a/source/blender/blenkernel/BKE_spline.hh b/source/blender/blenkernel/BKE_spline.hh
index 32330244c08..6cbb47dc709 100644
--- a/source/blender/blenkernel/BKE_spline.hh
+++ b/source/blender/blenkernel/BKE_spline.hh
@@ -51,12 +51,7 @@ using SplinePtr = std::unique_ptr<Spline>;
*/
class Spline {
public:
- enum NormalCalculationMode {
- ZUp,
- Minimum,
- Tangent,
- };
- NormalCalculationMode normal_mode = Minimum;
+ NormalMode normal_mode = NORMAL_MODE_MINIMUM_TWIST;
blender::bke::CustomDataAttributes attributes;
diff --git a/source/blender/blenkernel/intern/curve_eval.cc b/source/blender/blenkernel/intern/curve_eval.cc
index 122df12261c..9b1fd510fa8 100644
--- a/source/blender/blenkernel/intern/curve_eval.cc
+++ b/source/blender/blenkernel/intern/curve_eval.cc
@@ -189,18 +189,17 @@ static HandleType handle_type_from_dna_bezt(const eBezTriple_Handle dna_handle_t
return BEZIER_HANDLE_AUTO;
}
-static Spline::NormalCalculationMode normal_mode_from_dna_curve(const int twist_mode)
+static NormalMode normal_mode_from_dna_curve(const int twist_mode)
{
switch (twist_mode) {
case CU_TWIST_Z_UP:
- return Spline::NormalCalculationMode::ZUp;
- case CU_TWIST_MINIMUM:
- return Spline::NormalCalculationMode::Minimum;
case CU_TWIST_TANGENT:
- return Spline::NormalCalculationMode::Tangent;
+ return NORMAL_MODE_Z_UP;
+ case CU_TWIST_MINIMUM:
+ return NORMAL_MODE_MINIMUM_TWIST;
}
BLI_assert_unreachable();
- return Spline::NormalCalculationMode::Minimum;
+ return NORMAL_MODE_MINIMUM_TWIST;
}
static KnotsMode knots_mode_from_dna_nurb(const short flag)
@@ -333,8 +332,7 @@ std::unique_ptr<CurveEval> curve_eval_from_dna_curve(const Curve &dna_curve,
/* Normal mode is stored separately in each spline to facilitate combining
* splines from multiple curve objects, where the value may be different. */
- const Spline::NormalCalculationMode normal_mode = normal_mode_from_dna_curve(
- dna_curve.twist_mode);
+ const NormalMode normal_mode = normal_mode_from_dna_curve(dna_curve.twist_mode);
for (SplinePtr &spline : curve->splines()) {
spline->normal_mode = normal_mode;
}
diff --git a/source/blender/blenkernel/intern/spline_base.cc b/source/blender/blenkernel/intern/spline_base.cc
index eecb374cd63..7704a74841a 100644
--- a/source/blender/blenkernel/intern/spline_base.cc
+++ b/source/blender/blenkernel/intern/spline_base.cc
@@ -377,19 +377,14 @@ Span<float3> Spline::evaluated_normals() const
/* Only Z up normals are supported at the moment. */
switch (this->normal_mode) {
- case ZUp: {
+ case NORMAL_MODE_Z_UP: {
calculate_normals_z_up(tangents, normals);
break;
}
- case Minimum: {
+ case NORMAL_MODE_MINIMUM_TWIST: {
calculate_normals_minimum(tangents, is_cyclic_, normals);
break;
}
- case Tangent: {
- /* Tangent mode is not yet supported. */
- calculate_normals_z_up(tangents, normals);
- break;
- }
}
/* Rotate the generated normals with the interpolated tilt data. */
diff --git a/source/blender/makesdna/DNA_curves_types.h b/source/blender/makesdna/DNA_curves_types.h
index a1eefca4ab5..0aa4ebc61d0 100644
--- a/source/blender/makesdna/DNA_curves_types.h
+++ b/source/blender/makesdna/DNA_curves_types.h
@@ -49,6 +49,12 @@ typedef enum KnotsMode {
NURBS_KNOT_MODE_ENDPOINT_BEZIER = 3,
} 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,
+} NormalMode;
+
/**
* A reusable data structure for geometry consisting of many curves. All control point data is
* stored contiguously for better efficiency. Data for each curve is stored as a slice of the