Coming from a Maya background, the thing I genuinely missed most when switching to Blender for character animation wasn't the Trax editor or the shelf. It was the breakdowner. Hold a modifier key, drag left or right, and your pose slides between surrounding keyframes in real time. It's one of those tools that sounds minor until you've used it for three years and then suddenly it's gone.
Blender has nothing equivalent built in. You can manually tweak values or mess with Interpolate Rest Pose, but neither is the same workflow. After the third time I found myself scrubbing back and forth trying to eyeball an in-between, I wrote this:
import bpy
def get_surrounding_keyframe_values(fcurve, frame):
before_val = after_val = None
for kp in fcurve.keyframe_points:
f = kp.co.x
if f < frame:
before_val = kp.co.y
elif f > frame and after_val is None:
after_val = kp.co.y
return before_val, after_val
def breakdown_pose(weight=0.5):
obj = bpy.context.object
if not obj or obj.type != 'ARMATURE' or not obj.animation_data:
return
action = obj.animation_data.action
if not action:
return
frame = bpy.context.scene.frame_current
selected = {b.name for b in bpy.context.selected_pose_bones}
for fc in action.fcurves:
bone_match = any(
f'pose.bones["{name}"]' in fc.data_path
for name in selected
)
if not bone_match:
continue
bv, av = get_surrounding_keyframe_values(fc, frame)
if bv is None or av is None:
continue
blended = bv + (av - bv) * weight
fc.keyframe_points.insert(frame, blended, options={'NEEDED', 'FAST'})
fc.update()
for area in bpy.context.screen.areas:
area.tag_redraw()
# run with a 60% blend toward the next key
breakdown_pose(weight=0.6)
Works on whatever bones you have selected in pose mode. weight=0.0 gives you the previous keyframe's values, 1.0 gives you the next, and anything in between is a linear blend. I've been running it from Quick Favorites with a few preset weights (0.33, 0.5, 0.66) bound to number keys, and it's already cut down on a lot of tedious back-and-forth scrubbing.
The obvious next step is a proper modal operator. Drag to preview the blend live before committing the keyframe, like the Maya tool actually does. But the preset weights cover 90% of what I was reaching for the Maya breakdowner to do, so I haven't felt enough pain to build the full UI yet.
Has anyone done this with a modal operator in Blender? Specifically: is there a clean way to preview the pose without inserting keyframes until the user releases, or do you end up having to insert-and-delete on every mouse move? Curious how deep that rabbit hole goes before it's worth it.