Parenting problem - converting 2d movement to 3d


I have a seemingly simple problem I cannot solve. I have an object keyframed to move 4 units along the z-axis in 50 frames. I want to rotate this object at frame 1 so it travels in some other direction (for example rotated 45 degrees in y axis) and then change the rotation again at frame 25 so it travels in this new direction until frame 50. I do NOT want to change the original keyframes.

The solution for the first rotation is simple. Parent the object to an empty, rotate the empty 45 degrees, the object continues along it’s local z-axis but in world space is now travelling along at 45 degrees.

The second change seems impossible. The object has now moved so it’s relationship to the parent has also changed. Rotate the parent now and the object rotates around the parents position, not it’s own centre.

I’ve attached a blend file with some attempt to solve this, but it doesn’t work as I’d hoped.

  1. I created an empty (Obj_move) and keyframed it to move 4 units in the z direction in 50 frames.
  2. I created an empty (Obj_rotation)
  3. I created an empty (Obj_Direction) with a “copy Location” modifier pointing to Obj_move. This was setup to be “taget=world space” and “owner=local space”.
  4. Obj_direction was also given a “copy rotation” modifier pointing to Obj_roation.
  5. I created a cube (The Object) which was parented to the Obj_direction.

My theory was that the obj_direction (and hence the object) would copy the original movement along the z-axis but along it’s own local axis. Rotating the Obj_roation should then change the direction which the object is moving, but this isn’t the case. It simply rotates the object but doesn’t seem to affect the direction it is “facing”.

Am I doing something wrong? Is this even possible?

On the blend file the first scene is the basic setup with just a movement in z-axis.
Scene.001 has the Obj_direction rotated 45 degrees and the object follows along this new direction but any subsequent rotations after the object has moved occur around the origin and not the object centre.
Scene.002 has the Obj_rotation rotated 45 degrees but the object does not change direction. Why?

childtestbasic.blend (508 KB)

I don’t understand. " I do NOT want to change the original key frames." Do you not just ad to the key frame?. I cant picture what you want to do.

Thanks for the reply. Yes, I’ve tried to simplify the problem, but I bet in a real life situation there is a solution i’m missing.

Imagine having a complicated animation keyframed in just the x-axis where the timing and length of the animation is crucial (for example a walk cycle). You then want to send that off in a different direction and also change that direction over time. I understand that you can do this with a path, but this seems needlessly complicated and brings it’s own problems as well.

What I would like is a simple handle attached to the object (and remains attached when the object moves) that controls the direction it is facing, but when you change that direction it does not change the local direction of the object. i.e. it remains keyframed just in the x-axis but moves in the direction the handle is pointing.

I was explaining above that you can do this at the first keyframe of movement by parenting the object to an empty and then rotating that empty before the movement starts, but once the object moves (and the parent stays at the origin of movement) another rotation about the object’s local origin is not possible.