About the Infinite Workspace |
Another powerful feature is the Infinite Workspace. Shake's rendering is similar
to a camera; whatever is exposed in the frame is rendered (and only that), no
matter what its original resolution. This means that if you have a very small
element such as 100x100 pixels, and you then pan it 50 pixels in X and 50 in
Y, three-fourths of the image is outside of the 100 x100 pixel frame. However,
if you then place that over a 400x400 pixel frame, everything that previously
went outside of the frame is "rediscovered" you never lose data due to
transformations or resolution changes. In this case, the hill and mid
images are used from the first tutorial's pix/vp/bg directory. The hill
image is panned, and then composited with the larger mid image. However, the
hill image is restored in the composite.
Tree | hill |
![]() |
![]() |
Pan1 | Under1 |
![]() |
![]() |
This powerful feature has almost no memory or calculation cost, and significantly eases the handling of typical resolution difficulties.
Another optimizing aspect of this camera analogy is that Shake only renders what is in the current frame. This means if you have a 20,000x20,000 pixel image, but have a crop window of 100x100 pixels, only those 100x100 pixels are considered, even if you have other nodes before the Crop. Again, only what is inside of the Crop window is calculated. This makes Shake ideally suited for higher-resolution functions such as scrolling a large background plate under lower-resolution foreground elements.
The Infinite Workspace has several important workflow advantages:
You don't need to crop a small image before it is composited with a larger
image when you are panning it around. Simply read in your image, apply
the pan, and composite it over/under the larger image
Shake's Blur node gives you the option to blur pixels outside of the frame with the spread parameter. When set to 0, only pixels inside the frame are considered. When set to 1, outside pixels are calculated into the blur as well. When you read in an image and then blur the image, you want to set it to 0, because otherwise you will have black ringing around the edge. If you read the image, then scale it up, and then blur, you would want to set spread to 1, since there are now non-black pixels outside of the frame.
|
spread = 1 | spread = 0 |
![]() |
![]() |
To disable the effect of the Infinite Workspace, insert a Crop node and leave it at the default values (which does not change the resolution). This cuts off everything outside of the frame, replacing it with black pixels. The Viewport command is similar to the Crop, except it doesn't disable the Infinite Workspace.
Be very careful about scaling elements up, applying an operation, and then zooming back down. When you apply an operation on the scaled element, even though your frame is small, it stills calculate everything outside of the frame if you scale it back down to fit in the frame.
For more information on the Infinite Workspace, see Overview - Color and Overview - The DOD.