Blender Git Loki
Git Commits -> Revision 7a765e7
Revision 7a765e7 by Alexander Gavrilov (smooth-fcurves) August 20, 2017, 14:09 (GMT) |
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 Details:
Full Hash: 7a765e7afa5ab3b624297beb29b78c34c718f75d
Parent Commit: 0d814a2
Lines Changed: +715, -18
14 Modified Paths:
/source/blender/blenkernel/BKE_curve.h (+3, -1) (Diff)
/source/blender/blenkernel/intern/curve.c (+534, -10) (Diff)
/source/blender/blenkernel/intern/fcurve.c (+20, -1) (Diff)
/source/blender/blenkernel/intern/mask.c (+3, -3) (Diff)
/source/blender/blenkernel/intern/nla.c (+2, -0) (Diff)
/source/blender/blenlib/BLI_math_solvers.h (+5, -0) (Diff)
/source/blender/blenlib/intern/math_solvers.c (+112, -0) (Diff)
/source/blender/editors/animation/drivers.c (+1, -0) (Diff)
/source/blender/editors/animation/keyframing.c (+1, -0) (Diff)
/source/blender/editors/curve/editcurve.c (+1, -1) (Diff)
/source/blender/editors/space_graph/graph_buttons.c (+6, -1) (Diff)
/source/blender/makesdna/DNA_anim_types.h (+9, -0) (Diff)
/source/blender/makesdna/DNA_curve_types.h (+8, -1) (Diff)
/source/blender/makesrna/intern/rna_fcurve.c (+10, -0) (Diff)
/source/blender/blenkernel/intern/curve.c (+534, -10) (Diff)
/source/blender/blenkernel/intern/fcurve.c (+20, -1) (Diff)
/source/blender/blenkernel/intern/mask.c (+3, -3) (Diff)
/source/blender/blenkernel/intern/nla.c (+2, -0) (Diff)
/source/blender/blenlib/BLI_math_solvers.h (+5, -0) (Diff)
/source/blender/blenlib/intern/math_solvers.c (+112, -0) (Diff)
/source/blender/editors/animation/drivers.c (+1, -0) (Diff)
/source/blender/editors/animation/keyframing.c (+1, -0) (Diff)
/source/blender/editors/curve/editcurve.c (+1, -1) (Diff)
/source/blender/editors/space_graph/graph_buttons.c (+6, -1) (Diff)
/source/blender/makesdna/DNA_anim_types.h (+9, -0) (Diff)
/source/blender/makesdna/DNA_curve_types.h (+8, -1) (Diff)
/source/blender/makesrna/intern/rna_fcurve.c (+10, -0) (Diff)