//MayaToBackburner // // Date: 2007/12/21 // Author: Dai Sato dstruevision@dstruevision.com http://www.dstruevision.com // Procedure Name: MayaToBackburner // Description: global proc my_writeTaskList(int $task_size, int $frames_per_server) { print $task_size; $task_list = "c:/tasklist.txt"; $task_list_text = ""; $fileId=`fopen $task_list "w"`; $tmp_start = `intField -q -v s_frame`; $loopSize = $task_size / $frames_per_server; $leftLoop = $task_size % $frames_per_server; for($i=1;$i<=$loopSize;$i++) { $buf = ""; $tmp_end = $tmp_start + ($frames_per_server-1); if($i==$loopSize) { if($leftLoop == 0) { $buf = "frame" + $tmp_start + "-" + $tmp_end + "\t" + $tmp_start + "\t" + $tmp_end +"\t"; } else { $buf = "frame" + $tmp_start + "-" + $tmp_end + "\t" + $tmp_start + "\t" + $tmp_end +"\t" + "\n"; $left_start = $tmp_end + 1; $left_end = $tmp_end + $leftLoop; $buf = $buf + "frame" + $left_start + "-" + $left_end + "\t" + $left_start + "\t" + $left_end +"\t"; } } else { $buf = "frame" + $tmp_start + "-" + $tmp_end + "\t" + $tmp_start + "\t" + $tmp_end +"\t" + "\n"; } $task_list_text = $task_list_text + $buf; $tmp_start = $tmp_end + 1; } fwrite $fileId $task_list_text; fclose $fileId; } global proc my_SystemCommand(string $command) { print ($command + "\n"); $pipe = popen( $command, "r" ); while ( !feof( $pipe ) ) { string $line = fgetline($pipe); print $line; } } global proc string parseCurrentProject(string $path) { string $tokens[]; int $numTokens = `tokenize $path "/" $tokens`; return $tokens[$numTokens-1]; } global proc my_SubmitJobToBackburner() { $job_Name = `textField -q -text job_name`; $s_frame = `intField -q -v s_frame`; $e_frame = `intField -q -v e_frame`; $frames_per_server = `intField -q -v frames_per_server`; $maya_Command = `textField -q -text maya_Command`; $manager_text = `textField -q -text manager_text`; $subnet_text = `textField -q -text subnet_text`; $servers = `textField -q -text servers`; if($servers == "off") $servers = ""; else $servers = " -servers " + $servers; $log_output = `textField -q -text log_output`; $cmdJobString = ""; $tasklist = "c:/tasklist.txt"; $task_size = $e_frame - $s_frame +1; my_writeTaskList($task_size, $frames_per_server); if($manager_text == "automatic") { $cmdJobString = "cmdjob -jobname " + $job_Name + " -netmask " + $subnet_text + $servers + " -logPath " + $log_output + " -tasklist " + $tasklist +" -taskname 1 " + $maya_Command; print $cmdJobString ; } else { $cmdJobString = "cmdjob -jobname " + $job_Name + " -manager " + $manager_text +" -netmask " + $subnet_text + $servers + " -logPath " + $log_output + " -tasklist" + $tasklist +" -taskname 1 " + $maya_Command; print $cmdJobString; } if( $cmdJobString != "") { print $cmdJobString; my_SystemCommand($cmdJobString); } } global proc my_MayaToBackburner () { if ((`window -ex MayaToBackburnerWindow`) == true) deleteUI MayaToBackburnerWindow; window -t "MayaToBackburner" -s true -mnb true -mxb true -mb true -w 100 -h 200 MayaToBackburnerWindow; columnLayout mainLayout; $path = `workspace -q -act`; $currentProject = parseCurrentProject($path); columnLayout -rs 3; text -label "Enter Job Name"; textField -w 300 -text $currentProject job_name; setParent mainLayout; rowColumnLayout -numberOfRows 1; text -label "Start Frame"; intField -w 50 -v 1 s_frame; text -label "End Frame"; intField -w 50 -v 1 e_frame; text -label "Frames per server"; intField -w 50 -v 5 frames_per_server; setParent mainLayout; columnLayout -rs 3; text -label "Enter maya's rendering command(Plz set -s and -e flag as follows: -s %tp2 -e %tp3)"; textField -w 1100 -text "Render -r mr -s %tp2 -e %tp3 ..abd blah blah" maya_Command; setParent mainLayout; columnLayout -rs 3; text -label "Enter Backburner manager's IP"; textField -w 300 -text "automatic" manager_text; setParent mainLayout; columnLayout -rs 3; text -label "Enter Subnetmask of your network"; textField -w 300 -text "255.255.255.0" subnet_text; setParent mainLayout; columnLayout -rs 3; text -label "Servers(for rendering) Set (off) if you use all servers. "; textField -w 300 -text "render-17;render-16" servers; setParent mainLayout; columnLayout -rs 3; text -label "Log output directory"; textField -w 300 -text "c:/" log_output; setParent mainLayout; columnLayout -rs 3; text -label ""; setParent mainLayout; columnLayout -rs 3; rowColumnLayout -numberOfRows 1; button -l "Submit!!" -w 50 -h 30 -c "my_SubmitJobToBackburner()"; window -e -width 250 -height 300 MayaToBackburnerWindow; showWindow; } my_MayaToBackburner ();