I have potentially discovered a bug in Blender 3.0 (that's my working assumption at this point), though perhaps this is normal behavior and I'm just missing something.
I have an armature action, crawl_out
that is roughly 10 frames long, at least as viewed in the action editor:
Looks fine enough, but if I view it in the timeline or the NLA, there is suddenly a new keyframe on frame 38:
If I try to select that summary keyframe and move it around, I cannot. It is stuck in place. Furthermore, there are no visible f-curves that have any keyframes on frame 38.
I did a bit of recon into the underlying data for the armature with this little script to see what was happening. The script finds the fcurve data path with the largest frame index and prints it out:
import bpy
from math import inf
action = bpy.data.actions['crawl_out']
max_frame = -inf
max_fcurve = None
for fcurve in action.fcurves:
for keyframe_point in fcurve.keyframe_points:
frame = keyframe_point.co[0]
if frame > max_frame:
max_fcurve = fcurve
max_frame = frame
print(max_fcurve.data_path)
print(max_frame)
This script prints out the following:
pose.bones["Forearm_R"].location
38.0
Okay, so we have found the culprit! But, when I go to look to see if Forearm_R
even has any keying on this action, it is not there. I grabbed the bone in pose mode and tried to just add a keyframe to create the f-curve for it (to see if maybe I can then go and delete the phantom keyframe), but then I get the following error:
I am at a bit of a loss as to how this has happened or how to fix it. Maybe someone knows something I don't.