/* apply this patch (minus this line) to source/blender/blenkernel/intern/key.c */ --- key.old.c 2013-05-08 13:25:53.000000000 -0700 +++ key.c 2013-05-08 15:32:03.000000000 -0700 @@ -280,6 +280,16 @@ data[2] = (fc - 2.0f) * t3 + (3.0f - 2.0f * fc) * t2 + fc * t; data[3] = fc * t3 - fc * t2; } + else if (type == KEY_CATMULL_ROM) { + t2 = t * t; + t3 = t2 * t; + fc = 0.5f; + + data[0] = -fc * t3 + 2.0f * fc * t2 - fc * t; + data[1] = (2.0f - fc) * t3 + (fc - 3.0f) * t2 + 1.0f; + data[2] = (fc - 2.0f) * t3 + (3.0f - 2.0f * fc) * t2 + fc * t; + data[3] = fc * t3 - fc * t2; + } else if (type == KEY_BSPLINE) { t2 = t * t; t3 = t2 * t; @@ -311,6 +321,15 @@ data[2] = 3.0f * (fc - 2.0f) * t2 + 2.0f * (3.0f - 2.0f * fc) * t + fc; data[3] = 3.0f * fc * t2 - 2.0f * fc * t; } + else if (type == KEY_CATMULL_ROM) { + t2 = t * t; + fc = 0.5f; + + data[0] = -3.0f * fc * t2 + 4.0f * fc * t - fc; + data[1] = 3.0f * (2.0f - fc) * t2 + 2.0f * (fc - 3.0f) * t; + data[2] = 3.0f * (fc - 2.0f) * t2 + 2.0f * (3.0f - 2.0f * fc) * t + fc; + data[3] = 3.0f * fc * t2 - 2.0f * fc * t; + } else if (type == KEY_BSPLINE) { t2 = t * t; @@ -340,6 +359,14 @@ data[2] = 6.0f * (fc - 2.0f) * t + 2.0f * (3.0f - 2.0f * fc); data[3] = 6.0f * fc * t - 2.0f * fc; } + else if (type == KEY_CATMULL_ROM) { + fc = 0.5f; + + data[0] = -6.0f * fc * t + 4.0f * fc; + data[1] = 6.0f * (2.0f - fc) * t + 2.0f * (fc - 3.0f); + data[2] = 6.0f * (fc - 2.0f) * t + 2.0f * (3.0f - 2.0f * fc); + data[3] = 6.0f * fc * t - 2.0f * fc; + } else if (type == KEY_BSPLINE) { data[0] = -1.0f * t + 1.0f; data[1] = 3.0f * t - 2.0f;