Scale all IPOs to slow down animation

is there a script, or somebody who wants to make a script that will scale all ipos along x (time) by a certain amount to effectively speed up or slow down an animation?

I know there might be something of a similar ability coming up with global time, but that won’t be for a while.

there is a speed control sfx vse plugin that does that for a video.

I think a design issue is specifying which channels of the IPO you want to change, and how you know or figure out how long the action is - based on the largest Y for that object minus the smallest/first value, or from frame 1, or for that channel.

if you used "actions’ and NLA, you could do just what you described. No scripting scripting needed

Thanks Papa…that might help to fine . Still doesn’t do want I need, as if I slow it down, It doesn’t render extra frames inbetween. So it’s no different than any other video editor that slows down video.
I need to make my animation half speed since my timings were a little quick :), so that’s too many frames for this plugin to stretch. Even if I add the scene and render straight from the VSE instead of adding img sequence.

it’s not character animation, and my only “actions” are for two shape keys driving some animated arrows. I need to adjust my camera, cam target, material alphas, text, objects bouncing around different layers, etc. Particle timings will have to be adjusted manually regardless, even the new psystem doesn’t have an IPO controller on the sta and end frames.

i hear ya bro. it’s a real pain. only help really is to tell you that I use a stopwatch and a storyboard when planning.

You know, you can just scale the keys manually, if its only two actions of them. Switch to Key mode, select all, and S for scale and move the mouse. And check out what daredemo said too - NLA is not just for character anim, but any animation of any moving object.

Hi !
Be patient dschnell 289 !

I am just about to finish this very script: you gave me the idea !

I am on a good track: it may well be finished tomorrow !


Therecomes the 0.9 beta version of it.

Please test it dschnell. Place in your script folder, launch Blender. It should be under object

One major problem: if many objects share the same IPO, then the factor by which your stretch your IPOs is repeated, as many times as there are users of the IPO.

So if 2 objects have the same IPO, and you want to slow down time say 3 times, then choose a factor of square root of 3.

I will correct it for future versions.

This is a very quick try (less than 2 hours coding, iam still a noob) so it is a beta and not really tested !

I ll create a thread for it soon !

There’s nothing in NLA that would require it to be restricted to the “moving object”.
Anything that can be done animated, can be done from within NLA. You just give your animation or parts of your animation names AND you get the added value that you can now rescale your animation however you like it.

Only trick is that you’d need to use bones that are connected to drivers for your IPO

Time IPO?

That allows very precise control over everything that’s animated. It’s only per object though. I think a whole scene one would be useful.

It Works! I knew the principle of it would be rather simple.

Alright, a few suggestions (though I know nothing of python) -
I think your tip of “<1 slows down and >1 speeds up” is reversed. (simple fix)
would it work to change your loop structure of "if len(selObj) worked on the number of IPOs instead of looping through each object, would that be a way to fix that “issue”? It might mean a few extra loop structures to define the array, but I think it would save a lot of headaches for other users down the road.
Another one that would be simple to add on would be to adjust all the other IPOs linked with the object (like material - which would have to be in a separate loop - cause I animate Alpha all the time to fade things in and out. Shape key IPOs as well.
Also - I’m not a fan of floating python script interfaces, it would be nice (though probably a little more work) to make it draw into the script panel when the script is run.

But other than that, good job and thanks!! (though it’s about 4 hours too late! - I did as was suggested above (before it was suggested) - I scaled each object’s IPO and readjusted my timings). But it doesn’t allow you to scale from point 0 - only from the Median point.

Pap smurf - the stop watch doesn’t work if your computer can’t play back the viz in the viewport in realtime. It’s less effective (though the only way right now) to render the whole sequence as a GL preview anim (ctrl-preview render). And my machine is a C2D 2.0, 2 GB ram with GF 7500 256 mb video.

A nice feature request (which can be annoying for some things) would be the ability to drop frames while playing back to keep it in realtime.

Hi dschnell !
About <1 and >1: oops you are right : easy fix !

For the “issue” : go to the other thread (dedicated to this script : see signature) and download 0.96.
It has been fixed already.

I shall think of separing object and material Ipos etc…

But other than that, good job and thanks!! (though it’s about 4 hours too late! - I did as was suggested above (before it was suggested) - I scaled each object’s IPO and readjusted my timings). But it doesn’t allow you to scale from point 0 - only from the Median point.

hehe my script can !

wish i could find a download link for this script :frowning:

I had similar problem. The solution I found is to go to action editor window, place cursor at any place before the last frame and press T key - then move cursor at any side you want. The last frame marker defines the length of the whole animation Another way ( actually way around it) in IPO editor press N key and enter manually Xmax value, but you have to do it for each bone separately and for precise result you have to increase or decrease value on the same number.

If you want to affect everything, why not use Map Old / Map New?


Thanks for sharing that, Martin. Is there an equally easy way to keep scenes lined up in the sequencer if I do use the map old/new?

I have 2 scenes that dissolve together in the sequencer. They need to line up frame accurate. I changed the map old/new on both scenes, but now they are out of sync in the sequencer.