Countdown, the Short Animated Film: #11, The Contour Shuttle and Mel Scripting
From Journal Entry: Monday, October 6, 2008
The following was written originally as a journal of the process for my master’s degree thesis film project titled, Countdown. The following is not necessarily a product endorsement, but how I evaluated a good tool to use.
I needed a bit of a distraction this week, but still needed to be able to move forward on the project, so I was practising some animation this week. Which, of course, I got a little sidetracked from when looking at a more efficient workflow for my animation.
Back in the day (which really doesn't seem all that long ago) editing video was “linear”. The simplest way, at that time, in order to edit multiple videos together, required two video tape decks. A source deck, and a record deck. If you were lucky and needed to do fancier transitions than mere cuts, you would have three decks. Two source decks, and one record deck, with a controller of sorts. Of course, the transition would have to be between two separate tapes, running simultaneously on each source deck. In the least fancy situations, you would use the jog/shuttle control on the front panel of each deck.
Finding the exact location on each tape that you wanted to start from, using the jog and shuttle control to quickly find the exact frame. Then set the “in” point on the tape. Then jogging or shuttling to the end of the material desired, then setting the “out” point. If the editing was a little more professional, you would use an edit controller that used the same jog/shuttle control, and buttons to set in and out points, and clear them. This controller is a very tactile and efficient way to control the decks.
Then came non-linear. While an edit controller was still used with the first non-linear systems that came around, when personal computers started taking over the very expensive non-linear editors, keyboards took over the edit controller’s job. Avid Technology was a pioneer in non-linear editing originally using the Mac. Eventually, keyboards were customized with special color-coded and marked keys for controlling the editing process. The jog and shuttle controls could still be used, but just as keys on the keyboard.
A company named Contour Design developed the ShuttlePro. The Shuttle plugs into the USB port and has a jog/shuttle control along with buttons that could be customized, either by mapping them to keyboard equivalents or assigning them to specific functions. Since the first ShuttlePro, Contour Design has come out with a second version (v2), offering a few more buttons, and the ShuttleXpress version, which is smaller and has fewer buttons.
The Shuttle comes with several presets, mainly for many non-linear editing packages for both the Mac and the PC; Final Cut Pro, Premiere, and Avid. But in addition to those presets the Shuttle comes with presets for After Effects, Flash, and even Maya. These presets can also be customized, changing them from the default, or creating a new preset. The non-Xpress models include paper labels to indicate the various functions assigned to the buttons. The labels are placed under a clear plastic cap for the buttons on the controller. While this does allow you to easily change the indicator for the function of each button, it isn’t very good if you want to change what each button does in specific applications. It is a great thing to have to identify the buttons.
For the basic settings for Maya, the controller is set in a way that may or may not work for Animators. I originally purchased a Contour Shuttle initially to use for editing, which is its intended purpose. When I started using Maya for 3D animation, I didn’t initially think to use the Shuttle controller in the process. At one point, after using hotkeys to control the playback of animations, it stuck me that the controller would be ideal for the process. The basic default settings for Maya seemed to be enough to start using the shuttle. However, I had set the programmable keys on the Shuttle for specific functions, mainly because I wanted it to run in much the same way as the buttons for editing. This is where some Maya's ingenuity came into play. All the hotkeys in Maya can be assigned, changed, or customized. There were a few functions that I wanted the Shuttle controller to perform, which had no hotkeys assigned in Maya. Assigning new hotkeys is a fairly simple task in Maya.
In the current version of Maya, but I can imagine that this process hasn’t changed much in past and future versions. From the Window Menu, select the Settings/Preferences sub-menu, then choose the Hotkey Editor.
The way I wanted to use the Shuttle was to work with the Timeline (playback) controls. The default settings that come with the Shuttle for use in Maya have assigned the keys that are above the jog/shuttle knob as the tool selectors. These keys perform the same function as the Q, W, E, R and T hotkeys. Since I want to use these buttons on the controller as playback controls, and not for tool selection, I mapped them to forward frames, back frames, move to the next keyframe, move to the previous keyframe, and toggle the playback (play/stop). I had to find out the keyboard equivalents and map them to the appropriate buttons in the Contour Shuttle settings application.
The two buttons on each far end of the jog/suhttle control I set as the go to keyframes. The button on the left of the jog/suhttle control would go back to the Previous Keyframe, like pressing the comma key on the keyboard. The button on the far right would go to the Next Keyframe, like pressing the period on the keyboard. The next buttons are mapped to the frame controls, these use the same hotkeys while holding down the Option key. Again, the one on the left going back a single frame, and the one on the right going forward a single frame. Then the button in the center mapped to the toggle play/stop, which operates when the Option key and the v key are pressed.
Time Slider Controls
As for the top row of buttons, I would normally use them to set in and out points while editing video. While it might make sense to have these set to add keyframes, the more logical thing for me was to have these control the playback range functions. In Maya, you can set the entire playback range from start to finish for your entire animation. Then by either sliding the handles on the playback range slider or by adjusting the frame number in one of the playback range text boxes, you can view a smaller section of animation.
Recommended by LinkedIn
For example, if your animation starts at frame 1 and ends on frame 300, by default the range will show from 1 to 300. But if you want to only view the animation from frames 80 to 150, you can set the range slider to those frames and you will see the start and end range text boxes reflect the number of those frames. Now when you preview the animation, it will only play between these frames. Let’s say you are using the jog or shuttle controls to move through your animation and you notice something you want to change somewhere between 80 to 150. The only way to set the range is to use either of the two methods, adjusting the range slider, or entering the frame number in one of the Playback Range text boxes. By default there is no way to go to a frame, press a hotkey and have that frame be either the start or end frame of the range. However, Maya allows custom commands using the power of the Hotkey Editor. Not only can you assign and modify hotkeys, new commands can be created and assigned to hotkeys.
When adjusting the range slider, the command to do so is sent and echoed to the Script Editor, that command is playbackOptions, it include flags for the min, the start of the playback range, and max, the end of the playback range. This command is not echoed when entering a frame number in one of the playback range text boxes. The command can be added to the User category in the Hotkey Editor. Actually, you can add the command anywhere, but I placed it here since I want the command to set the playback range based on the currently selected frame. Also, out of respect to my undo queue I wanted to make sure this command isn’t recorded since I do not need to undo the setting of the playback range. I want to save my undo for the actual animation that I may want to undo. Luckily, all this can be added under a single command and assigned to a hotkey. The command line for setting the start frame to the current frame is:
undoInfo -swf 0; playbackOptions -e -min `currentTime -q`; undoInfo -swf 1;
First, undoInfo is setting a flag named -swf, which is stateWIthoutFlush, meaning it turns off undo, without clearing the queue. This is important! If this command just turns off the undo, it will just clear everything in the undo queue which is not good. The Undo queue needs to be kept intact. Next, the playback options are set, but set the min to the current frame. Then another important thing to do is to turn the undo queue back on.
This command can be called anything, but SetStartTime seemed appropriate. Then assign it a hotkey. Since the comma (,) and period (.) keys already perform forward and back functions respectively, it seemed natural to assign these hotkeys with modifiers to the playback range functions. Holding the option and the command keys (on the Mac) while pressing the comma key for the set start range, while the option plus command and period key sets the end range. To make this all complete those hotkeys are assigned to appropriate buttons on the Contour Shuttle. In all, four commands were created for this top row of buttons on the Shuttle.
SetStartTime command
undoInfo -swf 0; playbackOptions -e -min `currentTime -q`; undoInfo -swf 1;
hotkey: option+command+, (comma)
SetEndTime command
undoInfo -swf 0; playbackOptions -e -max `currentTime -q`; undoInfo -swf 1;
hotkey: option+command+. (period)
ClearStartTime command
undoInfo -swf 0; playbackOptions -e -min `playbackOptions -q -ast`; undoInfo -swf 1;
hotkey: option+command+< (that’s option+command+shift+comma)
ClearEndTime command
undoInfo -swf 0; playbackOptions -e -max `playbackOptions -q -aet`; undoInfo -swf 1;
hotkey: option+command+> (again that’s option+command+shift+period)
Each command does a query of the min and max for the playback options. However, for clearing the playback range, the playbackOptions are queried looking for the animation start time (the -ast flag) and the animation end time (the -aet flag).
Other Options
Lately, there have been more controllers that have similar functionality to the Shuttle. Manufacturers have even developed keyboards with similar controllers built in. On the simple side, there is Logitech’s Space Navigator 3D Mouse, which seems rather pricey and seems more geared toward moving objects around in 3D space rather than operating as a jog/shuttle control. They have a notebook version which is more expensive. Logitech has even developed a few devices that offer more functionality, the SpaceExplorer 3D mouse looks very ergonomic and has plenty of buttons to dazzle the user, with a price tag that will do the same. Also, they offer an even more expensive SpacePilot 3D Mouse, with an LCD display showing what functions the programmable buttons perform. The problem with these last two controllers (besides the high price), for at least for some, is they are only compatible with Windows and Linux. Then there is Griffin’s Powermate, which can operate as a pure jog/shuttle controller without any additional buttons.
Ideally, for the jog/shuttle control, the one with only the functions needed is best. Connectivity with USB is fast enough, but if the controller were Bluetooth, connectivity would be a snap and the controller could be moved around without the hindrance of a cord. While this isn’t that big of a deal, it would be a nice enhancement. The next item on the wish list would be to have buttons that light up with the programmed function. Realizing that this would probably make the controller very expensive, having little paper inserts into the clear plastic key caps is simple, and inexpensive.
Exploring different aspects of the project is crucial for improving workflow and achieving better results. Great job on the master's thesis journal for Countdown!