What's Different between Shake2.0 and 1.1? |
Let's get the bad news over with: you probably cannot read in your macros or scripts from 1.1 directly into 2.0 without some editing. Similarly, you cannot render 2.0 scripts in 1.1. Here are some of the format changes you can expect:
The Shake 2.0 motion blur is as fast or faster than the 1.1 motion blur, especially on the SGI. We used some of that extra speed to improve the quality of the blur, returning the overall render time to be about the same as 1.1.
The control parameter (motionBlur in the script or -motion on the command line) has, however, changed. The old blur had lower quality when you go past 1. The new blur has lower quality when you go below 1. Shake 2 samples about 4 more times than 1.1, so to get equivalent quality settings, the formula is v1.1 <value> = v2.0 .5/<value>. For example,
v1.1 -motion 1 -> v2.0 -motion 0.5 v1.1 -motion 2 -> v2.0 -motion 0.25 v1.1 -motion 4 -> v2.0 -motion 0.125 v1.1 -motion 0.5 -> v2.0 -motion 1
The batch mode now supports multiple images, i.e.
shake image1.rla image2.cin image3.iff
will display three images. To write out the image, append a -fileout:
shake image1.rla image2.cin image3.iff -fileout hi_gang.cin
will write image3.iff as hi_gang.cin.
Shake2.0 has changed some of its variables:
Shake1.1
|
Shake2.0
|
English
|
w | width | Image width |
h | height | Image height |
cx | width/2 | Image X center |
cy | height/2 | Image Y center |
"width" and "height" both accurately describe the image, and no longer need "w-1" to describe the last pixel on the width. For example, in a Crop, you used to have to type -crop 0 0 w-1 h-1 to have no change. Now, you can use -crop 0 0 width height
Shake now expects a semicolon (;) at the end of every script line. For example,
Dodo = Gamma(DodoIn, 1.7, 1.7, 1.7, 1 );
Or
Dodo = Gamma(DodoIn,1.7,1.7,1.7,1);
This allows for much more flexibility and robustness in the shake language itself.
Function calls are now case-sensitive. For example,
Dodo = fileiN(...);
won't work. The functions have been named so that every word is capitalized:
Dodo = FileIn(...);
All layer commands (Over, Under, IAdd, etc.) now expect a 0 or 1 toggle to choose the foreground or background resolution.
Shake 2.0 s TimeX, which was named TimeWarp in 1.1 (don't ask), can no longer support multiple outputs. This means you can't do a FileIn of an animation, and then have 50 offset copies from the single FileIn, each taking a different frame. Pisser, I know.
All transformations require an extra 3 parameters for motion blur. These parameters are multiplied by the global blur values, so if the global value is 0, all blurs are turned off.
Move2D and Rotate expect an aspectRatio parameter to individually tune your transforms in case you are working with different aspect ratios in your script. Move is now Move2D. The Move2D command has also had Shear parameters added to it.
Although the Linear (note the capitalization) is the same, the spline curve is now called CSpline to make room for further spline types. There are several other spline types, plus a cycle mode. See the What's New section. Declaring a curve as a variable has changed somewhat as well:
Instead of
define(mycurve,spline(0@1,20@20);
2.0 has
curve mycurve = CSpline(0,0@1,20@20);
Shake no longer supports assigning different nodes the same name. Me too, I will miss this. Shake will read it properly, but it will rename the nodes as it goes automatically. Note that dependencies are not checked yet. This:
Dodo = FileIn("lisa"); Dodo = Gamma(Dodo,1.5,1.5,1.5,1); Dodo = Resize(Dodo,320,240);
will change to:
Dodo = FileIn("lisa"); Dodo1 = Gamma(Dodo,1.5,1.5,1.5,1); Dodo2 = Resize(Dodo1,320,240);
Due to a change in the Filtering engine (to make it faster and better), images are not going to be exactly the same between Shake 1.x and Shake 2.0.
The current version reads script forms like this:
Dodo = (Set(FileIn("lisa"),"a",1),.2,1);However, it will write it out as:
Dodo1 = FileIn("lisa");
Dodo2 = Set(Dodo1,"a",1);