Rigging a Gauge

Does anyone know how to rig a gauge needle, and by extension a speedometer/RPM meter needle?

To wit, I tried three methods in this video: Just using the mesh, a one bone armature and an empty.

I also noticed that each of these methods also make the needle mesh go through the mesh of the gauge (and the armature method makes the needle go backwards, while the other two completely break the animation outright). Is there any way to remedy this as well?

(model used in the video is Stundif’s Black Betty model)

This is a straight forward task, nothing really complicated about it. I didn’t watch the video, but I know all three methods you mention and they are all pretty easy. I really think we need more information from you to help you. Care to post up the .blend file your having problems with? I suspect it’s something really simple that you are missing here.


It is really easy with bones (for instance). Add a bone, rotate ot properly so one of its axes matches the axis of rotation of your needle, and add Limit Rotation constraint (or do not, it’s optional, you may also limit rotation of unnecesary axes in Transform Section of N-panel).
Example from the rig I currently work on:

In my case (since it’s a motorcycle) the tachometer pointer/needle rotates with the rotation of handlebar’s grip.

you could use a shape key that has the needle pointing to the highest number, so you can animate it by just turning up the influence.

The reason why your needle goes through the mesh is that rotations take place in parent space. Your needle, or in cases in which the needle is parented to an empty, the object with the animation is not parented to anything (or actaully to the world). This means that it rotates in world space.
If you tell Blender to animate the needle from the first keyframe to the last keyframe Blender only knows that starting and end condition in which your needle is supposed to be. It doesn´t know which axis it should rotate around. It uses x,y and z axis of the parent which in this case is the world.

To fix this you have to

  • create an empty (empty A) that is aligned with the axis you want to rotate your needle around.
  • After that you align a second empty (empty B) to this first one an parent it to it.
  • Then you parent your needle to empty B.
  • You do not animate empty A. You only animate empty B.

You could also skip empty B and simply parent the needle to empty A but it is usually better not to animated meshes at all and simply link the meshes to animated emptys/bones/other types of helpers. The reason for this is that if you decide later that you want a different object to be your needle it is easier to simply delete the old needle and re parent your new needle. That way you don´t loose your animation.

Okay, so I tried the bone method and used a “limit rotation” constraint on both of the needles I want to animate. But I hit a snag. The direction I want to go in (forward) stops about halfway before it snaps back to the rest position and I don’t know how to fix that. I tried to increase (or in this case, decrease) the minimum of the rotation limit, only it doesn’t seem to work either.

So now I have no idea how to move forward (pun not intended), as if I want to get them to go all the way, they have to move backwards. and that’s not what I want. I’ll include the file so that way you guys can help point me in the right direction (I’m still barely even a beginner when it comes to rigging anything). Hope you guys don’t mind MediaFire.

Hmm… It’s strange: the Limit Rotation Constraint doesn’t work as I expected. So delete it altogether and limit rotation in Transform panel (except the Z-axis, of course, see the image below), and you could also limit Location and Scale (I belive, your needle won’t be moved or scaled). And change the Rotation Mode to one of the Euler’s (cause I, for example, don’t quite understand how a quaternion works). Hope, it’ll help.

A quick tutorial on how to rig a tac, speedometer and gas gauge. https://www.youtube.com/watch?v=hRnwLAFcvqI

Good luck!

Hey thanks. I’ll try it out.

(and side note about the username, I honestly been meaning to change it to be frank.)

You’re going to change your username to B. Frank? (I couldn’t help myself!)

To stay on topic, I’ll be making use of that tutorial that DanPro posted, so I’ll just say thanks for that!

I really hope I did not offend you, but for whatever reason, my tongue would not cooperate. And now that I look, I did not write your name down correctly either. 978 not 987. Sheesh!


Tis’ okay, I make that mistake once and a while too.

Anyways, I followed the tut, and am glad to say that it worked. I may post a video in the coming days (assuming I don’t forget).

@Ant, I see what you did there. :stuck_out_tongue:

Cool. Can’t wait to see it. Glad I could help.