// // layoutEditor v1.0 // bora dayioglu 2007 // www.borafx.com boradayioglu@gmail.com // ------------------------------------------------------------ // desciption; // http://www.borafx.com/tutorials/layoutEditor/layoutEditor.html // for more information // global proc layoutEditor(){ cycleCheck -e off; global string $precamname; global string $precamshape; if(`window -q -ex layoutWin`) deleteUI -wnd layoutWin; window -title "layoutEditor v1.0" -s 0 -w 207 -h 407 layoutWin; columnLayout; text -label "cameraList"; textScrollList -ams 0 -w 200 -numberOfRows 8 -dcc seecamera -dkc deletecamera mylist; if(`headsUpDisplay -q -ex HUDprecam`==1) headsUpDisplay -rem HUDprecam; createprecam(); populateCameraList(); button -w 200 -l "refresh cameraList" -c populateCameraList; button -w 200 -h 60 -bgc .5 .5 1.0 -l "SET KET" -c keyprecam; intFieldGrp -columnWidth 1 90 -width 200 -numberOfFields 1 -label "add/rem frames" -value1 0.0 -cc "moveframes()" nframe; button -w 200 -l "select layoutCAM" -c selectprecam; button -w 200 -l "toggle info" -c toggleInfo; button -w 200 -l "pick info" -c pickInfo; button -w 200 -l "toggleCameras" -c hideCameras; button -w 200 -l "EXPORT SHOTS" -c exportprecam; button -w 200 -bgc 1.0 .3 .3 -l "RESET layoutCAM" -c resetprecam; button -w 200 -bgc 1.0 .3 .3 -l "REMOVE layoutCAM" -c removeprecam; showWindow layoutWin; } global proc removeprecam(){ global string $precamname; if(`confirmDialog -title "Confirm" -message "Are you sure?" -button "Yes" -button "No" -defaultButton "Yes" -cancelButton "No" -dismissString "No"`=="Yes"){ delete $precamname; delete ($precamname+"EXP"); deleteUI -window layoutWin; } } global proc hideCameras(){ string $sel[]=`ls -type "camera"`; int $n=`getAttr ($sel[0]+".visibility")`; if($n==0) showHidden $sel; else hide $sel; } global proc pickInfo(){ global string $precamname; select ($precamname+"info"); } global proc toggleInfo(){ global string $precamname; int $n=`getAttr ($precamname+"info.visibility")`; $n=($n+1)%2; setAttr ($precamname+"info.visibility") $n; } global proc moveframes(){ float $tmp; $tmp=`intFieldGrp -q -v1 nframe`; editKeys($tmp); intFieldGrp -e -v1 0 nframe; } global proc exportprecam(){ fileBrowserDialog -m 1 -fc "exportprecamGO" -ft "" -an "exportShots" -om "SaveAs"; } global proc exportprecamGO( string $filename, string $fileType ){ global string $precamname; global string $precamshape; string $prefix; $filename=toNativePath($filename); float $data[]; int $key[],$cam[]; clear $data; clear $key; clear $cam; $data=`keyframe -query -timeChange -valueChange $precamname`; int $k; $k=0; for($n=0;$n<(`size($data)`);$n+=2){ $key[$k]=$data[$n]; $cam[$k]=$data[$n+1]; $k++; } // store current timeline settings float $smintime,$sast,$saet,$smaxtime,$ct; $ct=`currentTime -q`; $smintime=`playbackOptions -q -minTime`; $smaxtime=`playbackOptions -q -maxTime`; $sast=`playbackOptions -q -ast`; $saet=`playbackOptions -q -aet`; // last shots length is the animation end time $key[$k]=((int)($saet)) +1; $cam[$k]=$cam[$k-1]; delete ($precamname+"EXP"); flushUndo; string $cams[]; string $rel[]; clear $cams; clear $rel; int $t; string $cop[]; for($n=0;$n<(`size($key)`-1);$n++){ // update playback range playbackOptions -minTime $key[$n] -ast $key[$n] -maxTime ($key[$n+1]-1) -aet ($key[$n+1]-1) ; updatePlaybackRange(); currentTime $key[$n]; $cop=`ls -tr ("camera"+$cam[$n]+"*")`; if(($n+1)<10) $prefix="0"; if(($n+1)<100) $prefix="00"; rename ($cop[0]) ("shot"+$prefix+($n+1)+"_cam"); $cams=`ls -type "camera"`; $t=0; for($k=0;$k<`size($cams)`;$k++){ $rel=`listRelatives -parent $cams[$k]`; if(($n+1)<10) $prefix="0"; if(($n+1)<100) $prefix="00"; if(`strcmp $rel[0] ("shot"+$prefix+($n+1)+"_cam")`!=0 ){ $t++; delete $rel[0]; } } if(($n+1)<10) $prefix="0"; if(($n+1)<100) $prefix="00"; file -rename ($filename+$prefix+($n+1)+".mb"); file -f -save -options "v=0" -type "mayaBinary"; for($j=0;$j<($t+1);$j++) undo; } playbackOptions -minTime $smintime -ast $sast -maxTime $smaxtime -aet $saet ; currentTime $ct; string $exp; $exp="updateInfoText(\""+$precamname+"\");\r\nstring $name;\r\nstring $cop[];\r\nint $cnum=`getAttr (\""+$precamname+".cam\")`;\r\n$cop=`ls -tr (\"camera\"+$cnum+\"*\")`;\r\n\r\n$name=$cop[0];\r\n\r\nif(`objExists($name)`==1){\t\r\n\tstring $tmp[];\r\n\tfloat $pos[],$rot[],$foc;\r\n\t$tmp=`listRelatives -s $name`;\r\n\t$sname=$tmp[0];\r\n\t$foc=`getAttr ($sname+\".focalLength\")`;\r\n\t\r\n\r\n\t$pos=`xform -q -ws -t $name`;\r\n\t$rot=`xform -q -ro $name`;\r\n\tsetAttr (\""+$precamshape+".focalLength\") $foc;\r\n\tsetAttr (\""+$precamname+".tx\") $pos[0];\r\n\tsetAttr (\""+$precamname+".ty\") $pos[1];\r\n\tsetAttr (\""+$precamname+".tz\") $pos[2];\r\n\tsetAttr (\""+$precamname+".rx\") $rot[0];\r\n\tsetAttr (\""+$precamname+".ry\") $rot[1];\r\n\tsetAttr (\""+$precamname+".rz\") $rot[2];\t\r\n\r\n}"; expression -s $exp -o "" -ae 1 -uc all -n ($precamname+"EXP"); confirmDialog -title "layoutEditor v1.0" -message ("done exporting....\n"+($n)+" shots created"); } global proc resetprecam(){ if(`confirmDialog -title "Confirm" -message "Are you sure?" -button "Yes" -button "No" -defaultButton "Yes" -cancelButton "No" -dismissString "No"`=="Yes"){ if(`objExists("_layoutCAM*")`==1) delete "_layoutCAM*"; createprecam(); populateCameraList(); } } global proc selectprecam(){ global string $precamname; select $precamname; } global proc keyprecam(){ global string $precamname; string $tmp[]; $tmp=`textScrollList -q -si mylist`; int $cnum=(int) (`match "[0-9]+" $tmp[0]`); if(`objExists($tmp[0])`==1){ setAttr ($precamname+".cam") ($cnum); setKeyframe -ott "step" ($precamname+".cam"); } } global proc populateCameraList(){ string $cam[]; string $temp[]; clear $cam; $cam=`ls -type "camera"`; textScrollList -e -ra mylist; for($n=0;$n<`size($cam)`;$n++){ $temp=`listRelatives -p $cam[$n]`; $cam[$n]=$temp[0]; if($cam[$n]=="_layoutCAMGRP") $cam[$n]="_layoutCAM"; if($cam[$n]!="persp" && $cam[$n]!="front" && $cam[$n]!="top" && $cam[$n]!="side") textScrollList -e -a $cam[$n] mylist; } } global proc seecamera(){ string $cpanel; string $cam[]; $cpanel=`getPanel -wf`; $cam=`textScrollList -q -si mylist`; lookThroughModelPanel $cam[0] $cpanel; } global proc deletecamera(){ string $cpanel; string $cam[]; $cpanel=`getPanel -wf`; $cam=`textScrollList -q -si mylist`; if($cam[0]!="_layoutCAM"){ delete $cam[0]; populateCameraList; } } global proc createprecam(){ global string $precamname; global string $precamshape; if(`objExists("_layoutCAM*")`==0){ string $tmp[]; $tmp=`camera -n "_layoutCAM"`; rename $tmp[0] "_layoutCAMGRP"; $precamname="_layoutCAMGRP"; clear $tmp; $tmp=`listRelatives -s $precamname`; rename $tmp[0] "_layoutCAM"; $precamshape="_layoutCAM"; camera -e -displayFilmGate off -displayResolution on -overscan 1.3 _layoutCAM; createInfo(); addAttr -ln cam -at long $precamname; setAttr -e -keyable true ($precamname+".cam"); string $exp; $exp="updateInfoText(\""+$precamname+"\");\r\nstring $name;\r\nstring $cop[];\r\nint $cnum=`getAttr (\""+$precamname+".cam\")`;\r\n$cop=`ls -tr (\"camera\"+$cnum+\"*\")`;\r\n\r\n$name=$cop[0];\r\n\r\nif(`objExists($name)`==1){\t\r\n\tstring $tmp[];\r\n\tfloat $pos[],$rot[],$foc;\r\n\t$tmp=`listRelatives -s $name`;\r\n\t$sname=$tmp[0];\r\n\t$foc=`getAttr ($sname+\".focalLength\")`;\r\n\t\r\n\r\n\t$pos=`xform -q -ws -t $name`;\r\n\t$rot=`xform -q -ro $name`;\r\n\tsetAttr (\""+$precamshape+".focalLength\") $foc;\r\n\tsetAttr (\""+$precamname+".tx\") $pos[0];\r\n\tsetAttr (\""+$precamname+".ty\") $pos[1];\r\n\tsetAttr (\""+$precamname+".tz\") $pos[2];\r\n\tsetAttr (\""+$precamname+".rx\") $rot[0];\r\n\tsetAttr (\""+$precamname+".ry\") $rot[1];\r\n\tsetAttr (\""+$precamname+".rz\") $rot[2];\t\r\n\r\n}"; expression -s $exp -o "" -ae 1 -uc all -n ($precamname+"EXP"); setAttr ($precamshape+".overrideEnabled") 1; setAttr ($precamshape+".overrideColor") 12; } else { string $tmp[]; $tmp=`ls -tr "_layoutCAM*"`; $precamname=$tmp[0]; clear $tmp; $tmp=`listRelatives -s $precamname`; $precamshape=$tmp[0]; } createInfo(); } global proc createInfo(){ global string $precamname; global string $precamshape; select -cl; if(`objExists($precamname+"info")`==0){ // draw info joint string $md1; joint -p 0 0.043 -0.15 -n ($precamname+"info"); group -em -n ($precamname+"infoGRP"); parent -r ($precamname+"info") ($precamname+"infoGRP"); parent -r -s ($precamname+"infoGRP") $precamname; setAttr ($precamname+"info.radius") 0; setAttr ($precamname+"info.type") 18; setAttr ($precamname+"info.drawLabel") 1; setAttr ($precamname+"info.overrideEnabled") 1; setAttr ($precamname+"info.overrideColor") 16; $md1=`createNode "multiplyDivide"`; setAttr ($md1+".input1X") 35.0; setAttr ($md1+".operation") 2; connectAttr -f ($precamshape+".focalLength") ($md1+".input2X"); connectAttr -f ($md1+".outputX") ($precamname+"infoGRP.sx"); connectAttr -f ($md1+".outputX") ($precamname+"infoGRP.sy"); } } global proc updateInfoText(string $precamname){ int $n=`getAttr ($precamname+".cam")`; string $cop[]=`ls -tr ("camera"+$n+"*")`; string $ret=$cop[0]; if(`objExists($ret)`!=1) $ret="NONE"; float $cf=`currentTime -q`; string $tc; int $mn,$sc,$fr; $sc=(int) $cf/25; $mn=(int) $sc/60; $sc%=60; $fr=$cf%25; string $smn,$ssc,$sfr,$scf,$sslen; if($fr<10) $sfr="0"; if($sc<10) $ssc="0"; if($mn<10) $smn="0"; if($cf<1000) $scf="0"; if($cf<100) $scf="00"; if($cf<10) $scf="000"; $tc=$smn+$mn+":"+$ssc+$sc+":"+$sfr+$fr; float $ptime,$ntime,$lastframe; int $len; $lastframe=`findKeyframe -which last $precamname`; if($cf<=$lastframe){ $ntime=`findKeyframe -time $cf -which next $precamname`; } else { $ntime=`playbackOptions -q -aet`; } $ptime=`findKeyframe -time $cf -which previous $precamname`; $len=(int)($ntime-$ptime); string $slen; if($len<1000) $sslen="0"; if($len<100) $sslen="00"; if($len<10) $sslen="000"; $slen=$sslen+$len; if($len<=0) $slen="INLAVID"; $ret+=" frame:"+$scf+$cf+" tc:"+$tc+" length:"+$slen; setAttr -type "string" ($precamname+"info.otherType") ($ret); } global proc editKeys(int $frm){ float $ct=`currentTime -q`; string $sel[]=`ls -type "animCurve"`; keyframe -e -iub false -an objects -t (($ct+1)+":100000") -r -o move -tc $frm $sel; }