While Plumber is a Turn-Key system for production, it is probably not a perfect stand alone system for every project. Plumber's native functionality makes it easy to use, but also limits what can be done. While offers Pipeline Customization, many experienced users will want to add their own features -- such as having Plumber set the frame ranges of an Opened Take automatically based on an external list.


Note that all of these custimization features will affect an individual Show only. It is possible to have two separate shows with completely unique customized systems.


Plumber has three types of built-in hooks that allow you to enhance the Plumber workflow, and to incorporate your own production wide tools and systems:


Plumber Scripter


The Scripter allows for custom Mel tools to be brought into the Show Repository and added to the Scripts menu of Plumber, making them accessible to everyone.  The Scripter takes existing Mel script tools, brings them into a common place, and sets them up to at the pressing of a button.


Quick Tutorial



Go to the Scripts menu in the Plumber UI.  Whatever opther options are available, choose Add Scripts.  The Scripter UI should appear and look something like this.


Category Box - Allows Scripter Category Selection of existing Script Categories


Scripts - Lists the available scripts for the currently selected Category


Add Category Button - Creates a new Script Category


Delete Category Button - Removes the current Script Category. Will delete all contained Scripts, as well.


Add Script Button - Makes a new script available from the Scripts menu within the selected Category


Delete Script Button - Removes the selected script from the Scripts menu within the selected Category

2. Press the Add Category button.  
3 When prompted, type Example and then press OK.  It might seem like nothing happened, but if click on the Category list box, you will see that the Example Category is ready for use.  Select the Example Category.  
4 The Scripts list of Scripter will now be empty.  Press the Add Script button.  A file browser will come up.   Select any Mel script presently available.  

The Set Script Runner window will come up.  At this point any commands required to run the script are entered. Multiple line statements can be separated by a “;”.

select cubeOne;sampleScriptProcess();

Scripts are automatically sourced whenever chosen from the Scripts menu in Plumber. If a script only needs to be sourced to run, do not enter any commands.


When satisfied, press OK, and close the Scripter.

6. There is now a catagory named Example within the Scripts menu of the Plumber UI window. Within that category is the recently added script. If the Script is selected from the menu, it will be sourced, and the commands previously entered will be run.  



CUSTOM Command Button


One simple way to add a custom process is to use the CUSTOM Command Button in the Shots Module. With it, every artist has access to a production unique process of your own design. To Change/Set what the Custom Button Command does, use Tools Menu->Change Custom Command Button. A file browser will appear. Browse to the mel script you wish to use. A window similar to the Set Script Runner seen in Step 5 of the Plumber Scripter Quick Tutorial will appear. Follow the same process as presented in Step 5.


Plumber Global Variables



While Plumber is a Python-based application, it creates and updates several global Mel variables that you can access in any Mel script. These allow you to create custom tools driven by what is selected in the GUI. Additionally, with the Base Project Path and the Current Show Name, the elements and file paths for the entire show can be tracked down due to the predictable and constent directory structure of Plumber elements.



Global Variable List



Base Project Path
Current Show Name
Current Plumber Sequence
Current Plumber Shot
Current Plumber Department
Current Selected Take



Current Asset Type
Current Asset Name
Current Component Type
Current Component Version
Current Component LOD


Sample Mel Script

Here is a Mel script to show you how to incorporate all of the Plumber Global Mel Variables. Source this script in a Mel window when Plumber is running, and it will return the selection choices of the UI:

global string $plumberMelProjectsPath;
global string $plumberMelShow;
global string $plumberMelSeq;
global string $plumberMelShot;
global string $plumberMelDept;
global string $plumberMelTake;
global string $plumberMelAssetType;
global string $plumberMelAssetName;
global string $plumberMelAssetCompType;
global string $plumberMelAssetCompVers;
global string $plumberMelAssetLOD; print "\n";
print ("Asset Type = " + $plumberMelAssetType + "\n");
print ("Asset Name = " + $plumberMelAssetName + "\n");
print ("Componant Type = " + $plumberMelAssetCompType + "\n");
print ("Componant Version = " + $plumberMelAssetCompVers + "\n");
print ("Asset LOD = " + $plumberMelAssetLOD + "\n\n");
print ("Plumber Path = " + $plumberMelProjectsPath + "\n");
print ("Current Show = " + $plumberMelShow + "\n");
print ("Current Sequence = " + $plumberMelSeq + "\n");
print ("Current Shot = " + $plumberMelShot + "\n");
print ("Current Department = " + $plumberMelDept + "\n");
print ("Current Take = " + $plumberMelTake + "\n");


Plumber User Defined Mel Scripts



This is a very powerful customization option. Whenever Plumber tasks are run, a Mel script gets sourced before the task is performed, and another is sourced immediately after it is performed.   These scripts are initially blank, but these scripts can be edited to add any custom functionality, processes or workflows that will automatically be incorporated into the Plumber system. Since Shots and Assets have a consistent directory structure, global tools and processes for any show are relatively easy to add.


It cannot be understated just how powerful this is.


Here are just a few of the possibe enhancements with User Def scripts:



The UserDef Mel Scripts are located at:






Plumber Action
Pre Script
Post Script

Add a Sequence to Show



Add a Shot to Sequence



Add a Show



Add an Asset to Scene



Make a Playblast



Commit  Version



Edit a Version



Load a Work in Progress



Add an Asset Placeholder



Open a Take



Remove an Asset From Scene



Save a Take



Save a Work in Progress