These are some general guidelines on optimizing your workflow to get either
faster interactivity, more effective interactivity, or simply strategies for
reducing your overall rendering time.
Speeding up interactivity:
- Work with Proxies
As described above in Proxies, the use of proxy
images is the best way of getting fast interaction when tuning parameters.
By default, the proxyScale is set to 1, meaning the entire image is read in.
By lowering this number, you are working at a fraction of the resolution,
so a proxyScale of .5 should be around four times faster. Don't worry about
pixel-based parameters like pans and blur; these are automatically internally
multiplied by Shake to maintain relative accuracy no matter what proxyScale
you are using. You can set the proxyScale in the Global Parameters in the
interface, or from the command line by using -proxy : shake -exec my_script.shk
-proxy .25
- Turn off anti-aliasing
By setting quality to 0 in the Global Parameters, you turn off anti-aliasing,
which will dramatically speed up transformations, warps, and composites. Color
corrections will go at the same speed. You can set this in the interface with
quality = 0. In the command line, you use -fast. Be sure to turn it back on
when you are done testing to make sure your final render is high-quality.
This can be done in the script by setting quality to 1. If you have already
saved a script with quality = 0, you can override that on the command-line
with
shake -exec my_script.shk -fast 0
- Adjust the Viewer and Global Update modes
In the interface, you can change the global behavior of updates, or on a per-viewer
basis. By toggling the Update Mode from Always to Release, Shake will only
update the script when you release the mouse. For further control, toggle
it to Manual. Shake will then only update when you hit the Update button.
Additionally, on each Viewer, you can turn off updating entirely, or switch
to scrolling updates, which is good for when you have very large but slow
effects (Rblur, motion blur, etc). Instead of presenting the finished frame
in the Viewer, Shake updates the image line by line.
Speeding up
rendering times:
- Use a Different Filter
Shake uses an extremely high-quality filtering process to ensure top quality
images. However, you may opt to use a different filter for transformations
or filter effects.
- Take advantage of the Infinite Workspace
Since you can easily composite lower resolution images onto larger resolution
images, don't bother Cropping the small image to fit the large one. Additionally,
you can pan your images before the comp without fear of losing any information.
Keep in mind that Shake only calculates what is in the final frame. This means
if you are panning a 4000x486 pixel element inside of a 720x486 pixel frame,
Shake is only going to load in a window of 720x486 pixels at any one time.
It will never load up all 4000 pixel columns.
- ...But watch out for Infinite Workspace Scaling
Although we really love the Infinite Workspace, you can also create a trap
for yourself if you use a Scale up, followed by a Scale down.
For example, working at 720x486, and you apply a Scale of, say, 20.
Then you do some other function, like a Blur. Finally, you then Scale
down by .05 (1/20), thinking to yourself (correctly) that this will bring
all of the information back into your 720x486 frame. However, because you
are applying a node on the scaled-up area, in effect you are working temporarily
on an image with a resolution of 14400x9720. Doh!
- Take advantage of Node Concatenation
Because Shake concatenates adjacent Color correction nodes or Transformation
nodes, you should try to organize them together without inserting non-concatenating
nodes in between. See the explanation of Transformations and Color Corrections
for which operations concatenate.
- Take advantage of Caching
Because Shake caches, or calculates and saves, static elements, try to organize
your animated elements near the end of a compositing tree. By caching an element,
it will save it away so it doesn't have to re-calculate it. If an element
is animated very early in the composite tree, that forces Shake to re-calculate
the entire rest of the tree. For example, if you have to rotate an element
and animate a pan, make sure you do it in that order (rotate, then animate
pan), rather than the inverse (animate pan, then rotate).
- Avoid expensive functions in favor of faster duplicate functions
For example, the ColorX function can duplicate all of the other color
correction nodes, but that doesn't mean you should use it all of the time.
Don't use ColorX just to multiply the red channel by 2.
- Place expensive functions before animated nodes, not after
Because of Shake's caching, try to place expensive functions (warps, X-functions,
etc) before animated nodes, which will allow them to be cached away.
- When possible, use lower bit depths
For example, if you must boost an element up to 16 bits because you are
doing an extreme Emboss effect, bring it back down to 8 after the Emboss.
- When possible, use lower quality motion blurs
Shake's motion blur settings are by default set for excellent quality. If
you set motionBlur to .5, you will still have good results. Furthermore,
Shake's shutterTiming is set to1, or 360 degrees. This is twice the
average real-world film camera settings. Set it back to .5, which will be
faster, and actually a more realistic value for film.
- Use the Constraint or SetDOD nodes to limit the area of effect.
The Constraint node allows you to limit an effect to a square region
(as well as to a channel, tolerance, or field). Either using this, or by using
a SetDOD or Crop will limit an operation to within a certain
window.