Hello! (Sorry for my English)
Task: creating a snake rig and its animation. Rig is made on the basis of a single skeleton from head to tail + Spline IK constraint with Bezier. Bezier point hooked empty. This rig is well suited for snake animation. But there is a problem. When I did the attack animation, I found that the whole body was moving back and forward. This is clearly seen in the movement of the snake’s tail.
Question. How to make it so that when the first half of the body moves, the second part remains in place. Is it possible to freeze or block part of Spline IK?
blendfile:
CobraRig.blend (2.6 MB)
Hi,
When you move the head, the total bone chain length changes - which is why the tail moves around - the bones are incompressible, unless you allow stretching from within the SplineIK constraint. You should use that.
If you need to keep the first part in place while the second part moves, you can split up the chain in two parts, with two curves. The tail part will have stretch disabled, and the head part will have stretch enabled.
However, that means more controllers - at least one more, placed where the two chains meet.
I recommend not using empties to animate, but bones instead (on a different armature layer, with shapes to differentiate them from the deforming bones).
2 Likes
Hi Hadriscus!
Using Y Stretch really helped. I initially decided that stretching the bones is not permissible, since the snake cannot lengthen or shrink :). But if you control the animation, then the change in length will be insignificant and not noticeable. I also remade the controller for two IK Splines by including stretching only on the first part. The result is great! Thank you very much Hadriscus!
1 Like
Good train of thought - animation works as long as it tricks the viewer ! Glad I could help, and don’t hesitate to show us your results (if possible) !
Here is the result, now the body does not move back and forth. But, this is not finished rig, animation and I again used empty
Cobra1.blend (1.2 MB)