CUSTOMIZING PLUMBER
Overview
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 Plumber3D.com 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 and Scripts Menu - Organizes and provides show-wide tools to every artist
- Custom Command Button - Organizes and provides show-wide tools to every artist
- Global Mel Variables of Plumber UI - Eases the creation of custom Plumber UI functions
- Pre/Post User Defined Mel Scripts - Allows powerful custom procedures for existing Plumber Functions
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
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
SHOTS
Base Project Path $plumberMelProjectsPath Current Show Name $plumberMelShow Current Plumber Sequence $plumberMelSeq Current Plumber Shot $plumberMelShot Current Plumber Department $plumberMelDept Current Selected Take $plumberMelTake
ASSETS
Current Asset Type $plumberMelAssetType Current Asset Name $plumberMelAssetName Current Component Type $plumberMelAssetCompType Current Component Version $plumberMelAssetCompVers Current Component LOD $plumberMelAssetLOD
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:
- Plumber can automatically set frame ranges and load specific audio files relating to the current Shot when any Take is opened
- A specific light rig may be added to Char Type Assets when the Surface Component is Committed
- Upon Blast creation, it is copied to a common directory for editorial department access
- When a Save Take is performed by the Animation Department, the animation curves are exported for individual access.
- Any other option is possible . . .
The UserDef Mel Scripts are located at:
$plumberMelProjectsPath\$plumberMelShow\data\mel\userDef
Plumber Action
Pre Script
Post Script
Add a Sequence to Show
preAddSeq.mel
postAddSeq.mel
Add a Shot to Sequence
preAddShot.mel
postAddShot.mel
Add a Show
preAddShow.mel
postAddShow.mel
Add an Asset to Scene
preAddToScene.mel
postAddToScene.mel
Make a Playblast
preBlast.mel
postBlast.mel
Commit Version
preCommitVersion.mel
postCommitVersion.mel
Edit a Version
preEditVersion.mel
postEditVersion.mel
Load a Work in Progress
preLoadWip.mel
postLoadWip.mel
Add an Asset Placeholder
preNewAsset.mel
postNewAsset.mel
Open a Take
preOpenTake.mel
postOpenTake.mel
Remove an Asset From Scene
preRemoveFromScene.mel
postRemoveFromScene.mel
Save a Take
preSaveTake.mel
postSaveTake.mel
Save a Work in Progress
preSaveWip.mel
postSaveWip.mel