NEW SCRIPT: Slow down / speed up IPOs UPDATED v1_00

Hello !

Yesterday evening i stumbled upon this thread and thought ‘Yeah that would be nice’
So here it is: IPOStretcher

LATEST VERSION: 1.00
Go to post 28 for more infos

WARNING : updates further down in the thread !!

This is a tiny script that allows you to set a factor and an offset so that the selected object’s IPO curves are stretched or compressed in time (horizontally).
With the offset (default value is 0), you can choose to slide the result along the X Axis, so that in effect you choose around what frame the effect takes place (this frame will look the same)

There are some minor problems: for example if three selected objects share the same IPOs (for rotation for ex.) and you strech by a factor of 2, then the IPO are stretched 8 times (222).
So either you are clever and set a factor of 2^(1/3) or so~ or you wait for Beta2 ! Corrected with 0.95 (post 2)

Please test and comment !
Do you think it could be included with future versions of Blender ?

The script can be found here and appears in the ‘Animation’ section

UPDATE: new 0.95 version: see next post

Hello again.

Upgrade: here is a new version: 0.95

_Usefull infos appear in the console: what IPOs have been modified and how
_There is no redondancy of action : if several objects share the same IPO this is only modified once. This is now straightforward: no math to do.

Please test & comment !
Do you think this should be included for next releases of Blender ?
Is the “Object” section the right one ?

To do list: negative factors: turn back time.

a question:
why is this useful? I mean what are the advantages to scaling in ipo editor.

Mmmm.
You should follow the link in the first post: a guy, dschnell asked for this kind of script.

Besides, you can slow down an object without changing the others … (what would happen if you slow down the full video)

Great! Very usefull when you work with rigid body dynamics.

How about storing the values for Offset and Factor? So that you don`t have to change it all the time while working with it.

Thanks!
Carsten

Hello again !

New Update: 0.96

_This version comes along with a settings file that belongs in the ‘bpydata’ folder.
0.96 keeps track of the previously used settings in this file, so when called the script proposes the last used settings. That was an idea from calli.
It is the 1st time i play with files in python: i hope it works fine on all OSs
_The script is now to be found in the ‘Animation’ panel, which is much more suited

Script here
Settings file here (right click and save as etc…)
I hope you like it !

Plizzzzzzzzz post ANY comment: it is so rewarding !

Hi,

You might just want to either scale/set time ipos. That’ll also stop you double changing them (slowing down rotation, and slowing down the time as well).

Besides, you can slow down an object without changing the others … (what would happen if you slow down the full video)

Not wanting to sound rude, but is it that hard to set a single time IPO?

mmmmhhh I am not very familiar with the time curve IPO.
I surely lack training in this field.

Not wanting to sound rude, but is it that hard to set a single time IPO?
Of course one single IPO curve isn’t a pb…
But what if you have 32 objects with different IPOs and you want 28 of them to behave faster: you’d have to create 28 time curves ?

I guess this script can be a usefull alternative in some cases
And it allowed me to progress a bit at python scripting !

the reason I wanted this script is because sometimes you create a complex scene with animations all over the place, then the client says “can you make it slower by about %10, or make it fit x:xx time”? It’s alot easier to run a script instead of going through every object, scaling ipo (or setting time ipo), running through the full thing to make sure all the timings still work, etc. Scale it all at once, by the same factor, from the same relative “0” point, and voila. It just works. I think it should be a part of Blender for sure.
Thanks again for this Gwenouille.
And although it might affect render times if you make it slower, it’s a much better solution than speeding up or slowing down rendered video with the sequence editor or any other video editing program. (no frame interpolation and blurring, etc)

MapOld and MapNew in the Anim Playback Buttons (2x F10) can scale down/up a complete animation. However, this maps all animations. The script is much more usefull when you need to scale down/up e.g. 50 out of 55 anims in your scene…

Carsten

Of course one single IPO curve isn’t a pb…
But what if you have 32 objects with different IPOs and you want 28 of them to behave faster: you’d have to create 28 time curves ?

I’m sorry, I did sound rude, and I didn’t mean it that way.

I didn’t realise you could set ranges of objects.

I’d still advise you create/scale a time ipo though. Maybe also a function to copy one time ipo to all selected/chosen objects? That way you can do a ‘matrix’ style slowdown just once and easily copy it to all others.

Hi !

There is a new update:
here is version 0.97

_fixed faulty tooltip
_now you can turn back time: enter a negative factor. (beware though: your animation will then take part before frame 1. Luckily there is the Offset button :D)

@ IanC: That’s allright, don’t worry.
i like this “time IPO copy” option.
I ll probably integrate this script in my Big Numbers Toolkit as it is of more relevance there and include this option.
Thanks for commenting anyway: you see: even a rather negative comment had a nice effect !

Calli - I don’t think I’ve ever clicked on that Anim panel (F10x2). That, in fact, would have did exactly what I wanted in that particular case. good to know!! However, as has already been established, this script is still quite useful.

Wow! This is great! I was just researching to try an figure out how to write a script that does exactly this.

Since I just started scripting Blender yesterday, and this is what I wanted to write, this will be a great script to read through. Thanks for posting!

John

First question for you… Why is curve.recalc() called on line 85 as well as 87? It appears that it is then called twice on each curve.

And a second question (forgive me if my terminology is not correct)… When you go into the curve and alter the bezier coordinates, it looks like the bezier point is made up of 3 lists of 3 floats. Is that the anchor point and its two handle points? Is the second set the anchor points coordinates?

Thanks again, this would’ve taken me hours to write and mine wouldn’t have incorporated i/o and a pop-up dialog! But it is reassuring I was on the right track when I was trying to figure out how do do it (get the object, get its ipo, get the curves, change the points). Cool thing is I also learned more python from your script.

Regards,
John

Hi nyquist !

First of all, thank you for trying the script: it is very, very rewarding to see someone actually use your work AND give feedback ! Thank you for that.
I am glad it is usefull, both as a script and as a learning aid.

Your questions:
_ Yes it seems very odd to use this function twice…and it is ! Strangely enough though, it is needed: it didn’t recalculate the curve properly in the IPO window if used only one !?! (at least it behaved so on my system…maybe you can delete one and it works ?)
In theory one should suffice, but here was a strange case and that is no laps of concentration from me…
_ Yep these are BezierTriples if i remember correctly. To be honest, i can’t recall exactly what is what in there (memory leaks lol) but you are on the right track !

Do you use the API intro ?
It is quite precise and very helpful…

Because this script is quite easy, i recommend you tried to rewrite it alone when you’ve mastered it: it can be very very good for learning !

If you need some more explanations, i’ll be glad to help !
BTW: good idea to use the PM: i am not that often on BA these days…

hi Gwenouille, i found maybe newer version here: API 2.45 intro

Gwenouille Thanks, I’ll try your suggestion. I did discover API intro when I was trying to figure out how to write the script you already wrote :slight_smile:

migius Thanks for the new link

John

Gwenouille: I used your script now several times together with Bullet calculated animations, and it is a big timesaver for me!

Thanks again,
Carsten

You are welcome sir !

I am glad you find use to it !