Syncronized Rotation

Hi, I am building an aircraft and want to be able to control the rotation of the flaps/aierlons on the wings. So far my solution is to just parent an empty to the flap with rotation contraints. This allows me to rotate the flap simply by rotating the empty. However, I want to be able to have the flap on boths wing syncronized so I can rotate them simultaneously when a mirror modifier is in use for the wings. Problem is they are obviously at different orientations (angles) from each other (see pic). So the flap rotation on one side of the mirror rotates fine, but the other side the rotation is out of whack (I assume because the flap axis is different).

Any ideas on how I might accomplish this??


I am also intrested in this.

you can use different way to do that. One of my favorite way is to use a f-curve driver.
I explained how to use it in a tutorial. In the video it’s around 6’20’’

I hope it’s going to help you.


Thanks mathiasA - but this seems way to complicated for my simple mind. There must be an easier way to do this.

Your bones are set up wrong to start with.

Rig the plane with an armature; the main body should be a bone from head to tail. Have it set to “mirror X axis” so that when you [SHIFT][E] to extrude to where you want the flap bones to be (the [Shift] makes the extrude obey the mirror and toy get two bones) then you will have two identical bones going to the flaps. From these ends, extrude the flap bones (no more [Shift] needed) and be carefully to position them (Edit mode) so that they line up exactly with how how they should in order to rotate the flap correctly as a hinge. You can delete the bone going from the body to the new flaps.

Once flap bones are in positions, have the flaps as separate mesh objects from the plane (and unmirrored, separate from each other… personally I would have their centrepoint at the mid hinge point). By parenting the flaps to these bones, the animation should be spot on, and you only need to use a Copy Rotation bone constraint to get them mimicking each other.

With driven keys (given above) it’s possible to add a switch in the rig to allow for making “opposite” rotation, so one flap up, the other down, though that’s another level again.

My suggestion is to make your Flaps… Right Flap… Left Flap… Make an Empty…
Select the Right Flap… Goto Properties > Constraints (Chain Icon) > Add a Constraint > Copy Rotation > under Target pick Empty > Leave ‘X’ channel selected and unselect Y and Z (note given that the x- axis is the desired rotation channel) (also note you might want to set both ‘Space’ boxes to Local instead of ‘world’ depending on your setup…
Next Select… Left Flap… Goto Properties > Constraints > Add a Constraint > Copy Rotation > under Target pick Empty > Leave ‘X’ Channel selected and unselect Y and Z > the Select the box under ‘Z’ that says ‘inverted’ now this flap will Rotate the opposite of the Empty…
Select the Empty and Rotate it on the X axis and you should have Flaps…
Parent both Flaps and the Empty to the fuselage of the Plane…

it’s true that on my tutorial it seems a bit complicated but it was to fake the dynamic of a screen falling, but in fact, and for your case, it’s pretty simple, and plus as lancer said, with the driver, you can also control the opposite rotation (which I thought it’s what you wanted from the beginning… lol).

Norvman ways is a good solution for same rotation.

here is a more simple explanation with the driver.
You need to have an empty on each flaps you want to control, the empty being aligned to the axes you want your flaps to rotate on. Then you need to parent your flaps to their empty.

so now we can animate the empty to control the flaps.

  1. in the transform window on the rotation axes you want to control, right click and select ‘add single driver’

  2. open the Graph editor window and change F-curve Editor to Driver.

  3. With the empty you are working on selected, you should see in the graph editor window the driver you just added in the top left corner. click on it and if the property window is not open it, open it (N key).

  4. under the add variable button, there is already a variable existing… let’s call it “rotation” instead of “var” and just under, pick transform channel, since it’s the transform channel of another object that will control our rotation.

  5. in the Ob/Bones, pick the object that will control the rotation, if it’s a bone, pick first the armature and then the bones. in the type, pick the transform channel that will control your object. and in the Space, I’m assuming that you will want Transform Space.

  6. (it’s almost done! lol) above the variables, you have a button with multiple choices, usually on default it’s on scripted expression, and if it is, leave it that way. And just under, you should see for now 0.000, let’s replace it by the name of our variable “rotation” and here in a simple way, you can adjust it. for example if you write “-rotation” it will be the opposite rotation. if you write “rotation*0.5” it’s going to rotate half of your controler rotation… and so on!

Here is a file that shows the final control. The control works on the Y and X rotation.

good evening.



rotation.blend (386 KB)

If your up to doing things with Drivers like @mathiasA is suggesting … then do that… Drivers are just way cool Rigging tools…

I go with Copy Rotation. Only thing is that you can’t just mirror both flap unless their hinge axis remains inline with each other. Each flap must be a separate object with hinge line / axis line set up in line. Here is quick example:

Flap setup with each flap with hinge axis in line with X axis. Note that Empty sits in World Space and Flap axis is on its Local Space. X axis points to the same direction, and not flipped about aircraft. When you rotate Empty, the flap rotate in unison about its local space hinge. Also it is not a bad idea to “lock” axis that is not used in Properties shelf.

Aileron setup is same as flaps. Only difference is that for one side X rotation need to get reversed. That can be set easily by selecting “Invert on” on one side. Alternatively you can setup Aileron hinge X axis pointing away from each other as well. But really a proper constraint to use here is Transformation Constraint. This will allow Empty to be setup so that as pilot rotate the control stick left or right the movement is transformed to Aileron in rotating it up or down. But as far as I know this constraint is not fully functional at this time.

With object rotation method it is a pain to place origin center and line up axis. I did it all visually!

Using bone, it is straightforward to create it along the hinge line. Parent it to the flap / aileron objects. And with Normal transform orientation setting, you can rotate the flap / aileron by imputing rotation. I am still scratching my head to connect it all to single controller for synchronized movement.

Pydriver. Dead easy really. I usually make a slider (circle inside a rectangle) which is really two bones and the constraint gets pydriver enabled (influence) depending on where the slider is at in Pose mode. For full range in this case I would have a 3 stage slider: Top position makes the left flap follow the right flap, middle position means the left and right would be independent, and while the slider is at the bottom, the left flap would be the opposite of the right flap. This way you can have the best of three worlds, all via one slider.

I’m thinking of releasing a rig shortly where sliders are used for all kinds of things, though I’ve detailed the process of making sliders in BlenderArt magazine#35, with a tutorial on making a switch to swap between IK/FK rigs. I should probably add that these methods are towards the more advanced side of rigging.

@ridix… Hey… great mini-tutorial there guy… !
@Lancer … I saw that Artical in BlenderArt 35… nice… :yes::yes::yes:

I am trying to understand Pydriver. Mean time, as I worked with Armatures, it is clear that one can create simple control using Bone and Rotation Constraint alone. You can replace Bone in place of Empty really. And Bone can be created along the hinge line easily by snapping it to geometry vertexes.

This rig is made up of Joystick bone, which control Aileron Bone and Elevator Bone. Each Aileron has its own Bone parented to the Aileron object. Bones point away from each other. This will cause counter rotation. Elevator Bone points down. That will cause elevator to point up if Joystick bone is pulled back.