I have created a model of a WWI biplane which properly rotates around the assumed center of gravity. However, since it a tail-dragger, I would like to create an animation where the tail lifts up as the speed increases. This requires me to rotate the entire aircraft vertically around the wheel axle.

I assume that I could do so by making the all of the parts children of the wheel axle and then rotating the wheel axle. But I don't want that to cause the center of rotation for the aircraft to change.

Is there a way to do that?

EDIT (Jun 26 at 2:12AM CDT)

The solutions below are very helpful.

I may have made this overly complicated by incorrectly assuming how Blender saves models. I tried a very simple approach. To keep things separate, I first created an empty cube at 0,0,0 and made everything a child of that, except the axle. I then linked the cube to the axle, moved the axle axis to the center of the axle and then created an animation where the plane rotated back around the axle. When blender exports the file, it seems that the center of rotation for the model remains at 0,0,0 (where I wanted it) and is not moved to the location of the parent part. Is that correct?

I tried it out in a three.js program and it seems to work okay. The tires are firmly planted on the ground throughout the rotation.


2 Answers 2


Make a rig.

Ultimately would make an armature, however by way of example will use an empty holding a couple of empties as a rig, that a group instance of our model, or an empty with model as child can be constrained to.

enter image description here

An empty named "Model" at the COG of your aircraft. Strongly recommend using the global (0, 0, 0) when setting up. ...and move the rig empty later to have wheels touching z = 0.

An empty named "Rig" at the COG. This will be the "root bone" to move the plane.

Rig has two child empties, "COG" at the COG and "Wheel" at the wheel axis.

Child of Constraints

Give the "Model" Empty Two Child Of constraints one targeted to "COG" first, then one to "Wheel". Assign influence to 1 ( and other to 0) clicking set inverse for each. The result we're after is plane in "rest position".

With the childof constaint of wheel at 1 and COG at 0, rotate the wheel empty until the tail spike hits the ground. This is our tail down position.

enter image description here Gif frame rate naffs the prop rot.

It would be nice to simply animate the constraint influence as a tail up tail down and inbetween however as is often the case with child of constraints once you start moving it starts naffing up..

Adding a driver.

Added a driver to both child of constraints, using the variable rotation difference between COG and Wheel (the empty that is).

When it is around 0 then the plane pivots on COG. When it is not it pivots on the wheel. That is this is either fully one parent or the other no inbetween.

Simply keyframed the wheel angle by way of example, however a speed property could drive this too.


One simple way to take care of this is to rotate by the 3D cursor. If you know the exact global space coordinates where you would like this point of rotation to be, you can enter them in the View tab from the Properties Shelf, to the right of the 3D View (press n to bring up the Shelf if not exposed currently), and under the 3D Cursor section, there are a set of transform fields. By entering the desired transform values in these fields, the 3D cursor will move to the appropriate worldspace coordinates. Alternatively, you can snap the 3D cursor to another object, provided you have a selected object whose origin is currently where you want the 3D cursor to be. You would do this by accessing the Snap menu (Shift + s) and choosing Snap Cursor to Selected. Once you have the 3D Cursor where you want the new point of rotation to happen from, press the Transform Pivot Point button at the top of the 3D View, and from the pulldown, choose 3D Cursor. Now, when you rotate the selected object (or indeed any other thing), it will use the 3D Cursor's current position as the point of rotation.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .