I have a complex scene with physics (not baked) and I discovered a long way into the scene that I need to scale everything up for the physics to do it's thing right. I scaled everything up, pressed play and everything went to crap. My keyframes are interfering. Is there a way to set the scale of all of the objects across all of the keyframes without messing up the other keyframe settings?
If your keyframes are interfering then that means you have keyframed the scale values of all or some of your objects.
If the scale doesn't change throughout your animation then you can delete all the scale keyframes and adjust the scale as you want. Using either the dopesheet or the graph editor, in the header you will find a little magnifying glass, clicking this will show a text box where you can enter
scale then press ⏎ Enter, this will filter the display to only show scale channels so you can easily select all A and delete X.
Once the scale keyframes have been removed you can select all the objects and by using the object properties panel right click on the scale values and select copy to selected.
There is also an addon called
Copy attributes menu that adds a menu to ⎈ CtrlC that allows you to copy attributes to all selected objects.
If you have keyframed changes in the scale values then you will want to use the graph editor, use the filter to show only scale channels. Now you can select all A and move them only on the Y axis to the size you want, GY. You can either move them a specific amount by entering a number or watch the scale properties as you move it.
Set the scale to the value you need and all the scale keyframes will be updated accordingly :
import bpy scale = 2 #change this value 'scaling factor' for action in bpy.data.actions : for fcurve in action.fcurves : if fcurve.data_path == 'scale': for p in fcurve.keyframe_points : p.co *= scale