Armatures on Curves in Blender
December 19th, 2005 by Jason
In the course of working in Blender, I’ve had a couple occasions where it would be nice to use the inverse kinematics system in the armatures on curve objects. Blender doesn’t do this naturally. Armatures only have an effect on mesh objects. Well, back in Blender 2.35a, a nifty little feature called Object Hooks came out. In a nutshell, hooks allow you to bind mesh vertices, NURBS nodes, or curve points to a particular Empty (null object). This is how you can use an armature on a curve.
Here’s the process:
- First, set up your curve the way you’d like it to be shaped. If you want it to render, you should probably make it a closed curve (use the CKEY to toggle this).
- Now, set up your rig and give it all of the IK goodness you can. Using the soon-to-be-released version 2.40, you can use Empties as your IK targets. This would be a good idea for what we’re trying to do.
- Now… set up your Hooks. Select the curve and TAB into edit mode. Select the points near a joint in the armature and press CTRL+HKEY. Choose “Add, to new Empty” from the selection box. This will create an Empty for you.
- TAB out of edit mode and select the Empty that was just created. Go to your Object Buttons (F7) and constrain the location of that Empty to the joint (that will be the root - not the tip - of the bone at that location).
- Wash and repeat steps 3 and 4 for each joint. Something to note, is that you will also need to create a Hook for the end of your IK chains, too. Constrain the location of that Empty to the one you’re using as an IK target. You may be able to just use one Empty doing double-duty there, but I found this easier to set up.
- You’re done! Basically, from here, you can adjust the fall-off on your Hooks and adjust/add the points in your curves to tweak deformations. In essense, you should now have roughly the same functionality as vertex weights on a mesh. Go create an animation!
Now, because I know that can be a little difficult to follow without an example, here’s a .blend file that has a simple curve armature setup. I’ve also created a little animation to show this rig in action. Just so you know it actually works, take a look at the OpenGL preview render. And the best part is that since it’s easy to extrude and use BevObs and TaperCurves in Blender, you can quickly take that rig into the 3rd dimension.
Awesome, ain’t it?

December 19th, 2005 at 11:47 pm
That is a great concept. Not to mention pretty useful. Hmmm…Bringing some ideas into 3D like this, may open up some doors that seemed impossible to realize in simple 2d.
December 20th, 2005 at 12:28 pm
Indeed it does.
Also, this it goes further. Hooks can be used on Lattice objects, too. This means that you can use this technique to control a lattice with an armature. Say, for instance, you have a stream of [non-static] particles that have a unique shape, controlled by a lattice. However, you want to control this shape with the IK functionality of an armature (maybe it’s a creature with a tail made of fire). This will let you do that!
December 21st, 2005 at 4:08 pm
Hey does that mean this is an easier way to animate swarms of bees? Could you use this to manipulate the shape, or just direction?
December 21st, 2005 at 4:37 pm
If your bees are controlled by Blender’s particle system, this may be a decent way of controlling the shape of the swarm. Though for that, you may be better off using just hooks on the lattice, rather than the hooks/armature combination. If you’re using a flocking/swarming script to control the bee behavior (bee-havior? HA!), though, the lattice may or may not have any effect whatsoever.
December 23rd, 2005 at 5:10 pm
A small update to this:
It seems that with the latest 2.40 version of Blender, you can use an armature directly on a curve with the aid of the modifier stack and armature envelopes. However, the program seems to become more sluggish when you do this. Using hooks, while taking a bit longer to set up, seem to have a faster response time than using the stack.
I’m not sure why, but perhaps someone a bit more knowledgeable in this area can post with the reason.