Page MenuHome

Different results when keyframing visual transforms and applying transforms manually on IK constraint
Confirmed, NormalPublic

Description

Blender Version
Broken: v2.82a and blender-2.90-f9d0f59bed4d-windows64
Working: never, tested with 2.75a and that even shows this issue.

Short description of error
There is a difference between using the insert keyframe menu to insert Visual LocRot compared to if you Apply Visual Transform to Pose and then use normal keyframe LocRot.

Exact steps for others to reproduce the error

  • Open the attached blend file.
  • Set a VisualLocRot keyframe on the root bone.
  • See in the graph editor that the orientation is keyed with quaternion (1, 0, 0, 0), even though the bone was visually influenced by the IK constraint.
  • Disable the IK constraint, and see that the root bone moves.

Using Keyframe Menu (broken):

Iterating Keyframe Insertion (Semi-working):

Manually applying transforms to Pose (working):

Event Timeline

Greg (sok0) updated the task description. (Show Details)
Greg (sok0) updated the task description. (Show Details)Fri, May 15, 9:13 PM
Germano Cavalcante (mano-wii) changed the task status from Needs Triage to Needs Information from User.Tue, May 19, 2:50 PM

Could you provide a simple .blend file demonstrating the problem?
Also videos should be used to quickly describe the problem and not as steps to reproduce the problem.
A guideline for making a good bug report can be found at https://wiki.blender.org/wiki/Process/Bug_Reports

Armature was keyframed with Visual LocRot
Armature.001 was keyframed after using Apply Visual Transform to Pose

Expected result should be the same. Instead the Visual LocRot does not properly keyframe the pose position of the IK constraint.

Germano Cavalcante (mano-wii) changed the task status from Needs Information from User to Needs Triage.Tue, May 19, 7:44 PM

@Greg (sok0) Please test with older versions of Blender to see which version of Blender still worked properly. This will help developers in finding the root cause of the issue.

For videos, please use h.264 in an MP4 container, so that they can be directly played back in the browser. Re-encoding them after the recording will make them much smaller (I have them stored at a 1/35th the file size on my machine after locally re-encoding them).

Sybren A. Stüvel (sybren) changed the task status from Needs Triage to Confirmed.Fri, May 22, 3:49 PM
Sybren A. Stüvel (sybren) updated the task description. (Show Details)

@Greg (sok0) Please test with older versions of Blender to see which version of Blender still worked properly. This will help developers in finding the root cause of the issue.

I tested with few older versions. As you go back in the versions it never seemed to work and at some point the Apply Visual Transform to Pose operation stops working as well so it's not possible to test further.

2.79b not working, same behavior
2.77a not working, same behavior
2.60 not working, apply pose as rest pose doesn't work either
Blender 2.5 doesn't work and apply pose as rest pose doesn't work either

For videos, please use h.264 in an MP4 container, so that they can be directly played back in the browser. Re-encoding them after the recording will make them much smaller (I have them stored at a 1/35th the file size on my machine after locally re-encoding them).

got it

@Greg (sok0) thanks for testing. I did some digging, and it's due to the way visual keying is implemented in Blender (visualkey_can_use() in keyframing.c). It will fall back to regular keying when there is no parent bone and no constraint on the bone either. This "no constraint" check does not consider IK-chains on child bones, which is why the root bone of the chain isn't keyed correctly. This has been pretty much been the situation since the code was ported to Blender 2.50 (rB6343d4e233e9) 11 years ago.

This can be resolved by simply always performing visual keying when a user chooses that from the keying set menu, regardless of whether there are any constraints. This would be a bigger change than is currently possible for Blender 2.83, though. First and foremost, this change in behaviour should be discussed with more animators, which I'll do.

@Greg (sok0) Is visual keying part of your day-to-day workflow? Or is it just something you're trying out?