How to animate on the axis of rotation?

Hi! I posted this question over on stackexchange but I was hoping to get an answer more quickly on this issue.

I want to animate this propeller spinning in Blender 2.8. I have oriented the local axis of rotation as described here.

It appears to rotate correctly here

Then I keyframe the rotation

The resulting playback is a very chaotic rotation on a different axis

Any clarity on what I am not understanding about this process is greatly appreciated. Thanks.

Not 100% sure, but this might be your problem:

QUr8bQU
Try to apply the transform rotation.

Object > Apply > Rotation

You might also need to re-do the keyframes after applying. Let me know if this solves the problem for you.

Hi MooseHeadMedia,

If I understood you correctly, I tried doing what you suggested in this order.

side view showing correct axis orientation (afaik)

rotation values shown before Object>Apply>Rotation
21%20PM

I then use Object>Apply>Rotation
54%20PM

The resulting values
21%20PM

Then I set my first keyframe at 1
08%20PM

34%20PM

Then I rotate the propeller using the rotate tool (only because when I try this through the properties panel, the rotation is not keeping the local coordinates and it wobbles. Using the rotation tool does not produce a wobble but it introduces multi-transformations…
Prop_Rot3

…as seen here
Prop_Rot4

Again, I am doing it wrong. Thank you for any new insights.

Okay, I think I got it figured out now. Made a video to make it easy. It’s still processing, so it might be low quality

YouTube - Blender Tutorial - Keyframing a Local Axis Rotation

3 Likes

Basic instructions (in case it’s hard to see exactly what is going on):

  • Create empty object
  • Add object constraint to propeller, Copy Rotation
  • Set Target to the empty
  • Change second “space” setting to Local Space
  • Tick the Offset box
  • Find the right axis to rotate the empty, and set the keyframes
2 Likes

Hi,

custom orientations are basically just for modeling, not for animation. Animation always works in local space, ie relative to those axes you see when you select “local” in the orientations popover. Your object should be modeled according to the world axes, regardless of its final position on the plane - and then only, placed and animated. The thing is, if the placing requires a bit of rotation, it’s going to get biased (look up euler angles and gimbal lock on youtube) - so in this case you should either parent it to an empty, place the empty on the plane and the animate the object, OR (that’s my recommendation) make a simple rig using an armature, because Blender handles all the rest pose stuff for you. Just placing a bone and parenting the object to it is enough (use relative parenting so you can adjust the bone after parenting without the object moving).

Hadrien

3 Likes

Hey MooseHeadMedia! Yes! Your video helps so much! I set up my file the same way. The only issue I have to solve now is that the axis of the propeller is not aligned with the local axis of the same object and so it still wobbles during rotation of the empty. The only transform orientation that aligns is my custom “prop” orientation but rigging that to the empty causes the same chaotic rotation as before. The reason why I made this custom transform orientation is based on this question where I thought this would help solve wobbly rotation. Sorry that my understanding is hazy on this topic. Any tips on solving that issue?

Global Transform
04%20PM

Local Transform
15%20PM

Custom “prop” transform
29%20PM

Hi Hadrien,

Thank you for your response. I am starting to understand this concept. I didn’t model the airplane and I’ve been trying to correct it to be able to be animated. Not sure how to reset the propellers to be oriented precisely on XYZ Global space but I’m doing my research to figure this out. I also need to look into using an armature to solve this. I saw a good video on gimbal lock and I can understand a bit better now why this is bias is happening.

1 Like

Okay, I got it figured out with your help and help of several other sources. I had to make a new local origin as described here the bottom answer to make a helper object and basically borrow its origin. Then I used your method to animate it using object constraint. I then used the answer here to animate it rotating indefinitely. Whew! Thank you again! I am so stoked!
Prop_Rot5

1 Like

Glad I could help! I also learned some useful stuff, so it’s a win-win. Blender can be insanely frustrating, but when you finally get the effect you’re looking for, it’s so satisfying.

1 Like

Excellent! Glad we both got something out of this. Yes, I couldn’t agree more. Blender is insanely frustrating at times (I think I’ve been “learning it” for many years) but finding the parts that connect the dots is doubly rewarding.

Great you managed to make it work. “Resetting” an object in Blender is called “applying transforms” (or applying translate, rotate and scale independently) and is under ctrl+A. Note, be careful when doing this, it will break any existing constraints, etc. because the pivot will change (but the mesh won’t budge visually).

1 Like

Thank you! Ah, yes, and when I applied transforms to the propeller on all transforms, the origin goes back to 0,0,0 so I have to snap it back to the propeller object. What I really was struggling with it to orient the propeller to a “square” angle in the worldspace and couldn’t seem to do it (it was always off by a little bit). I tried snapping to a face of a cube but it wouldn’t do it exactly. Yet another skill I need to learn. I was hoping to get a working version of Mesh Align Plus to make it easier/more precise in the latest version of 2.8.

When you do a transform operation (g, r and s for translate rotate and scale respectively), you can type in values and hit return. So, to get a right angle just hit r, (then optionally x y or z), then 90, then return.

Right, I do know about this. My problem is that I didn’t model the original so all these orientations were there already. Rotating 90˚ would still have the object at an angle. I would need to guess at how many degrees to type in to correct the angle be it 1˚, 2˚, 5˚, etc. which is not really precise imo. Aligning to a face of a primitive would be ideal but I couldn’t make it work.

Oh, right, sorry. Hmmm, solving this is very easy. Say the rotation you want to correct is on the vertical axis - set your view to top and create an empty. Snap it to any point on the center line of the propeller. Then duplicate that empty, place it on another point on the center line, but some way further on Z (forward axis). Basically your two empties must lie on an imaginary line that will become the new forward orientation of your propeller. Then add a damped track constraint to the first empty towards the second. Then, parent your propeller object to the first empty (keep transformation). Now, move the second empty on the same X value as the first empty (copy transform value from sidebar). Your propeller should be aligned. Now, apply transform and unparent.

1 Like

Hey guys, found the copy rotation function really useful but still had issues, im making a bike and the forks/bars etc are at 75° to floor, i got them to rotate nicely using copyrotation but as soon as you rotate the whole bike in anyway the rotation of the forks goes haywire again, tried using a second plain axis for whole bike rotation and have the first set of axis copyrotation of that but no luck,

in the end i found the answer to simply be Pose mode, one bone aligned with forks and set to 75° then go into pose mode and everything works, even when bone is parented to master bone and bike is rotated to different angles the forks spin in the headtube,

i did find it best to parent as ‘Bone’ and when in pose mode my custom Z axis became the Y instead but still custom Y not global.

Defo important to take note of the custom angles, if youve lost the angle of your object then snapping a new object to it would defo be the way to get it back.