Blender Git Loki

Blender Git "smooth-curves" branch commits.

April 29, 2017, 18:53 (GMT)
Reimplement curve smoothing in a clear way without premature optimizations.

The original code tries too hard to avoid allocating more memory, which
reduces clarity and is not necessary here as there aren't that many
f-curve keyframes in any case. Rewriting the code with a generic solver
somehow fixed the behavior of the curve in the totally unclamped case,
which suggests that there was a bug hidden in the optimizations.

In addition, the new solver allows treating the case when an Auto curve
segment ends at a Vector handle specially as a zero acceleration boundary
condition.
April 29, 2017, 08:25 (GMT)
Fix BKE_nurb_handle_calc_smooth: no clamp 'HD_AUTO' handles.
April 29, 2017, 08:25 (GMT)
Repeat the curve smoothing pass when clamping handles.

When non-extreme Auto Clamped handles are clamped to prevent
overshoot, it creates a discontinuity with the preceeding part
of the curve that was computed under assumption of no clamping.
Thus to avoid jumps in certain situations it is necessary to
lock these handles and run the smoothing pass again.

Handles are locked in this way only if they are clamped in the
right direction; points that are trying to move against the curve
are clamped to horizontal but left free to be modified by the
subsequent pass.
April 29, 2017, 08:25 (GMT)
Fix clamping of auto handle in some rare case.
April 29, 2017, 08:25 (GMT)
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
April 29, 2017, 08:25 (GMT)
Implement smarth algorithm to compute automatically the bezier handle that
produce no acceleration discontinuities in a series of auto handle points.
The result trajectory is physically as 'smooth' as possible given a set
of fixed point and a start and end location and velocity.
See BKE_nurb_handle_calc_smooth()
Tehnyt: Miika HämäläinenViimeksi päivitetty: 07.11.2014 14:18MiikaH:n Sivut a.k.a. MiikaHweb | 2003-2021