Code: Select all
{//Scope limiting brace
/*################################
## This is the render settings script by Colin Braley
## This After Effects script is used to turn on some settings that are useful to setup before rendering
## These incluse beging able to set the motion blur, shutterAngle, quality settings, resolution, and visibility settings
## of layers and comps. You can also affect nested comps with this script.
## To run this script have a comp selected in your project window and then run it.
## I have tested this script pretty thouroughly, but if anything get's messed up you can't blame me.
## Posted to aenhancers.com on January 30, 2006
## For more info, click on the help button on the script palette
## Enjoy.
################################*/
app.beginUndoGroup("Render Settings");//Undo group
var proj = app.project;
var activeItem = proj.activeItem;
var safeToRunScript = activeItem != null && proj != null && activeItem instanceof CompItem;
var currComp = activeItem;
if(! safeToRunScript )
alert("Please have a project open, and a comp selected in the project window.");
else{
buildGUI();
}//End else
//Below here is all function definitions.###################################
/*#########################################################################
###processComp()
###Takes a compItem as a parameter
###This function is called when the execute button is pressed.
###This preforms the actions specified in the UUI
###This returns nothing.
###########################################################################*/
function processComp(myComp)
{
var currLayers = myComp.layers;
var amt = currLayers.length;
//--
var doBestQuality = w.settings.quality.value;
var doShutterAngle = w.settings.shutterAngle.value;
var shutterAngle = w.settings.shutterSlider.value;
var doMotionBlur = w.settings.motionBlur.value;
var doFrameBlending = w.settings.frameBlending.value;
var doFullResolution = w.settings.resolution.value;
var doActivateLayers = w.settings.activateLayers.value;
var doAffectNestedComps = w.controls.nestedComps.value;
//--
for(var i = 1; i <= amt; i++)
{
var layer = currLayers[i];
if(doBestQuality)
setLayerQuality(layer);
if(doShutterAngle)
setCompShutterAngle(myComp, shutterAngle);
if(doMotionBlur)
{
setLayerMotionBlur( layer);
setCompMotionBlur( myComp );
}
if(doFrameBlending)
{
setLayerFrameBlending( layer );
setCompFrameBlending( myComp );
}
if(doFullResolution)
setCompResolution( myComp );
if( doActivateLayers)
activateLayer( layer );
if(doAffectNestedComps)//Determines if we will process comps recursively
{
if (layer.source instanceof CompItem)//Recursive case
processComp(layer.source);
}
}//End for loop
}//End function
/*#########################################################################
###buildGUI()()
###Takes no parameters
###This function builds the GUI window.
###That is all it does.
###returns nothing.
###########################################################################*/
function buildGUI()
{
w = new Window("palette", "Render Settings Script - By Colin Braley", [100, 100, 480, 490]);
w.center();
//now add panels
w.settings = w.add("panel", [15,15,365,180], "Settings");
w.controls = w.add("panel", [15, 200, 365, 375], "Controls");
//now add execution button
w.controls.execute = w.controls.add("button",[15,15,155,35], "Execute");
w.controls.execute.onClick = function(){ closeAndExecute();};
//Now add help button
w.controls.help = w.controls.add("button",[175, 15, 315, 35], "Help");
w.controls.help.onClick = function() { displayHelp();};
//Now add best quality switch
w.settings.qualityText = w.settings.add("statictext", [15,15, 130, 30], " BEST quality for layers");
w.settings.quality = w.settings.add("checkbox", [135,15,150,30]);
//Now a shutter angle switch
w.settings.shutterAngleText = w.settings.add("statictext",[15,40, 130, 55], "Alter shutter angle");
w.settings.shutterAngle = w.settings.add("checkbox", [135, 40, 150, 55]);
w.settings.shutterSlider = w.settings.add("slider",[165, 40, 255, 55], 360, 0, 720);
w.settings.shutterSlider.onChange = function(){w.settings.shutterTextValue.text = w.settings.shutterSlider.value;};
w.settings.shutterTextValue = w.settings.add("edittext",[270, 40, 295, 55], w.settings.shutterSlider.value + "");
//Now add a motion blur switch
w.settings.motionBlurText = w.settings.add("statictext",[15,40 + 25, 130, 55 + 25], "Motion blur for layers");
w.settings.motionBlur = w.settings.add("checkbox", [135, 40 + 25, 150, 55 + 25]);
//Now add a resolution switch
w.settings.resolutionText = w.settings.add("statictext",[15,40 + 25 + 25, 130, 55 + 25 + 25], "Set resolution to full");
w.settings.resolution = w.settings.add("checkbox", [135, 40 + 25 + 25, 150, 55 + 25 + 25]);
//Now add a frame blending switch
w.settings.frameBlendingText = w.settings.add("statictext",[15,40 + 25 + 25 + 25, 130, 55 + 25 + 25 + 25], "Enable frame mix ");
w.settings.frameBlending = w.settings.add("checkbox", [135, 40 + 25 + 25 + 25, 150, 55 + 25 + 25 + 25]);
//Now add an active all layers switch
w.settings.activeLayersText = w.settings.add("statictext",[15,40 + 25 + 25 + 25 + 25, 130, 55 + 25 + 25 + 25 + 25], "Activate all layers");
w.settings.activateLayers = w.settings.add("checkbox", [135, 40 + 25 + 25 + 25 + 25, 150, 55 + 25 + 25 + 25 + 25]);
//Add a nested comps
w.controls.nestedCompsText = w.controls.add("statictext",[15,50,110,75], "Affect nested comps");
w.controls.nestedComps = w.controls.add("checkbox",[120, 50, 145, 70]);
//left top right bottom is how bounds works
w.show();//done now lets show the UI
}//End function
/*#########################################################################
###displayHelp()
###Takes no parameters
###This function is called when the help button is pressed
###This displays an alert() box with a help message
###returns nothing.
###########################################################################*/
function displayHelp()
{
alert("Help for RenderSettings Script: \n"+
"To use this script just click in the checkboxes\n"+
"on the UI Panel. When You click execute the \n"+
"script will examine whatever comp you have \n"+
"currently selected in the project window and \n"+
"apply these settings to any layer in it. This can \n"+
"also affect nested comps. To run the script you must \n"+
"have a comp selected in the project window. ");
}
/*#########################################################################
###closeAndExecute()
###Takes no parameters
###This function is called when the execute button is pressed
###This closes the window and preforms the requested actions
###returns nothing.
###########################################################################*/
function closeAndExecute()
{
processComp( currComp );
w.close();
}
//setLayerQuality() sets a layers quality to best
//it returns nothing and it's parameter is a layer
function setLayerQuality( l )
{
l.quality = LayerQuality.BEST;
}
//setCompResolution() takes a comp as a parameter
//and sets its resolution to best
//it returns nothing
function setCompResolution( c )
{
c.resolutionFactor = [1,1];
}
//setCompMotionBlur() takes a comp as a parameter
//and sets its motion blur to on
//it returns nothing
function setCompMotionBlur( c )
{
c.motionBlur = true;
}
//setLayerMotionBlur() takes a layer as a parameter
//It turns on its motion blur switch
//It returns nothing
function setLayerMotionBlur( l )
{
l.motionBlur = true;
}
//setCompFrameBlending() takes a comp as a parameter
//and sets its frame blending to on
//it returns nothing
function setCompFrameBlending( c )
{
c.frameBlending = true;
}
//setLayerFrameBlending() takes a layer as a parameter
//This function turns on the layer's frame blending to "frame mix"
//I don't think there is a way to change this to pixel motion
//returns nothing
function setLayerFrameBlending( l )
{
l.frameBlending = true;//Frame mix only
}
//setCompShutterAngle() takes a comp and a number as a parameter
//it sets the comp's shutter angle to the number
//if the number has a decimal it is rounded
//if the number is less than 0 || greater than 720 an alert() box is used
//and the number is put within range
//returns nothing
function setCompShutterAngle( c, num )
{
error = false;
if(num < 0)
{
num = 0;
error = true;
}else if(num > 720)
{
num = 720;
error = true;
}else
{
if(error)
alert("Please, set the shutter angle between 0 and 720");
c.shutterAngle = Math.round( num ) ;
}
}//End function
//activateLayer() takes a layer as a param
//it turns off the solo switch and makes the layer visible
//returns nothing
function activateLayer( l )
{
l.enabled = true;
l.solo = false;
}
app.endUndoGroup();//End the undo group
}//Scope Limiting Brace
//The End
~Colin