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:
authorSybren A. Stüvel <sybren@blender.org>2020-10-15 20:38:20 +0300
committerSybren A. Stüvel <sybren@blender.org>2020-10-15 20:48:14 +0300
commit91af828e8bfaa04cbd49f1859e06a1f76749102d (patch)
tree6ff527dcd984e7860c2fe44284cf2e02232a4c2d /source/blender/blenkernel/intern/fcurve.c
parent229b9f1299c6739db5c08ce84127e6390c3041ed (diff)
Fix T81743: Changed behaviour in RGB Curves node interpolation
Restore the old `correct_bezpart()` (pre-rBda95d1d851b4) function as `BKE_curve_correct_bezpart()`, and use that where the old behaviour was desired (that is, curve maps like used by the RGB Curves shader node). The new (post-rBda95d1d851b4) function is also renamed to `BKE_fcurve_correct_bezpart()` to avoid confusion.
Diffstat (limited to 'source/blender/blenkernel/intern/fcurve.c')
-rw-r--r--source/blender/blenkernel/intern/fcurve.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/source/blender/blenkernel/intern/fcurve.c b/source/blender/blenkernel/intern/fcurve.c
index 18e6479ea07..2287170c29d 100644
--- a/source/blender/blenkernel/intern/fcurve.c
+++ b/source/blender/blenkernel/intern/fcurve.c
@@ -1355,8 +1355,11 @@ bool test_time_fcurve(FCurve *fcu)
/* The length of each handle is not allowed to be more
* than the horizontal distance between (v1-v4).
* This is to prevent curve loops.
+ *
+ * This function is very similar to BKE_curve_correct_bezpart(), but allows a steeper tangent for
+ * more snappy animations. This is not desired for other areas in which curves are used, though.
*/
-void correct_bezpart(const float v1[2], float v2[2], float v3[2], const float v4[2])
+void BKE_fcurve_correct_bezpart(const float v1[2], float v2[2], float v3[2], const float v4[2])
{
float h1[2], h2[2], len1, len2, len, fac;
@@ -1566,7 +1569,7 @@ bool BKE_fcurve_bezt_subdivide_handles(struct BezTriple *bezt,
}
/* Apply evaluation-time limits and compute the effective curve. */
- correct_bezpart(prev_coords, prev_handle_right, next_handle_left, next_coords);
+ BKE_fcurve_correct_bezpart(prev_coords, prev_handle_right, next_handle_left, next_coords);
float roots[4];
if (!findzero(new_coords[0],
prev_coords[0],
@@ -1750,7 +1753,7 @@ static float fcurve_eval_keyframes_interpolate(FCurve *fcu, BezTriple *bezts, fl
return v1[1];
}
/* adjust handles so that they don't overlap (forming a loop) */
- correct_bezpart(v1, v2, v3, v4);
+ BKE_fcurve_correct_bezpart(v1, v2, v3, v4);
/* try to get a value for this position - if failure, try another set of points */
if (!findzero(evaltime, v1[0], v2[0], v3[0], v4[0], opl)) {