i'm pretty sure the answer is "no" (unless i create my own clip animations in Motion or some right in FCP) but is there anyway to make the FCP transitions ease in and out to and from their beginning and ending positions? i'm thinking specifically the cube spin but others like the slides and pushes as well.
Re: any way to ease in/out transitions? by Andy Mees on Jun 23, 2008 at 8:41:43 am
No not directly... but all those transitions can be opened up into FXBuilder and can be modified to suit your needs, that means you can add your own Ease controls. Here's how:
Right click (control-click) the Cube Spin transition and choose Open in Editor...
In the resulting FxBuilder window you will be able to see the lines of FxScript code that describe the effect ... and right there at the top in the first few lines is the code which identifies the plugin ie give's it it's Id, defines it's type (what it is), it's name (as appears in the effects bin) and it's group (where it appears in the effects bin)
You'll want to start your hack by changing the name of the effect, or else you'll end up with 2 identically named effects which will be difficult to tell apart. OK. So give it a new name
eg transition "Cube Spin";
becomes transition "Andy's Easy Cube Spin";
A few more lines down and you'll see the "input" commands which create an effect's user controls
You going to need to add one extra input command for each of your Ease In and Ease Out controls eg input easeIn, "Ease In", Slider, 0, -1, 1; input easeOut, "Easy Out", Slider, 0, -1, 1;
Scan through the text of the rest of the script and you'll see that some of the lines of code address a variable called Ratio. Ratio is predefined variable used by FxScript that represents how far through an effect you are, where Ratio=0 at the beginning of the effect, and Ratio=1 at the end of the effect
This is the crux of the biscuit right here. Its the variable that dictates the progression of an effect and its what you'll want to modify in order to slow down or speed things up.
First you'll need to create a new variable to hold the modified Ratio value eg float myRatio;
Then you need to use bit of maths magic to give it the new value that represents the original Ratio value as modified by your Ease controls ... I'm no maths guru, I just went to Google and searched for the equation that defines a bezier curve as thats basically what we are doing here, turning a linear ramp into a acceleration curve. Adapting that equation for our relatively basic purposes gives us the following bit of FxScript: myRatio = 1.5*(1-easeIn)*power((1-Ratio),2)*Ratio + 1.5*(1+easeOut)*power(Ratio,2)*(1-Ratio) + power(Ratio,3);
OK. With that bit of magic, as Ratio proceeds regularly from 0 to 1, your modified value myRatio will also progress from 0 to 1 but will speed up or slow down depending on your Ease In and Ease Out control values. Woot!
Finally, you need to actually use this new value instead od th eold one ... go through the script then and replace all the occurrences of the variable Ratio with your new variable myRatio
eg rotate3D(target3d1, centerofspin, angleofspin*Ratio, 0, 0);
becomes rotate3D(target3d1, centerofspin, angleofspin*myRatio, 0, 0);
Thats it. You're done. Now go to the FxBuilder plugin window and choose Create Plugin, save it with a suitable name to your users plugins folder (~/Library/Preferences/Final Cut Pro User Data/Pligins) ... quit and relaunch FCP. Your new effect should be there right next to the old one. Try it out, play with the controls ... groovy huh?
You can use the exact same method (and code in itatlics) above to hack Ease controls into any of the built-in FxScript plugins ... go crazy :-)