Hopefully simple rotation question


I thought it would be easy but I am having trouble trying to figure out how to do this.

I have an object, lets say rectanglular plane positioned in 3d space but not aligned to any of the World x,y,z axis. How would I make it rotate around an arbitrary axis ? For example I want it to rotate around its long edge.

Thanks for any help


When rotating an object, you can choose its pivot point … see:
http://www.gryllus.net/Blender/LearningUnits1_5.html (Rotating Objects)


Thanks for reply, but yep, I knew that already

I still cant figure out how to make those options give you rotation around an arbitrary non aligned axis, I.E the long edge of my rectangular plane example

Any ideas ?


If you keyframe about 4 locations around that point, Blender should figure the rest out. You can set the curve interpolation to constant, and it will continue rotating around forever.

I thought I had it sussed but I havent

The obvious way was

Select a vertex on the long edge, move cursor to that vertex

Select rotate around cursor

Then click R,X,X to rotate about the objects local X axis , this works, but there is a proviso

It only works if the object has not had “Apply scale and rotation” applied to it.
if you do that it aligns its local axes back to the world axes and therefore stops the above trick from working.

As my objects have had “Apply scale and rotation” applied, means I am still stuck


You can rotate your vertices based on some edge in following way:

  • Select the wanted edge.
  • Set view to front (shift-v -> front) of it.
  • Set 3D cursor on the location of the edge (shift-s -> cursor -> selection).
  • Set orientation to view (alt-space -> View)
  • Select vertices to rotate based on the edge. You can use some other viewport for this for instance.
  • Set pivot to “3D cursor mode”, hit r and y twice.
  • Rotate.

Thanks for the reply Bebraw

Either I am doing it wrong or it is not working
Are you sure the method works if the object has had “Apply Scale and rotation” applied to it ?

I can get it to work if it hasnt had “Apply Scale and Rot”, but if it has then the local axes are parallel with global axes, which means it cant work ?


Note that the procedure is supposed to be done while in the edit mode (this may have been obvious but just making it sure).

I tested it using a plane (in edit mode) and suzanne (in object mode).

I am not sure about the “Apply Scale and Rot” issue. Perhaps there is some workaround for it. The rotation should happen using View axes so that shouldn’t be an issue as far as I understand. I may be missing something here though.

In the Scripts window under Object is “Axis Orientation Copy” with which you can use another Mesh Object to reset the axis on your present object.


Thanks for the tips

By taking suggestions from both replies, i have come up with something that works for getting the rotation along the arbitrary axis. I found because I had already lost the local axes due to the earlier “Apply Scale/Rot” I needed to do the Shift V thing and also to use the script “Axis Orientation Copy”. It works but it is tedious to do more than once

Once I had essentially got the local axes back on my object I need to rotate, I animated 10 frames, works fine

Then I remember I needed to do the “Apply Scale/Rot” once more before I can export the file. But in doing this to my 10 frames it totally screws up the object position in the animation.

So I have got a conflict that I cant see a solution to, the rotation to be correct needs local axes, but the export needs the local axes to be reset to world axis by the “Apply Scale/Rot”.

I need to have a longer think about this or can anyone else throw in some ideas how to work around this conflict ?


BeBraw’s idea should work.

You could also align the view with Shift-V as described, then add a single-bone armature in that orientation with its root on the pivot edge. Add the appropriate armature modifier to your plane. To animate, rotate the bone along its Normal coordinates.