Reducing the amplitude of many F-Curves

I have several animations with many curves, and I need to reduce the amplitude each one. I can’t simply scale on the y axis, or all the curves will converge at the centre. Instead, I need each curve to scale on its own centre. This can be done by selecting each curve and y scaling them individually, but I have far too many curves for that to be feasible, and I will need to be doing the same thing many times in the future.

Switching the Pivot Point to “Individual Centers” didn’t work either, because the centres are considered to be each key, and not the curve as a whole. Thus, only the key handles are scaled.


I can’t see how you would automate that. Maybe through Python ? I’m not sure the animation curves are accessible via the API, someone better skilled might help. I’m tempted to ask, though, isn’t there a way to avoid having to scale these curves in the first place ?


here’s a quick script you can try, tell me if it works:

Thanks Liero, that almost did what I needed. Is there a way to make the script only affect selected bones in pose mode? Currently, every curve for every bone of an armature are affected.

Even better would be if I could select individual curves, so I could specify that only the location values of a few bones would be affected.

I tried to figure this out myself, but unfortunately I am not familiar Blender’s API. Is there something along the lines of “bpy.context.selected_fcurves”?

And Hadriscus, I too wish there was a better way, but this must be done!

you can check that == True
just updated file

That’s it! Here is the result:

Still a bit rough, but scaling those curves was a big help.

ok that looks nice Sprakle

…now if only I could apply this same strategy to a Sapling tree…y’know, create a new tree, animated with gale-force winds, save as an ‘action,’ and reduce the amplitude incrementally down to doldrums (not quite perfectly still). This would avoid creating the exact same tree multiple times at varying wind speeds. Wherever the curve data is for these things, it’s not in any existing keyframes that I can find…