Category Archives: Animation

Exceptional Storyboarding Tutorial by Louie del Carmen (and ‘Incremental Save’ Script for Photoshop and Bridge Workflow)

(previz from Louie del Carmen’s tutorial)

Digital artists are generous: community forums for sharing tips in our evolving medium have become small industries. Whether for Flash, Photoshop, or Maya — or whatever the next program will be — all of us are ultimately self-taught; each of us has our own techniques and workflows — those who share, nurture our community and profit from feedback in turn.

Story Artists are generous but with such a complex workflow it can be difficult to ask the right questions. Boards included in “Art of” books accompanying the release of films often only highlight polished “Hallmark” shots; novice storyboards are notoriously overwrought. (For an informative discussion on production vs polished boards watch this video.)

Louie del Carmen’s comprehensive storyboarding tutorial changes the discussion. From script to sequence viewers are lead through production quality boarding in a straightforward, accessible manner. If you have been scouring the internet for tips this tutorial is a treasure.

Louie’s tutorial will pay for itself within minutes if you are not yet using Adobe Bridge. $25 is a gift…wish more Story Artists were as generous as:


Here’s a Photoshop script which works well with a Bridge workflow. The cool thing is it makes accidentally over-writing sequential files difficult: as you continue working from a single authoring file activating this script saves filenames in increments of 10. (At the very least it will speed up your workflow by eliminating the need to hand edit filenames.)

Paste the code below into a new file in ExtendScript Toolkit (part of Photoshop’s installation found here: Applications/Utilities/Adobe Utilities/ExtendScript Toolkit CS4 or /Applications/Utilities/Adobe Utilities-CS5/ExtendScript Toolkit CS5), save it as a jsx-file into Photoshop’s Presets/Scripts-folder.

After restarting Photoshop the Script should be available under File > Scripts and can be assigned a Keyboard Shortcut, recorded into an Action, used in a Configurator-Panel, or started from the ExtendScript Toolkit itself.

Default installations of Photoshop leave the Keyboard Shortcut ctrl+command+shit+S unassigned. By assigning this or another shortcut key you can then map a button on your Cintique to activate the script.

// saves psd copies in rising four digit numbers appended to the authoring file’s name;
#target photoshop
if (app.documents.length > 0) {
// get properties;
var thedoc = app.activeDocument;
var docName =;
var basename = docName.match(/(.*)\.[^\.]+$/)[1];
var docPath = thedoc.path;
// psd options;
psdOpts = new PhotoshopSaveOptions();
psdOpts.embedColorProfile = true;
psdOpts.alphaChannels = false;
// change this to true if you want all the layers in the copy;
psdOpts.layers = true;     
psdOpts.spotColors = true;
// get neighboring  psdf iles;
var theFiles = retrievePSDFiles (Folder (docPath));
// collect numbers;
var theNumbers = new Array;
for (var m = 0; m < theFiles.length; m++) {
     if (theFiles[m].name.match(basename+”_”+”[0-9]{1,4}”+”.psd”)) {
          var thisNumber = Number(theFiles[m].name.slice(0, theFiles[m].name.length – 4).match(/\d{1,4}$/));
// get largest number;
if (theNumbers.length > 0) {
     var number = Number(theLargestNumber(theNumbers));
     var theNumber = bufferNumberWithZeros(number + 10, 4)
else {
     var theNumber = “0010”
// save copy;
thedoc.saveAs((new File(docPath+’/’+basename+”_”+theNumber+”.psd”)),psdOpts,true);
////// buffer number with zeros //////
function bufferNumberWithZeros (number, places) {
     var theNumberString = String(number);
     for (var o = 0; o < (places – String(number).length); o++) {
          theNumberString = String(“0” + theNumberString)
     return theNumberString
////// get from subfolders //////
function retrievePSDFiles (theFolder, theFiles) {
     if (!theFiles) {var theFiles = []};
     var theContent = theFolder.getFiles();
     for (var n = 0; n < theContent.length; n++) {
          var theObject = theContent[n];
          if ( == “Folder”) {
               theFiles = retrievePSDFiles(theObject, theFiles)
          if ( == “.psd”) {
               theFiles = theFiles.concat(theObject)
     return theFiles
////// function to get the biggest number;
function theLargestNumber (numbersArray) {
     var x = new Array;
     x = x.concat(numbersArray);
     while (x.length > 1) {
          if (x[0] >= x[x.length-1]) {
               var a = x.pop()
          else {
               var a = x.shift()
     return x

Feedback welcome: Twitter: @oceanbluesky