5
$\begingroup$

So, I've been using Blender for several years, including a fair amount of animation, and in the past it's always been useful to align an object with its local coords. I.e. having the y-axis pointing down the nose of an airplane makes it much easier to animate.

However, I recently noticed that the keyframes aren't recorded in local coordinates (anymore?), but in global coordinates. This makes animating off-axis rotation very difficult.

Changing the rotation mode doesn't seem to help (Euler, quaternion, etc.).

Unfortunately, I can't upload any examples because the project is proprietary, and I don't really have time to setup another animation, but the example goes something like this: I want to animate a record rotating in a record player, but the player is not sitting flat, it's tilted at an angle. Normally, this wouldn't be a problem. Just model the record with z up, and you can tilt the record at whatever angle you need so that it sits on the tilted player, and still rotate the record around its own z-axis, right? Unfortunately, this is not what's happening. Instead, I animate it rotating 180d twice and it wobbles all over the place because it's interpolating global coordinates, not local coordinates.

EDIT: Here's a demo afterall: https://www.youtube.com/watch?v=nimTjEYwcnE

It maybe a little hard to see because it's so fast, but the second time I animate the cube, it wobbles instead of rotating around its own z-axis like I expect it to.

Does anyone know what magic button I pressed that did this?

Or am I just crazy and remembering something that has never been possible? It's happened before...

EDIT: In fact, I KNOW this has worked before, cuz I just went back and looked at some old stuff, and I know I animated using the local coordinates then... I'm gonna go see if 2.70 behaves differently from 2.70a...

EDIT: Nope, 2.70 behaves the same way.

$\endgroup$
  • $\begingroup$ I didn't know you could use local coords :P (Though I have not done much animation, so it's more than possible I just don't know..) What I would do in this situation is use a copy rotation constraint to copy the Z rotation of an empty in world space and convert it to local Z rotation. $\endgroup$ – gandalf3 Jun 13 '14 at 19:02
  • $\begingroup$ That might be the best option for now, because I'm pressed for time, but this feels like something Blender has done before, and something it should be able to do. Turns out, it's easier to demo than I thought. I'll add something shortly. $\endgroup$ – Matt Jun 13 '14 at 19:06
  • $\begingroup$ You would usually parent the rotating record to another object (keep transforms?), can be an empty, then use that other object to position and tilt the rotating object. It will rotate around its local axis. $\endgroup$ – CoDEmanX Jun 13 '14 at 22:54
  • $\begingroup$ Create an empty. On the rotating record add a "copy rotation" constraint using the empty as target, selecting the axis you need and using WorldSpace<->LocalSpace EXAMPLE:pasteall.org/blend/29792 $\endgroup$ – cegaton Jun 13 '14 at 23:27
  • $\begingroup$ If you open the example, set the rotation to "ZXY Euler" then you can rotate the record on its own z axis like you'd expect...pasteall.org/blend/29793 $\endgroup$ – cegaton Jun 13 '14 at 23:43
4
$\begingroup$

Sometimes this problem can be "solved" by choosing a different Rotation Mode. "XYZ Euler" is popular (because it is the default), but sometimes people pick a different one, either to avoid gimbal lock, or to achieve a particular animation effect.

However, the general purpose solution is to use parenting, either the genuine object parent field, or a Child Of constraint. You tilt the "parent" such that one of its axes is what you want to rotate around (lined up with the spindle of the record player), then animate the rotation of the record around a single axis. As you can see from the many comments, there are a couple of different ways to accomplish the effect you want, and each one has its pros and cons.

The Humane Rigging series has a few videos that might expand your understanding, the one I'd start with is Humane Rigging Chapter 3 part 3 although you will probably want to watch part 2 and 4 when you have some spare time.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.