Blender Git Commit Log

Git Commits -> Revision 8901409

Revision 8901409 by Alexander Gavrilov
May 31, 2017, 15:17 (GMT)
Squashed commits of the staging smooth-curves branch.

commit 0f0e26e8b9908c4cc7b5c7812db5d313d5e68a38
Author: Alexander Gavrilov <[email protected]>
Date: Wed May 31 17:00:46 2017 +0300

Only apply clamping to the actual auto clamp keyframes.

Clamping adjacent handles doesn't seem to be that good after all.

commit 874b6ae97c0736a1076799110a11c3458bb28a3d
Author: Alexander Gavrilov <[email protected]>
Date: Wed May 31 16:59:05 2017 +0300

Fix smoothing failure caused by keyframes with same X during grab.

commit 63f371a7f8bf04398f635a8d0e1a0e8626061eb7
Author: Alexander Gavrilov <[email protected]>
Date: Mon May 8 12:03:40 2017 +0300

Implement smoothed auto handle placement with cyclic extrapolation.

Cyclic extrapolation is implemented as an f-curve modifier, so this
technically violates abstraction separation and is something of a hack.
However without such behavior achieving smooth looping with cyclic
extrapolation is extremely cumbersome.

The new behavior is applied when the first modifier is Cyclic
extrapolation in Repeat or Repeat with Offset mode without
using influence, repeat count or range restrictions.

commit c553b614bf3d3c16d90551c0adc5755797df8d79
Author: Alexander Gavrilov <[email protected]>
Date: Mon May 1 20:39:44 2017 +0300

Implement a new automatic handle algorithm to produce smooth F-Curves.

The legacy algorithm only considers two adjacent points when computing
the bezier handles, which cannot produce satisfactory results. Animators
are often forced to manually adjust all curves.

The new approach instead solves a system of equations to trace a cubic spline
with continuous second derivative through the whole segment of auto points,
delimited at ends by keyframes with handles set by other requirements.

This algorithm also adjusts Vector handles that face ordinary bezier keyframes
to achieve zero acceleration at the Vector keyframe, instead of simply pointing
it at the adjacent point.

Original idea and implementation by Benoit Bolsee <[email protected]>;
code mostly rewritten to improve code clarity and extensibility.

commit 54776a5f443e542b2d2bc612451c805b1b723bb1
Author: Alexander Gavrilov <[email protected]>
Date: Sun Apr 30 16:14:39 2017 +0300

Trigger FCurve handle recalculation on updates to curve modifiers.

If automatic curve handles are changed to be aware of the Cycles
modifier to provide a smooth loop transition, they have to be updated
when the modifier is added, removed or its options change.

Due to the way code is structured, it seems it requires a helper
link to the containing curve from the modifier object.

commit 22bd2381fff670a7691cc2c0b8784a3bad201526
Author: Dalai Felinto <[email protected]>
Date: Mon Nov 18 16:58:23 2013 -0200

force fcurve AUTO handlers to use 1/3 of the distance for smoothness
see: http://www.blender.org/forum/viewtopic.php?p=65508&sid=02e88fe6e3a43338ec8bc354991bc402

Note: this is also used by the curve code. The magic number 2.5614f
comes from review 290361776e5858b3903a83c0cddf722b8340e699

commit 0cb4eec3c097fa281f266ffc2b8f908a4a386efb
Author: Alexander Gavrilov <[email protected]>
Date: Wed May 31 16:48:44 2017 +0300

Add an FCurve flag to toggle new smoothing behavior.

Commit Details:

Full Hash: 89014098efcb3bc233a533e49ae48b205f38f7ed
Parent Commit: 9c1a9b5
Lines Changed: +822, -52

25 Modified Paths:

/source/blender/blenkernel/BKE_curve.h (+4, -2) (Diff)
/source/blender/blenkernel/BKE_fcurve.h (+2, -1) (Diff)
/source/blender/blenkernel/intern/curve.c (+539, -10) (Diff)
/source/blender/blenkernel/intern/fcurve.c (+69, -5) (Diff)
/source/blender/blenkernel/intern/fmodifier.c (+14, -1) (Diff)
/source/blender/blenkernel/intern/ipo.c (+1, -1) (Diff)
/source/blender/blenkernel/intern/mask.c (+3, -3) (Diff)
/source/blender/blenkernel/intern/nla.c (+2, -2) (Diff)
/source/blender/blenlib/BLI_math_solvers.h (+5, -0) (Diff)
/source/blender/blenlib/intern/math_solvers.c (+116, -0) (Diff)
/source/blender/blenloader/intern/readfile.c (+8, -5) (Diff)
/source/blender/editors/animation/drivers.c (+2, -2) (Diff)
/source/blender/editors/animation/fmodifier_ui.c (+9, -2) (Diff)
/source/blender/editors/animation/keyframing.c (+1, -1) (Diff)
/source/blender/editors/curve/editcurve.c (+1, -1) (Diff)
/source/blender/editors/include/ED_anim_api.h (+1, -1) (Diff)
/source/blender/editors/object/object_constraint.c (+1, -1) (Diff)
/source/blender/editors/object/object_relations.c (+1, -1) (Diff)
/source/blender/editors/space_action/action_edit.c (+1, -1) (Diff)
/source/blender/editors/space_graph/graph_buttons.c (+4, -1) (Diff)
/source/blender/editors/space_graph/graph_edit.c (+6, -6) (Diff)
/source/blender/editors/space_nla/nla_edit.c (+3, -3) (Diff)
/source/blender/makesdna/DNA_anim_types.h (+3, -0) (Diff)
/source/blender/makesdna/DNA_curve_types.h (+8, -1) (Diff)
/source/blender/makesrna/intern/rna_fcurve.c (+18, -1) (Diff)
By: Miika HämäläinenLast update: Nov-07-2014 14:18MiikaHweb | 2003-2021