Bus doors

I know it will seem like a noob question to most of you but I dont seem to be able to put my head around armatures still or at least when trying to rig a simple bus door. Maybe its because the rotation and movement of the door is a bit tricky for me as it doesnt involve one hinge but two. As seen in the sketch.outline below the doors retract following a vertical path on the inner side and a horizontal one one the outer (joint pont). Is it possible for anyone to give me an example or guide me on how to setup this armature to make these two doors open like they do on a bus? (even a single door mechanism could suffice for now )
Thanks in advance

thinks Well, you have two choices, shape keys or a two bone armature, one bone for each edge of the door. assign a point to constraint to the bone at the outer edge of the door that points at the other bone. then you can either animate both bones or if your really good assign a copy movement from the first bones y’ movement to the the second’s x

(edited to add)
quick n dirty,


this was done without the copy move constraint as I’m not good enough to make that work

That gives me a good start, thank you indeed. Somehow I didnt think of using the bones that way. I’ll give it a shot tomorrow.

And I seem to be stuck with this again. It seems when I use the two bone systems as described by StarRanger4 above, my door deforms which is really an unwanted effect. So any ideas how to have a “3 bone” system as following?

Bone1 : moves only in x direction
Bone2 : is an envelope for the door but doesnt deform it just makes it follow it, has to be rigid and only rotate and move alng x and y
Bone3 : moves only in y direction

Any guidance on how to achieve this is very welcome :slight_smile:


Hi. I’ve been banging on this for a couple of days and finally found a solution. I’m not an expert rigger by any stretch of the imagination, so it’s possible this isn’t the best, most elegant or even the simplest solution. The most important thing is: it works.

The key to making this work was using a Copy Location constraint and using the third bone to control the Head/Tail value (zero to one).

With bone one controlling the rotation of the door (rotate.L for one door, rotate.R for the other) the second (slider.L and slider.R) acts as a track along which rotate.L or rotate.R will slide.

The rotation around the z-axis of the third bone (doorCTRL) drives the Head/Tail values in both Copy Location constraints. Add a Limit Rotation to doorCTRL so it doesn’t exceed 90 degrees and that’s pretty much it.

Here’s a sample file I threw together. Hope it helps: busDoors.blend (502 KB)

Thank you for your tme and help rontarrant :slight_smile: It’s indeed a step closer to what I need even if its more complicated than I hoped. I am looking into it as we speak and trying to adjust it to my needs. I like the fact that the mesh doesnt get distorted… that was my major concern. Now I have to get into “drivers” and find out how to control them :slight_smile: Thanks again.

You’re very welcome, Artistic. I guess I misunderstood your requirements. I re-read your original message (above) but I’m still not seeing what simplification you’re after.

Another option is using an IK stretch to model the sliding hinge, like the piston stroke in my piston tutorial. Use an armature with three bones: the ‘Door’ bone that actually controls the movement of the door is parented to the ‘Slide’ bone, and has the ‘Close’ bone as an IK target:

Allow IK to rotate the ‘Door’ bone in the usual way, but only to stretch the ‘Slide’ bone with no rotation. Moving the ‘Close’ bone inwards closes the door in the desired way:

Best wishes,


BusDoor.blend (575 KB)