Problem where rotation and scale change when using Animation or Pose Library

I’ve been working on a character reload animation, but I’ve been having an issue with my model’s upper arms snapping to new rotation and scale values on animation playback and when applying a pose. To start, I select the armature and inset a keyframe. Then, to test it, I play the timeline, but the arm transformations snap to new rotation and scale values. The further the arm is moved or rotated, the harsher the snap. The same thing happens when I attempt to set a pose, where I can add the pose to the Pose Library, but when I apply it the model snaps like it did in the animation. I have not been able to fix this problem for a few days now, and I can not for the life of me figure out what is causing this problem. Any help or advice would be greatly appreciated.

How familiar are you with animation?

If you change the transformation of a bone, but do not keyframe it, and there are any existing keyframes on that bone, then the change you made is only temporary– the instant you hit play, or render, or save+reload the file, it will be forgotten, and your bone will “snap” to the keyframed/interpolated transformation.

When you load a pose from the pose library, all you’re doing is changing this “temporary” value for the bone. If you do not keyframe afterwards, the pose will be lost.

If you see harsh snapping within an animation, while playing, that’s not a function of pose library or anything, just a function of what your keyframes are, how close they are in time, and the interpolation between them. Take a look at a graph editor view for a better way to see and edit interpolations.

If you don’t want to have to set keyframes, try enabling auto-keyframing (the button that looks like a record button, down on the timeline view.)

I had a similiar problem. My model would snap to a new location. I discovered I had a bad action set. I erased all keyframes in the bad action set. Still have not found the correct way to fix it.

Thanks for your reply! I’m familiar with animation, and I have been inserting a keyframe for the entire armature, including every bone. I don’t think there are any existing keyframes prior, and there are none following, so the transformations should stay constant with nothing to interpolate to. Here’s a imgur link with 3 pictures that better show my problem.

In the first pic, I selected the armature and inserted a keyframe for the Loc, Rot, and Scale. In the second pic, I selected the upper arm and noted the Rotation and Scale. In the third pic, I played the animation with the upper arm selected, and saw the scale snap to 0.987 and the rotation to change wildly. If you look closely at the right hand thumb in the 2nd and 3rd pic, you can see it snap inwards.

It seems that the upper arms and thigh bones are the only ones that are being affected by this snap. I don’t know if that’s because they are constrained to only rotate, or if they’re being influenced by another part of the model. I’ve used auto key quite a bit, but for a looping animation, I wanted to have a pose that could serve as the start and end of the animation and have a smooth loop.

I’m glad that I’m not the only person with this issue. I’ve been looking for days trying to find someone else who encountered an issue like this, but nobody seemed to have it and everything I’ve tried doesn’t seem to have an effect. I initially thought there was a Copy Rotation bone constraint, but the model doesn’t have one. I tried to see if the armature was being influenced by another object/rig, but I couldn’t find a correlation.

I also tried deleting the accompanying action set, but I still encountered the same problem.

If you only have one keyframe registration, with flat handles, there should be no animation on playing it.

In order to see what you’re talking about, which isn’t going to be something apparent with stills, you should upload a file. If the problem is apparent from an animation contained in the file, then it can be troubleshooted. If it’s not apparent from any animation contained in the file, then we’d need the exact steps to reproduce it as well.

I would like to upload the .blend file, but I think this site won’t allow me to upload the file since I’m a new user. If there’s no better way for me to link my file, I am using the ‘Pharah v3’ rig from here: https://pharah.gitlab.io/guide/#user-guide. The freshly downloaded model has the same issue that I’ve been dealing with.

Okay, so what are the simplest, exact steps to reproduce your issue, from a fresh download of that file, and at what point does it behave differently than what you expect; what is it that you would happen to expect instead?

From a fresh download:
Delete the background object.
Select rig, enter pose mode.
Select Left Hand IK (hand_ik.L)
Move into new position (I moved it straight out, almost like a T-pose)
Hit ‘A’ to select the armature, press I, and select “Location, Rotation & Scale”
Play the timeline (spacebar)

From here, I see the the upper arms snap. Looking at the transformations for ‘upper_arm_ik.L’, the Scale increased by about 0.057, and it adds rotation in the X and Z, which should be locked since the IK can only rotate in the Y.

The difference occurs where the model should remain static as there are no other keyframes on the timeline. I expect the model to remain static when the timeline is resumed, but in this case these IK bones shift, causing their linked bones to shift as well. This changes the topology of the model and makes it quite jarring and not suitable for precise animation.

Did you see a similar snap? Depending on where I place the IK hand, the snap becomes more or less pronounced, and making a new keyframe with the snapped model snaps it even more.

When following your exact instructions, there is no snapping on the “animation”. The rotation on upper_arm_ik.L is exactly the same as it is in the fresh file (-0.776 degrees in Y) and its scale and location are zeroed (as it should be, since I didn’t do anything to it other than keyframe it.)

On what frame are you registering your single set of keyframes? What frame are you seeing a snap at? What addons do you have enabled?

(And to clarify, I interpreted “Hit ‘A’ to select the armature, press I, and select “Location, Rotation & Scale” to mean, select all visible bones in the armature and keyframe all of them, since we’re still in pose mode.)

File is huge, even after deleting whatever I easily could, so I can’t share, but here are my transforms for upper_arm_ik. after translating hand_ik.L, keyframing all bones, and playing through the timeline:

They’re the same for every frame, just like they should be.

I just re-downloaded the model and tried did the same actions as I did before, but the same issue keeps happening.

I’ve been registering the keyframes on frame 1, but the same issue occurs at every other frame that I’ve tried, i.e 120. The snap doesn’t occur at a specific frame, it happens as soon as the animation resumes. Again, the scale and rotation snap to different values. I don’t know why it works fine on your system and doesn’t on mine.

What happens when you only keyframe the bone you manipulated (hand_ik.L), rather than all of them?

Issues that could explain differences are addons you have installed and whether you’re set to autorun python scripts. (Which I had enabled.)

(Wait, you’re not registering visual loc/rot/scale are you? That’s different, and would explain what you’re seeing. Don’t do that. Just register “Location, Rotation, & Scale”.)

Huh, it looks like if I only keyframe the hand_ik.L, then the upper arm doesn’t snap. Maybe the quaternions are getting screwed up and it doesn’t know how to properly orient themselves? And yes, I’m registering the normal Loc Rot Scale.

I just opened up another one of the models I’m working with, and it looks like the same thing is happening with this model too.

I guess the issue appears when the upper_arm_ik.L gets keyed. Unfortunately that controls the direction of the elbow, and I need that for the animation. At this point, I don’t think it’s the model that is broken, maybe my Blender is messed up, and a fresh install would help? I’m currently on 2.91.0.

Look in Blender preferences for “visual keying”. What you’re describing would be explained by that.

1 Like

Oh my god, that was the problem, I had visual keying turned on. I knew it had to be something small, but I would have never figured out it was a setting. Thank you so much for your help and patience with this, I would never have figured it out without you!

1 Like