0
$\begingroup$

[Sorry for the long post, I tried to keep it short but that's the best I was able to do] I tried to make the question as simple as I could but I think it will be clearer with an exemple (animators familiar with 3ds Max might find it easier to undersand because that's something Max does by default):

Imagine you have an object, a cube, and you animated the position (location) of that cube. So you have, for exemple, 4 keyframes:

  1. Frame zero: 0,0,0
  2. Frame five: 0,5,5
  3. Frame ten: 5,10,5
  4. Frame fifteen: 5,10,10

After you set the keyframes you realized you needed the cube to start not at 0,0,0, but some other location (like 100,100,100). But you still want the animation to play the same relative to the initial location, regardless of where that initial location is. In 3ds Max, you just turn off auto-keyframing, and then you can simply move the cube to the new starting location and the animation will update relative to the change you made, without setting any new keyframes. So, with auto-keyframing turned off, you go to frame zero and move your cube to the desired starting location, for exemple 100,100,100. Then the animation will be:

  1. Frame zero: 100,100,100
  2. Frame five: 100,105,105
  3. Frame ten: 105,110,105
  4. Frame fifteen: 105,110,110

The animation keeps exactly the same, but offset by the change you made when auto-keyframing was off.

As you all know, Blender doesn't work that way: if you try to move an animated object with auto-keyframing turned off and you don't set the keyframe, the change just doesn't 'take' and the object's location reverts back to where it was in the animation. If you set the keyframe, the location will be update only in that keyframe, but other keyframes won't be updated relative to this new location. I know I can parent the cube to an empty and move the empty, and that works for a simple animation such as the one I described, but now imagine the cube is actually a bone in a complex bone chain, and you are animating the rotation instead of the location. It's already parented to other bones, and parenting it to something else will break the armature.

So that's the question: is there a way to make a single change that 'offsets' the values of all the keyframes in the animation?

$\endgroup$
2
  • $\begingroup$ From your question, a "Master Parent" should do what you're seeking. See here - blender.stackexchange.com/questions/106609/… $\endgroup$ – Edgel3D May 3 at 1:21
  • $\begingroup$ This works for moving the whole armature or bone chain, but not for specific bones in a bone chain, like when you want to offset the animation of some bones and not others (for exemple you want the angle of the head and neck bones to be offset by 10 degrees, but you don't want to change offset the spine and other bones in any way). I was hoping there was a simple option to make it work like Max and just 'take' the transformations you do when auto keyframing is disabled and apply it as an offset to the whole animation (as opposed to applying as a single keyframe or not applying at all). $\endgroup$ – Alexandre Marcati May 3 at 17:18
2
$\begingroup$

Let's start with a simple animation.

enter image description here

With the Delta Transforms

I think this would be the preferred way to do it since it is pretty straightforward.

Head in to the object properties and expand the Delta Transforms panel. There you can add an additional transform that will be added to the animation.

enter image description here

Note the Delta Transforms can also be animated.

With the graph editor :

Hide all the channel you want don't want to offset. Select the channels you want to offset with A while hovering over the curves.

enter image description here

Now type G, Y, 100 and Enter to validate. This will grab (G) the curves, and move them uniformly along the Y axis (the actual transforms values) by 100 units.

Note that if you press G, X and a value this will offset the keyframes along the time axis.

You can also access the Grab tool by going Key > Transform > Move

enter image description here

$\endgroup$
1
  • $\begingroup$ Thank you. The delta transform is useful information. Unfortunately single bones don't have the delta transform option (only the whole armature). I was afraid the only option would be to edit the keyframes directly in the curve editor as you suggested. In a complex character animation it's very impractical to get the position you are aiming for when you are dealing with multiple bone rotations in a complex bone chain. Was hoping there was a better option, like what Max does. Thanks for the answer anyway! $\endgroup$ – Alexandre Marcati May 2 at 15:33

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.