Blender Git Loki
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)
/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)