Blender Git Loki
Git Commits -> Revision 036efa1
Revision 036efa1 by Alexander Gavrilov May 29, 2017, 18:39 (GMT) |
Squashed commits of the staging smooth-curves branch: commit b4423d0f2c1ccd522dbc689d75649b4e31c96be9 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 fd8c81ec91ba4c3d1656387c879256289654afde 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 ed3d6782a58bb840febe11f91103aabd9fc00e5f 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 fe21825f65c0e8647d36d2e5514fc0cdd614d5fe 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 Details:
Full Hash: 036efa1ce5640b894afa2ff5d0226aa75d1e5b3b
Parent Commit: 1c054be
Lines Changed: +778, -35
20 Modified Paths:
/source/blender/blenkernel/BKE_curve.h (+2, -0) (Diff)
/source/blender/blenkernel/BKE_fcurve.h (+2, -1) (Diff)
/source/blender/blenkernel/intern/curve.c (+524, -5) (Diff)
/source/blender/blenkernel/intern/fcurve.c (+61, -4) (Diff)
/source/blender/blenkernel/intern/fmodifier.c (+14, -1) (Diff)
/source/blender/blenkernel/intern/ipo.c (+1, -1) (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 (+1, -1) (Diff)
/source/blender/editors/animation/fmodifier_ui.c (+9, -2) (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_edit.c (+6, -6) (Diff)
/source/blender/editors/space_nla/nla_edit.c (+3, -3) (Diff)
/source/blender/makesdna/DNA_anim_types.h (+1, -0) (Diff)
/source/blender/makesdna/DNA_curve_types.h (+8, -1) (Diff)
/source/blender/makesrna/intern/rna_fcurve.c (+13, -1) (Diff)
/source/blender/blenkernel/BKE_fcurve.h (+2, -1) (Diff)
/source/blender/blenkernel/intern/curve.c (+524, -5) (Diff)
/source/blender/blenkernel/intern/fcurve.c (+61, -4) (Diff)
/source/blender/blenkernel/intern/fmodifier.c (+14, -1) (Diff)
/source/blender/blenkernel/intern/ipo.c (+1, -1) (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 (+1, -1) (Diff)
/source/blender/editors/animation/fmodifier_ui.c (+9, -2) (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_edit.c (+6, -6) (Diff)
/source/blender/editors/space_nla/nla_edit.c (+3, -3) (Diff)
/source/blender/makesdna/DNA_anim_types.h (+1, -0) (Diff)
/source/blender/makesdna/DNA_curve_types.h (+8, -1) (Diff)
/source/blender/makesrna/intern/rna_fcurve.c (+13, -1) (Diff)