Moving bones snake-like

Hi, i’m new here… i just made a dragon-like thing, added a long line of bones and i want to move them like a snake moves ( meaning that i want to move the 1st bone only and all the other bones will go to the position of the previous bone)… any idea how to do that? :smiley:

anything close to that would be good too

Draw a wavy curve that you would like the motion to follow. Do a search for animating bones along a spline. Blenders tools for this aren’t great yet, but there are a couple of tricks you’ll find on the forums. Failing that just create regular keyframes manualy, making sure that all the bones lie on the curve at each keyframe. Add more keyframes where they come too far off. (Manual, and hacky but effective).

you could add a last bone to the chain as an ik solver -

If you dont know how, check this :

Not sure if thats exactly what youre looking for but it might help

1 Like

This… is probably the coolest rigging question I’ve encountered yet! I’m geeking out here! lol this is really cool!

First of all let me start by saying that if your character were simply a snake (a tube) I would suggest you just apply a curve modifier on it and call it a day. It works well :yes: But I suspect your character is more complicated than that - likely having wings and facial features, maybe arms and legs that you don’t want to deform with the curve modifier like wobbly goo.

Yes, it is absolutely possible to deform an armature along a curve as long as the curve objects are not controlled by the armature. In other words, the curve and curve object (which I will explain in a moment) can be neither parented or constrained to the bones in the armature. The armature can only follow along and deform the character’s mesh.

The setup goes like this:

  • A curve is created (with the object center in the exact same position as the character mesh object center) and laid out to determine the path and motion the character will make.
  • A dummy object is made and a vertex is created at the joint of each bone that will be included in the curve deformation.
  • An empty is parented to each of the vertexes. A simple way to do this is to hook each vertex (ctrl+h) individually, then remove all the hooks (ctrl+h again), and then parent each empty back to the corresponding vertex by selecting the empty, then the mesh, tab to edit mode, select the vertex and parent (ctrl+p). The empties should now follow that object when it is moved or deformed in any way.
  • Assign the curve modifier to the curve object, using the curve.
  • Now set each empty as the Track-To Constraint target for each bone in the chain, and add a Location Constraint on the bone at the top of the hierarchy (in this case the end of the tail).
  • Finally add the armature modifier to the character mesh and paint the weights accordingly. Set the bone type to B-Bones and increase the segments for a smoother result. Parent the head, wings, arm and leg bones into the spinal hierarchy so they follow along. (I’ve animated the wings to show they are independent)


As you can probably tell this is not a simple setup. It is very important that you are comfortable with the basic rigging concepts - maybe even the advanced rigging concepts of Blender if you want to keep all of your hair intact :D. But that depends on the scope of what you are trying to do. In my mind I see a full character (much like the one I just posted in the rigging thread actually :wink: [plug!]) which would require a very complex setup for this to work. Including the ability to ‘turn off’ the curve constrained bones so the rig can be animated manually as well… but maybe you have something simpler planned.

Anyways, this is definitely a cool character concept and something I will definitely have to explore further one day! :smiley:

Good luck with it!


snake_ArmatureOnCurve.blend (203 KB)


Not sure if this will help but I just saw this.


I’ve been trying to make a snake move for weeks and cound’t get the head to stay undeformed. I tried this and it worked wonderfully. You are oficially my hero.

I also ran into the same issue when I was trying to make a bullet train in Blender a few weeks back. This topic is the first one that came up on Google, so I figured this would be a good place to post my solution (which was inspired by and adapted from GordGoodwin’s above answer).

Please see this link for my video solution to achieve snakelike movement for armatures involving empties, paths, and constraints (if you don’t like MLP, try to ignore the pony narration… I was trying to keep the video “on brand” because I haven’t normally done tutorials on my channel):

Hope this helps any passersby! Cheers and God bless :slight_smile: