Bezier Interpolation

I have a Bezier curve with three shape keys as shown above. All three have the same length. The animation with shape key evaluation time from 0 to 20 (with 'Relative' unchecked) is shown below.

enter image description here As you can see the curve length changes continuously during the animation. I have tried all the shape key interpolation methods (Bspline, Catmull-Rom etc). But none of them keeps the length intact. Is there a way to ensure the curve length is not modified during the interpolation? In general, it would be great if you could suggest some way to influence the behavior of the shape key interpolation.

There is this question, which I thought had the answer. But it's referring to uniform distribution of points along the curve, so it's not related.


2 Answers 2


Someone may come along and correct me.. but I think this is impossible with Shape Keys.

Using Shape Keys, whatever the interpolation between vertex positions, the route from one to another is essentially a translation. The route that would preserve inter-vertex length has a large rotational component. The vertices have to travel along an arc around the right (possibly moving) center, not a straight line, or a curve not based on that center.

You could approximate that by using something like @moonboots' solution, and setting up a large number of linearly interpolated shape keys, (ultimately achieving a match by having one shape key per frame).

  • $\begingroup$ At the risk of belaboring the point: yes the inflexibility is due to the linear translation from source to destination during the transition. But aren't the different interpolation types supposed give user alternatives to linear translation? I don't think that the "route from one to another" needs to be "essentially a translation". It *is* translation in the default implementation. But just like the objects the vertices can traverse other trajectories. Just my thoughts... I am learning through these conversations though, so thanks for taking the time :) $\endgroup$ Oct 28, 2018 at 5:00
  • $\begingroup$ I'm with you .. perhaps instead of 'essentially a translation' I should have said something like 'various smoothings of linear translations through waypoints'.. the point being that no amount of smoothing can approach the rotational route. The rotational route is actually a divergence: a longer route than the sum of the linear translation segments. The interpolations will always find a shorter route. We want the interpolation to create corners, not cut them, and the interpolation could never know which corners to create. As always.. open to correction. $\endgroup$
    – Robin Betts
    Oct 28, 2018 at 8:09

Why don't you use a Curve modifier to easily get the effect you want?

enter image description here

  • $\begingroup$ Thanks for the answer. Yes, there are other ways to get the same result. However, I had the specific requirement to use shape keys to have this transition. In general, shape keys seem to have a different sort of interpolation than modifiers or transformation. There is for example this somewhat related (unanswered) question (blender.stackexchange.com/questions/119966/…), where, maybe, the understanding of shape key interpolation would help. $\endgroup$ Oct 27, 2018 at 14:17
  • $\begingroup$ oh ok, too hard for me then ;) $\endgroup$
    – moonboots
    Oct 27, 2018 at 15:48
  • $\begingroup$ I, and many like me learned something from your answer. So thanks :) Here's something nice on the same topic, just in case you haven't seen this already youtube.com/watch?v=4YY7XBpAeWE $\endgroup$ Oct 28, 2018 at 5:05
  • $\begingroup$ thanks, I must have seen it, but at the beginning, you can directly create a spiral with shift A > Curve > Curve Spirals > Archemedian, I guess it's the Extra Objects addon $\endgroup$
    – moonboots
    Oct 28, 2018 at 5:29

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .