customizing shake

Shake is essentially a compiler. It is written in C and acts as such. The nodes that you create in a composite are functions that were built into the app. As you string these nodes together they create a series of functions that are then compiled and rendered, producing the final visual element, be it a still frame or image sequence. Having an app designed this way makes it highly customizable. Not only can you create "macros" (a string of nodes that create a particular effect), you can change the interface and performance to fit your needs and work flow in the studio.

 

SCAD's working environment is such that you never know what station you will be working at, so carrying a customized preference folder is essential if you plan to take full advantage of Shake.

 

setting up your portable mods

 

The personal directory is where Shake looks to load any macros or user settings. This directory should be copied to the user directory on the local drive like so.

 

C:\Documents and Settings\rireed\Personal\nreal\include\startup\ui

 

 

To set up your personalized floating workstation, you should first create a directory called Personal. Inside this directory create a sub directory named nreal. In the nreal directory you should create three sub directories; autosave, icons, and include. In include create yet another directory entitled startup and then in startup create the final folder called ui. See above for a better illustration.

 

The startup and ui directory will be where the majority of the modifications will be placed. Once this structure has been established it may be store on a network or removable drive for easy access.

 

Every time Shake is launched it checks this location for any .h files that might be stored there. These files are then read into the app and the mods are loaded. Below are a series of modifications that I have found particularly useful.

 

 

lighten the load

 

Something that is kind of nice is streamlining the amount of CPU activity for the standard interface. I found that by telling Shake that I am running on a slow machine with the light system hardware script below, I can then get rid of some of the little "extras" that make it pretty to look at. The drop shadows are removed from around the buttons and and other graphic effects that isn't necessary to compositing. Then I combined this light sys hardware with maximum processors used for the GUI. This seems to speed up working in the viewer and progressing through the timeline. I then changed the icon type found in the tabs so that they were smaller and more easily identified.

 

This is the node tab before customization.

 

 

Include this script in the ui directory and save it as a .h file. This is the script for disabling the shadows on buttons and general useless GUI effects.

 

Include this in the ui directory as well and save as a .h file. It allows for the max number of processors to be used to drive the gui.

 

Include this in the ui directory and save as a .h file. I changes the icon style and the placement. I find this helpful for quick references to the tabs because the icons have words instead of pictures.

 

This is the node tab after the customized GUI scripts and a hand full of macros have been added.

 

 

 

file locations and favorites

 

The big problem with the setup here at SCAD is that the absolute file path is used by default for any media brought into the scene. This means that as you move from machine to machine all of your scripts are taken off line because Shake references the machine name. To disable this and save your self hours or text editing use this script and drop it in the startup folder.

 

This makes every file you read in relative to the drive letter not absolute to the machine name. This means that you can move from machine to machine and all of your media will be linked as long as you don't rename any of your external devises.

 

As a side note, I have discovered that the machines here will assign your external devices a drive letter based on the order that they are added to the system. This means that if you have, for example, a external drive and a pin drive, you must always mount them in the same order to ensure that the drive letter remains the same.

 

 

 

The last mod that I have found particularly useful is the favorites tab. You can add a directory path as a favorite location to load files from, in my case the script is as follows.

 

This allows direct access to my most frequented directories, the images below show the before and after of the script.

 

 

Notice the arbitrary drive locations.

 

 

Notice the arbitrary drive locations and the addition of my favorite places to stash media.

 

 

 

global settings

 

The global settings in Shake can be found in the lower right panel of the user interface. The default settings can be seen in the image bellow.

 

 

Shake assumes that you will be working in film resolution so the globals are set accordingly. As you can see frames per second is mode is film and the time code display is set to 24fps. You can change the global settings to that of NTSC and 30DF which is the default for video in the US. Below is the script which should be saved in the startup directory.

 

 

Once this header file has been added you will see this in the global tab.

 

Notice the defaults now are set to NTSC 29.97 and 30FPS DF.

 

NOTE: The time range was not a default and was set my hand to correspond with the composite at hand.

 

command line rendering

 

The last part of a composite is setting it to render. In shake 2.5 the GUI only allows for the use of one processor, but the command line will give you access to the maximum number of processors on the system. The code is as follows.

 

 

This can be run from the shake command prompt. The shake command tells the prompt what app to use. -cpus designates the number of processors to use. -exec "file location" tells it to render the file outs in that script followed by the flag -t "time range" and -sequential. The sequential flag allows for the app to render one file out node at a time that way you don't bog down the procs with multiple jobs at once.

 

You can stream line the render script even further by setting your time range in the globals. Before beginning the render Shake will check the globals settings to determine the rendering resolution and FPS as well as number of frames. If you take this route there is no need to specify "-t (time range)" in your render script.

 

A batch script can also be set up for rendering from the command line. The batch script is a collection of render commands giving the correct path to all of the scripts desired for rendering. You can see an example below.

 

 

Once the list has been compiled save it as a .bat and double click to launch batch render.

 

 

So that about sums it up. There are plenty of other mods that can be added to Shake, but these have been the most useful for me. More information on this can be found in the help documentation under the customization heading. For any further questions or comments feel free to contact me at rireed20@student.scad.edu.