I want to copy an object that has a keyframe animation.

If I duplicate & move the object the regular way, the outcome is not as expected, cause the location, rotation and scale are stored in the keyframes.


Cube location 0/0/0 on frame 1

Cube location 1/0/0 on frame 25

I duplicate Cube, resulting in Cube.001, and move it to location 0/1/0. But as soon as I use the timeline slider, Cube.001 will jump to location 0/0/0 and move exactly like Cube. This is not what I want, instead I want:

Cube.001 location 0/1/0 on frame 1

Cube.001 location 1/1/0 on frame 25

Without having to manually edit the keyframes. Is it possible? Maybe with Python?

EDIT: When I use the "autokeyframe" button in the timeline, the result still isn't as expected. Result with autokeyframe:

Cube.001 location 0/1/0 on frame 1

Cube.001 location 1/0*/0 on frame 25
*wrong, should be 1

EDIT 2: When I use Delta Transforms as suggested the problem is still not solved completely.

Cube moved on x-axis via keyframes

Cube.001 (copy of Cube) is translated 1 Blender-Unit on the y-axis and rotated 90° around the z-axis using Delta Transforms

Good: Cube.001 now moves parallel to Cube instead of moving the exact same path

Bad: Cube.001 should intuitively move now on the y-axis as it's been rotated 90° - that's what you would get with local keyframes.

  • $\begingroup$ Only key in location.x on your Cube and you can move it on z, y. Or use delta_location instead. $\endgroup$
    – batFINGER
    Commented Sep 29, 2016 at 12:25
  • $\begingroup$ That's not what I want, this would be very limiting. I want all keyframes to be "offset" correctly, respecting location, ideally also rotation and scale, no matter what keyframes have been set before. $\endgroup$
    – bortran
    Commented Sep 29, 2016 at 12:27

1 Answer 1


This answer only explains why your question can't be answered satisfactory.

This behaviour is correct, everything else would be highly confusing. You want to move all Y keys, so instead of selecting the object and moving it along y in the 3D view, select the respective tranlateY curve and move it along Y. I know you stated, that this wouldn't be the solution, but this is the way the interface works. In the 3D viewport, you edit one state (of time).

Everything else would be unclear, because how could you control which (all or current) keyframes would get modified in any transform operation.


  • As batFinger suggested edit the Delta Transforms, they do exactly what you described.

  • Parent the animated object to an empty, create the offset on an empty.

  • Stack the action down into the NLA editor. The new action only has the offset keyframe.

  • (Obviously grab the keyframes of the animation curve.)

A python approach would just simulate one of the methods above.

  • $\begingroup$ I do not agree with your answer. I found several posts that show different users struggle with the same problem like here: blender.stackexchange.com/questions/12211/… Other users state that in e.g. 3DMax all keyframe animations are local, which is way more intuitive. I cant confirm this cause I'm not a 3DMax user. $\endgroup$
    – bortran
    Commented Sep 29, 2016 at 12:55
  • $\begingroup$ @bortran The problem you linked, is about a problem with gimbal lock. Your cube setup is solved by any of the suggested methods, without causing more work. Maybe edit your questions to include a more specific example? $\endgroup$
    – Leander
    Commented Sep 29, 2016 at 13:14
  • $\begingroup$ "Why are keyframes in global coords, instead of local coords?" is the title and the main problem of that post. $\endgroup$
    – bortran
    Commented Sep 29, 2016 at 13:29

You must log in to answer this question.

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