Applying F-curve modifier to multiple F-curves simultaneously?

I know the F-curve system, particularly how channels are selected in the F-curves Editor, is under refactoring, but I can’t find any reference to this particular question.

When applying an F-curve modifier, in this case Cycles, so I can repeat an animation without having to duplicate keyframes, it is only applied to the Active Keyframe. After a lot of time spent diddling about with figuring how the “Active Keyframe” is determined in the Editor (it has to do with not only which one you click on, but also on which ones are “higher” on the list and already clicked on but which are hidden – this needs serious reconsideration), I then discovered that modifiers can only be applied one F-curve at a time.

Well enough for a simple case of object animation or a simple armature but my character has hundreds and hundreds of keyable bones. What a huge waste of time to not be able to apply a Cycles modifier to the entire keying set at once! Is there any way short of spending a week writing and troubleshooting a Python script (OK, so I’m not the world’s speediest scripter ;)) that this can be done?

The trouble seems to be that the F-curve is only applied to the Active F-curve, and only one F-curve can be active at one time. Why not applied to all selected F-curves?

EDIT: On top of it all, there seems to be a bug that will cause unselected F-curves higher in the list than one you are trying to select to become designated, and selected, as the Active F-curve when you make a selection, any selection. This means that you have to un-do earlier modifier assignments in order to make a new one, because if the algorithm reaches an F-curve with the modifier already applied (and it seems to read the entire list from top down each time), it quits with an error message, and nothing gets done.

Which seems to describe this part of the animation system very well – it’s a good way to get nothing done!

EDIT^2: An now, to really top things off, trying to add an F-curve modifier to one channel caused Blender to suddenly crashquit and deep-six about an hour and a half of dicking around with these &^%@$!) F-curves, when all I want to do is have my animation repeat a few times. Way, way, way too complicated and buggy for any kind of reasonable work flow.

If you require ALL the F-curves to have the Cycles modifier, why not just make it an NLA action, and add ‘repeat’ to it? Just remember to click on the snowflake.

I’ll take a look at that weird channel ordering thing you mentioned.

Good suggestion. I haven’t used NLA for quite a while, and that option didn’t occur to me. If it’s more efficient than using F-curve modifiers, it’s definitely a plus.

Don’t get me wrong, I think the F-curve system operates well for the most part, it just seems to be a royal pain to edit anything in it efficiently because of the selecting/selection/active issues. It’s also very hard to track down what may or may not be going on because apparently hidden and selected F-curves still affect current operations attempted on revealed and selected curves.

I’d provide a file for analysis but as I said that crash took everything down. For some reason my autosave wasn’t backing up currently, either. The gremlins are out!

In case you want to try it and reproduce it, here’s the basic steps I was using.

  1. reveal all channels in the F-curve Editor and deselect all.
  2. hide all channels, then reveal those of a bone to be operated on
  3. click on a channel to make it active
  4. add the Cycles modifier
  5. rinse and repeat for other channels in that bones’ list
  6. deselect all
  7. close that bones’ list
  8. open the next bones’ list and proceed as above.

The problem I began having was that occasionally clicking on a revealed channel did not make it the active F-curve, which you can confirm in the Properties panel for the F-curve Editor. Usually this meant an F-curve of a bone I’d already operated on (higher on the list, and hidden) was somehow still selected and remained the active F-curve. Deselecting that channel, and re-selecting the one I wanted to operate on, usually fixed the problem, the active F-curve was updated properly. But in one case, repeated attempts to select a channel and make it the Active F-curve failed, and Properties listed a channel higher on the list as Active. I would then deselect that channel and try again, only to have yet another channel higher on the list, also hidden, be set as active, per the Properties panel. This happened half a dozen time, and then the crash happened.

Ok I tried the steps with the 2.6 RC #1. Couldn’t seem to reproduce the selection bug. Maybe try it those steps in the RC.

It could very well have been something that is not reproducible – complex software can get cranky that way. Your NLA suggestion was spot on, and it gave me a chance to work with the 2.5x incarnation, which was confusing at first but once I “unlearned” my 2.4x skilz, it did very well indeed. Good re-design there imo.

The 2.5 redesign made me shift my thinking quite a bit. But I think it helped me.

Here’s one little bit of workflow I found comfortable: