A script to do this.
Result of running script, idle action, note unit scale
For each action select and remove the location fcurves,
via UI select all pose bones, search for "location" select and delete
Alternatively scale the location keyframes. In this case after applying scale to rig any translation fcurve would be 100x more than need be, this was the visible problem moving hips and spine apart a hundredfold As mentioned only rotation keyframes are needed for any bone with a parent.
for all pose bones set location to 0, 0, 0 if not already Select all pose bones, Set active pose bone location to all zero, right click copy all to selected will set all pose bones back to zero.
Then apply the scale. CtrlA scale.
Here is a script to do this. As with all scripts, backup first. Script rundown.
- For a parent hierarchy of bones and in place animation will find location
keyframes are not required. First part of script removes all
- Any residual pose bone locations are reset to zero. All zero
location and rotation is the rest pose.
- Finally the scale is applied to your rig.
Select the rig object in object mode, and run script.
for a in bpy.data.actions:
for fc in a.fcurves:
if "location" in fc.data_path:
ob = bpy.context.object
for pb in ob.pose.bones:
pb.location = (0, 0, 0)
Finally you have rotation keyframes on the rig object, which also appear unnecessary.