Mel Temp
Jump to navigation
Jump to search
Bake projected texture map to UVs
string $path = "Q:/PROJECT/PATH/TO/DIR/maya/images/" string $projectionnode ="projection1.outColor"; string $els[] = `ls -sl`; string $o = $els[0]; for($i=150;$i<350;$i=$i+3){ $f = `currentTime -e $i`; $b = `convertSolidTx -antiAlias 1 -bm 1 -fts 1 -sp 0 -sh 0 -alpha 0 -doubleSided 0 -componentRange 0 -resolutionX 2048 -resolutionY 2048 -fileFormat "png" -fin ($path+$o+"_proj_"+$i+".png") $projectionnode $o`; delete $b; }
replace objects from one group to objects from another group
string $sel[] = `ls -sl`; string $templateObject[] = ls($sel[0]+"|*"); string $objectsToReplace[] = ls($sel[1]+"|*"); for($o = 0;$o < size($objectsToReplace);$o++){ int $rand = rand(size($templateObject)); string $replacing = $objectsToReplace[$o]; string $replacedBy = $templateObject[$rand]; string $parents[] = `listRelatives -p $objectsToReplace[$o]`; float $rotate[] = `getAttr ($replacing+".r")`; float $translate[] = `getAttr ($replacing+".t")`; float $scale[] = `getAttr ($replacing+".s")`; delete $replacing; string $duplicates[] = `duplicate $replacedBy`; string $newObj = $duplicates[0]; parent $newObj $parents[0]; setAttr ($newObj+".r") $rotate[0] $rotate[1] $rotate[2]; setAttr ($newObj+".t") $translate[0] $translate[1] $translate[2]; setAttr ($newObj+".s") $scale[0] $scale[1] $scale[2] ; rename $newObj $replacing; }
polygon edges to curves
//select edges first string $edges[]; for($e in `ls -sl -fl`){ select -r $e; string $newEdges[] = `polyToCurve -form 2 -degree 3`; $edges[size($edges)] = $newEdges[0]; } select -r $edges;
blender 2
{ if (`window -exists blenderW`) deleteUI blenderW; if (`windowPref -exists blenderW`) windowPref -remove blenderW; string $window = `window -widthHeight 350 460 -title "Blender" blenderW `; columnLayout -columnAttach "both" 6 -rowSpacing 10 -columnWidth 350; text -ww 1 -l "\nBlends translates, rotates and scales of selection using \n transforms of 'start' and 'end'. \n\n Initial blend values set using distances \n"; checkBoxGrp -numberOfCheckBoxes 3 -vr -label "Attrs to blend " -en1 0 -va3 0 1 0 -labelArray3 "Translate" "Rotate" "Scale" cbg; checkBoxGrp -numberOfCheckBoxes 4 -vr -label "Options " -va4 0 1 1 1 -en2 0 -en3 0 -en4 0 -labelArray4 "Use constraints" "Keep offset" "Blend children elmts" "Don't blend last ('tail') elmts" cbg2; button -label "Set 'start' Selection" -command "selA" selAButton; button -label "Set 'end' Selection" -en 0 -command "selB" selBButton; button -label "Set blend selection (0)" -en 0 -command "selC" selCButton; button -label "Set ctrl obj (defaults to 1st start elmt)" -en 1 -command "setCtrl" ctrlButton; button -label "Apply blend" -command "blendAttr" -en 0 blendButton; button -label "Reset" -command "resetAll" resetButton; button -label "Cancel/close" -command "cancelpr"; showWindow $window; global string $A[]; global string $B[]; global string $C[]; global string $ctrl = ""; proc selA(){ string $objs[] = {}; $objs = `ls -sl -l`; int $chCB = `checkBoxGrp -q -v3 "cbg2"`; int $endCB = `checkBoxGrp -q -v4 "cbg2"`; if(size($objs)!=0){ if($chCB){ string $tmp[] = `listRelatives -f -ad $objs[0]`; $tmp[size($tmp)] = $objs[0]; $objs = $tmp; } int $noc = (size($objs)-$endCB)*$chCB + 1 * !$chCB; button -e -en 1 -label ("Set 'start' Selection ("+$noc+" elmts)") "selAButton"; button -e -en 1 "selBButton"; $A = {}; if($endCB){ for($i=1;$i<size($objs);$i++){ $A[size($A)] = $objs[$i]; } }else{ $A = $objs; } } } proc selB(){ $objs = `ls -sl -l`; int $chCB = `checkBoxGrp -q -v3 "cbg2"`; int $endCB = `checkBoxGrp -q -v4 "cbg2"`; if(size($objs)!=0){ if($chCB){ string $tmp[] = `listRelatives -f -ad $objs[0]`; $tmp[size($tmp)] = $objs[0]; $objs = $tmp; } int $noc = (size($objs)-$endCB)*$chCB + 1 * !$chCB; button -e -en 1 -label ("Set 'end' Selection ("+$noc+" elmts)") "selBButton"; button -e -en 1 "selCButton"; $B = {}; if($endCB){ for($i=1;$i<size($objs);$i++){ $B[size($B)] = $objs[$i]; } }else{ $B = $objs; } } } proc selC(){ $objs = `ls -sl -l`; int $chCB = `checkBoxGrp -q -v3 "cbg2"`; int $endCB = `checkBoxGrp -q -v4 "cbg2"`; string $fullList[] = {}; int $counterA = 0; int $counterB = 0; if(size($objs)!=0){ for($o in $objs){ $counterA++; if($chCB){ $tmp = `listRelatives -f -ad $o`; for($i = $endCB; $i<size($tmp); $i++){ $counterB++; $fullList[size($fullList)] = $tmp[$i]; } $fullList[size($fullList)] = $o; $counterB++; } } } button -e -en 1 -label ("Set blend selection ("+$counterA+" x "+$counterB/$counterA+" elmts)") "selCButton"; button -e -en 1 "blendButton"; $C = $fullList; } proc setCtrl(){ string $sel[] = `ls -sl`; $ctrl = $sel[0]; button -e -en 1 -label ("Set ctrl obj ("+$ctrl+")") "ctrlButton"; } proc blendAttr(){ if($ctrl == ""){ $ctrl = $A[size($A)-1]; } int $doTranslate = `checkBoxGrp -q -v1 "cbg"`; int $doRotate = `checkBoxGrp -q -v2 "cbg"`; int $doScale = `checkBoxGrp -q -v3 "cbg"`; int $doConstraints = `checkBoxGrp -q -v1 "cbg2"`; int $numBlends = size($C)/size($A); string $rootA = $A[size($A)-1]; vector $rootAPos = `xform -q -ws -t $rootA`; string $rootB = $B[size($B)-1]; vector $rootBPos = `xform -q -ws -t $rootB`; string $snA[] = `ls -sn $rootA`; string $snB[] = `ls -sn $rootB`; addAttr -ln (toupper($snA[0])+"_to_"+toupper($snB[0])) -at "enum" -en " blends:" $ctrl; setAttr -e-channelBox true ($ctrl+"."+toupper($snA[0])+"_to_"+toupper($snB[0])); float $maxDistance = `mag($rootBPos-$rootAPos)`; string $connectExp = "//generated by script\n"; for($i=0;$i<$numBlends;$i++){ int $rootN = $i*size($A)+(size($C)/$numBlends-1); string $root = $C[$rootN]; vector $center = `xform -q -ws -t $root`; float $distA = `mag($rootAPos-$center)`; float $distB = `mag($rootBPos-$center)`; float $ratio = .5; if($distA+$distB<=$maxDistance){ $ratio = $distA/($distA+$distB); } string $names[] = `ls -sn $root`; string $ln = $snA[0]+"_"+$snB[0]+"_"+$names[0]+"_blend"; addAttr -ln ($ln) -nn ($names[0]+"_blend") -defaultValue $ratio -minValue 0 -maxValue 1 $ctrl; setAttr -e -keyable true ($ctrl+"."+$ln); for($j=0;$j<size($C)/$numBlends;$j++){ string $curObj = $C[$i*size($A)+$j]; //print("A"+$A[$j]+" -- B "+$B[$j]+" -- C "+$curObj+"\n"); //oc if($doRotate){ if($doConstraints){ string $oc[] = `orientConstraint -mo -weight 1 $A[$j] $B[$j] $curObj`; string $weightA[] = `listAttr -st "*W0" $oc[0]`; string $weightB[] = `listAttr -st "*W1" $oc[0]`; $connectExp += $oc[0]+"."+$weightA[size($weightA)-1]+" = 1-"+$ctrl+"."+$ln+";\n"; $connectExp += $oc[0]+"."+$weightB[size($weightB)-1]+" = "+$ctrl+"."+$ln+";\n"; }else{ $connectExp += $curObj+".rx = "+$B[$j]+".rx*"+$ln+" + "+$A[$j]+".rx*(1-"+$ln+");\n"; $connectExp += $curObj+".ry = "+$B[$j]+".ry*"+$ln+" + "+$A[$j]+".ry*(1-"+$ln+");\n"; $connectExp += $curObj+".rz = "+$B[$j]+".rz*"+$ln+" + "+$A[$j]+".rz*(1-"+$ln+");\n"; } } //$connectExp } } select -r $ctrl; expression -s $connectExp -o $ctrl; } proc resetAll(){ $A = {""}; $B = {""}; $C = {""}; $ctrl = ""; button -e -en 1 -label ("Set 'start' Selection") "selAButton"; button -e -en 0 -label ("Set 'end' Selection") "selBButton"; button -e -en 0 -label ("Set blend selection (0)") "selCButton"; button -e -en 1 -label ("Set ctrl obj (defaults to 1st start elmt)") "ctrlButton"; button -e -en 0 "blendButton"; } proc cancelpr(){ $A = {""}; $B = {""}; $C = {""}; deleteUI blenderW; } }
bake vertex color map to texture
//export vertex color map from object //if it doesn't work export 1 map by hand first source artisanCallback; string $sel[] = `ls -sl`; $n = $sel[0]; proc string pad(float $n){return ($n<1000)? ( ($n<100)?( ($n<10)?"000"+$n:"00"+$n ):"0"+$n ) : $n+"";} $tdir = (`workspace -q -rd` + "sourceimages\/" ); int $e = `playbackOptions -query -maxTime`; int $s = `playbackOptions -query -minTime`; $i = $s; for($i = $s;$i<=$e;$i++){ currentTime ($i); $path = ($tdir+$n+"."+pad($i)+".tif"); //select -r $n; artExportAttrMapCB "artAttrPaintVertexCtx" $path "1"; }
remap with ramp
string $nodes[] = `ls -sl`; string $source = ""; string $destination = ""; string $connection = ""; string $a[] = `listConnections -p 1 $nodes[0]`; string $aNoPlugs[] = `listConnections $nodes[0]`; string $b[] = `listConnections -p 1 $nodes[0]`; string $bNoPlugs[] = `listConnections $nodes[0]`; for($i = 0; $i<size($a);$i++){ if($aNoPlugs[$i] == $nodes[1]){ $connection = $b[$i]; $ci = `connectionInfo -sfd $b[$i]`; if($ci == ""){ //destination $source = $b[$i]; $connectionInfo = `connectionInfo -dfs $b[$i]`; $destination = $connectionInfo[0]; }else{ //source $source = $ci; $destination = $b[$i]; } break; } } $sn = `shadingNode -asTexture ramp`; $pt = `shadingNode -asUtility place2dTexture`; connectAttr ($pt+".outUV") ($sn+".uv"); connectAttr ($pt+".outUvFilterSize") ($sn+".uvFilterSize"); /* to do: multiattr if(`getAttr -s -type $source` == "float3"){ source. }*/ evalDeferred(`removeMultiInstance -break true ($sn+".colorEntryList[1]")`); setAttr ($sn+".colorEntryList[0].color") -type double3 0 0 0 ; setAttr ($sn+".colorEntryList[2].color") -type double3 1 1 1 ; setAttr ($sn+".colorEntryList[2].position") 1; disconnectAttr $source $destination; connectAttr -f $source ($sn+".vCoord"); connectAttr -f ($sn+".outColor.outColorR") $destination; select -r $sn;
color using userColor vray
int $colors[] = {16,221,255,64,232,2,255,189,15,232,50,34,101,7,255}; for($o in `ls -sl -l`){ int $r = rand(0,5); print($r+"\n"); vray addAttributesFromGroup $o vray_user_attributes 1; string $col = "rcolo="+($colors[$r*3]/255.0)+","+($colors[$r*3+1]/255.0)+","+($colors[$r*3+2]/255.0); setAttr -type "string" ($o+".vrayUserAttributes") $col; }
select UV
////////////////////////////// string $nullobjs[] = {}; for($o in `ls -sl`){ if(size(`ls -fl ($o+".map[*]")`) < 2){ $nullobjs[size($nullobjs)] = $o; } } select -r $nullobjs; //////////////////////// string $nullobjs[]; string $objs[] = `ls -sl`; for($obj in $objs){ select -r Structure_courts_389.map["*"] string $allUV[] = `polyUVSet -query -allUVSets $obj`; if(size($allUV)>1){ $nullobjs[size($nullobjs)] = $obj; print($obj+" "); } }
far near clip edit
global string $n; global string $f; global string $checkbx; $nc = `getAttr "perspShape.nearClipPlane"`; $fc = `getAttr "perspShape.farClipPlane"`; window -title "Set Near/Far Clip" -w 200; columnLayout -adjustableColumn true; separator -style "none" -h 3; checkBox -label "include non default cams"; separator -style "none" -h 3; rowLayout -numberOfColumns 2; floatField -pre 4 -value $nc; floatField -pre 0 -value $fc; setParent..; separator -style "none" -h 3; columnLayout -adjustableColumn true; floatSlider -minValue (-5) -maxValue 5 -step 1 -value 0; floatSlider -minValue (-5) -maxValue 5 -step 1 -value 0; separator -style "none" -h 3; showWindow; proc changeClip(){ global string $n; global string $f; global string $checkbx; }
hide stupid attribs maxwell
string $objs[] = `ls -sl`; string $parms[] = {"mxem","bfc","hc","hs","hgi","hzc","soc","oo","ss","oid0","oid1","oid2"}; for($obj in $objs){ for($parm in $parms){ catch(`setAttr -keyable false -channelBox false ($obj+"."+$parm)`); } }
Align (match scale & position) according to vertices
global float $startVtxPos[]; global float $targetVtxPos[]; global float $oks[]; $oks = {}; if (`window -exists matchObjectsW`) deleteUI matchObjectsW; if (`windowPref -exists matchObjectsW`) windowPref -remove matchObjectsW; string $window = `window -widthHeight 250 250 -title "Object Align" matchObjectsW `; columnLayout -columnAttach "both" 6 -rowSpacing 10 -columnWidth 250; text -ww 1 -l "\nMatches the location of target from source\n\nSelect two vertices or one edge on each object, hit apply\n"; button -label "Select components on target object" -command "selS" selSButton; button -label "Select components on source object" -command "selT" selTButton; button -label "Apply (no matching selection)" -command "matchObjects" -en 0 matchObjectsButton; button -label "Close" -command "cancelMatchObjects"; showWindow $window; proc cancelMatchObjects(){ deleteUI matchObjectsW; } proc selS(){ global float $oks[]; global float $startVtxPos[]; string $selection[] = `ls -sl`; string $vtx[] = `polyListComponentConversion -tv $selection`; if(size($vtx) != 2){ warning "select an edge or two vertices"; $oks[0] = 0; }else{ $oks[0] = 1; $startVtxPos = `xform -q -ws -t $vtx`; } refreshMatchObjects; } proc selT(){ global float $oks[]; global float $targetVtxPos[]; string $selection[] = `ls -sl`; string $vtx[] = `polyListComponentConversion -tv $selection`; if(size($vtx) != 2){ warning "select an edge or two vertices"; $oks[1] = 0; }else{ $oks[1] = 1; $targetVtxPos = `xform -q -ws -t $vtx`; } refreshMatchObjects; } proc refreshMatchObjects(){ global float $oks[]; print($oks[0]+" "+$oks[1]); if($oks[0] && $oks[1]){ button -e -en 1 -label ("Apply") "matchObjectsButton"; }else{ button -e -en 0 -label ("Apply "+(($oks[0]+$oks[1]==1)?("(selected 1/2)"):("(no matching selection)"))) "matchObjectsButton"; } }
set object pivot according to normals+locator
string $objs[] = `ls -sl`; string $obj = `match "^[^\.]*" $objs[size($objs)-1]`; setToolTo moveSuperContext; $manipMode = `manipMoveContext -q -mode Move`; manipMoveContext -e -mode 9 Move; vector $centerPos = `manipMoveContext -q -position Move`; vector $centerRot = `manipMoveContext -q -oa Move`; string $loca[] = `spaceLocator`; setAttr ($loca[0]+".tx") ($centerPos.x); setAttr ($loca[0]+".ty") ($centerPos.y); setAttr ($loca[0]+".tz") ($centerPos.z); setAttr ($loca[0]+".rx") (rad_to_deg($centerRot.x)); setAttr ($loca[0]+".ry") (rad_to_deg($centerRot.y)); setAttr ($loca[0]+".rz") (rad_to_deg($centerRot.z)); string $pivWindow = `window -title "Set Center" -iconName "Short Name" -widthHeight 180 110`; columnLayout -adjustableColumn true; text -label "\nMove/rotate selected locator\nto set the pivot of your object\n"; button -label "Done" -command ("pivProceed($pivWindow,$loca[0],$obj)"); button -label "Cancel" -command ("deleteUI -window " + $pivWindow+";delete $loca[0]"); setParent ..; showWindow $pivWindow; select -r $loca[0]; proc pivProceed(string $w,string $loc, string $obj){ string $parents[] = `listRelatives -parent $obj`; parent $obj $loc; makeIdentity -apply true -t 1 -r 1 -s 0 -n 0 $obj; if($parents[0] != ""){ parent $obj $parents[0]; }else{ parent -w $obj; } delete $loc; deleteUI -window $w; } manipMoveContext -e -mode $manipMode Move;
batch Maxwell FIRE rendering
global string $currentFrameFile; global int $frameN; global int $originalFrame; global string $error; global int $playblastActive; $playblastActive = 0; $currentFrameFile = $error = ""; $originalFrame = `currentTime -q`; $frameN = 1; global proc firePlayblast(){ firePlayblastUI; } proc string findLayout( string $windowUI,string $name ) {//from bryan ewert string $controls[] = `lsUI -l -controlLayouts`; string $pattern = $windowUI + "*"; string $layout = ""; for ( $ui in $controls ) { if ( `gmatch $ui $pattern` ) { string $tokens[]; int $numTokens = `tokenize $ui "|" $tokens`; if ( $numTokens > 1 ) { $layout = $tokens[0] + "|" + $tokens[1]; string $ca[] = `layout -q -ca $layout`; for ( $c in $ca ) { return ($layout + "|" + $c); break; } break; } } } return false; } global proc string pad(float $n){return ($n<1000)? ( ($n<100 )?( ($n<10 )?"000"+$n:"00"+$n ):"0"+$n ) : $n+"";} global proc string getImagePath(string $extraPath,int $extension){ setAttr "defaultRenderGlobals.outFormatControl" 0; setAttr "defaultRenderGlobals.animation" 1; setAttr "defaultRenderGlobals.putFrameBeforeExt" 1; setAttr "defaultRenderGlobals.extensionPadding" 4; string $image = pad(`currentTime -q`); string $tof[] = `renderSettings -gin $image -fp`; string $dir = `match "^.*/" $tof[0]`; string $filepart = `match "[^/\\]*$" $tof[0]`; $filepart = (!$extension)?`match "(.*)[^\.a-z]" $filepart`:$filepart; return $dir+$extraPath+$filepart; } global proc string saveFireImage(){ global string $error; global string $currentFrameFile; // "+`date -f "MMDD_hhmmss"`+"/ $filePath = getImagePath("maxwellFirePlayblasts/",0)+".png"; $mkdir = `sysFile -makeDir (match("^.*/",$filePath))`; string $vp = findLayout("MaxwellFIRE","maxwellViewport" ); if($mkdir && $vp != "0"){ maxwellViewport -e -saveIRImg ($filePath) $vp; $currentFrameFile = $filePath; }else{ $error = "No maxwell FIRE window found"; firePBrefreshUI; } return ""; } global proc firePlayblastUI(){ global int $frameN; int $e = `playbackOptions -query -maxTime`; int $s = `playbackOptions -query -minTime`; $frameN = $s; if (`window -exists playblastFireWindow`) deleteUI playblastFireWindow; if (`windowPref -exists playblastFireWindow`) windowPref -remove playblastFireWindow; string $window = `window -menuBar true -title "Playblast Fire" playblastFireWindow`; string $vp = findLayout("MaxwellFIRE","maxwellViewport" ); paneLayout -vis ($vp!="0"); columnLayout -adjustableColumn true; progressBar -maxValue 10 -width 300 -vis 1 -en 0 UI_progress; textField -text "'Seconds per frame' includes voxelisation" -en 0 -editable false UI_textfield; separator -h 18 -en 0; int $timeperframe = `optionVar -q "firePB_secondsperframe"`; $timeperframe = ($timeperframe!=0)?$timeperframe:15; intFieldGrp -numberOfFields 1 -label "Seconds per frame" -cc "firePBrefreshUI" -value1 $timeperframe UI_timePerF; separator -h 12 -en 0; intFieldGrp -numberOfFields 1 -label "Start frame" -cc "firePBrefreshUI" -value1 $s UI_startF; intFieldGrp -numberOfFields 1 -label "End frame" -cc "firePBrefreshUI" -value1 $e UI_endF; intFieldGrp -numberOfFields 1 -label "Frame increment" -cc "firePBrefreshUI" -value1 1 UI_incrF; int $firePBlaunchfcheck = (`optionVar -q "firePB_fcheck"`=="yes")?1:0; checkBoxGrp -numberOfCheckBoxes 1 -cat 1 "both" 90 -label1 "Launch fcheck" -cc "firePBrefreshUI" -value1 $firePBlaunchfcheck UI_fcheck; separator -h 12 -en 0; button -label "Playblast!" -command "firePythonThread(0)" -h 40 UI_playblast; separator -h 3 -en 1 -st "none"; button -label "Explore" -command "firePBOpenSequence(0)" UI_explore; separator -h 16 -en 1 -st "none"; button -label "Close" -command "firePythonThread(1);deleteUI playblastFireWindow "; separator -h 5 -en 1 -st "none"; setParent..;setParent..; paneLayout -vis ($vp=="0"); columnLayout -adjustableColumn true; button -label "Launch maxwell FIRE first" -command "firePlayblastUI"; showWindow $window; } global proc firePBTic(int $incr){ global int $frameN; firePBrefreshUI; if(!$incr){ print "."; }else{ int $incrF = `intFieldGrp -q -value1 UI_incrF`; saveFireImage; currentTime -u 1 -e (`currentTime -q`+$incrF); $frameN = `currentTime -q`; } } global proc firePythonThread(int $kill){ global int $originalFrame; global int $playblastActive; global string $error; python( "import threadProc;from threadProc import Timer;import maya.mel as mm" ); if(!$kill){ int $timePerF = `intFieldGrp -q -value1 UI_timePerF`; $playblastActive = 1; currentTime -u 1 -e (`intFieldGrp -q -value1 UI_startF`); python( "def tic():mm.eval('firePBTic(0)')"); python( "def toc():mm.eval('firePBTic(1)')"); python( "timerTic = Timer(1, tic, repeat=True);timerTic.start()"); python( "timerToc = Timer("+$timePerF+", toc, repeat=True);timerToc.start()"); }else{ $playblastActive = 0; $error = "Playblasting stopped"; python( "timerTic.stop();timerToc.stop()"); currentTime -e $originalFrame; $launchFcheck = `checkBoxGrp -q -value1 UI_fcheck`; if($launchFcheck){ firePBOpenSequence(1); } firePBrefreshUI; } } global proc firePBrefreshUI(){ global string $error; global string $currentFrameFile; global int $playblastActive; int $startF = `intFieldGrp -q -value1 UI_startF`; int $endF = `intFieldGrp -q -value1 UI_endF`; int $incrF = `intFieldGrp -q -value1 UI_incrF`; string $textfieldText =""; if($playblastActive){ $cur = `currentTime -q`; //$text = ($cur-$startF)/($endF - $startF)/$incrF; $textfieldText = "Playblasting ("+$cur+"/"+$endF+")"; //textField -e -text ( $text) -en 0 -editable false UI_textfield; button -e -label "Stop playblast" -command "firePythonThread(1)" -h 40 UI_playblast; }else{ button -e -label "Playblast!" -command "firePythonThread(0)" -h 40 UI_playblast; $incrF = ($incrF < 1)?1:$incrF; int $timePerF = `intFieldGrp -q -value1 UI_timePerF`; if($timePerF<3){ $timePerF = 3; $error += "short frames times = crash"; } intFieldGrp -e -value1 $timePerF UI_timePerF; optionVar -iv "firePB_secondsperframe" $timePerF; $launchFcheck = `checkBoxGrp -q -value1 UI_fcheck`; optionVar -sv "firePB_fcheck" (($launchFcheck)?"yes":"no"); if($endF<$startF){ intFieldGrp -e -value1 ($startF+1) UI_endF; } float $tte = (($endF-$startF)*1.0*$timePerF)/$incrF*1.0; string $seconds = pad(($tte%60.0)); $textfieldText = floor($tte/60.0)+"'"+substring($seconds,3,4)+"\" necessary for playblast"; } $textfieldText = ($error!="")?$error+"!":$textfieldText; textField -e -text ( $textfieldText) -en 0 -editable false UI_textfield; intFieldGrp -e -value1 ($incrF) UI_incrF; $error = ""; } global proc firePBOpenSequence(int $fcheck){ global string $currentFrameFile; global int $frameN; if($fcheck){ int $startF = `intFieldGrp -q -value1 UI_startF`; int $endF = `intFieldGrp -q -value1 UI_endF`; int $incrF = `intFieldGrp -q -value1 UI_incrF`; fcheck -F -n $startF ($frameN-1) $incrF (`substitute "[.*]([0-9]{4})[\.a-Z]" $currentFrameFile ".#."`); }else{ string $dir = `match "^.*/" $currentFrameFile`; if(`about -win`){ system("start explorer " + toNativePath($dir)); } } }
batch IPR rendering
proc string pad(float $n){return ($n<1000)? ( ($n<100)?( ($n<10)?"000"+$n:"00"+$n ):"0"+$n ) : $n+"";} renderWindowRender redoPreviousIprRender renderView; float $e = `playbackOptions -query -maxTime`; float $s = `playbackOptions -query -minTime`; for($i = $s;$i<$e;$i++){ $startTime = `timerX`; while(`timerX -st $startTime`<5){ //nothing } $frame = pad(`currentTime -q`); $dir = `internalVar -utd`; renderWindowEditor -e -writeImage ($dir+"/temp"+$frame) renderView; playButtonStepForward; }
all nurbs to polys
string $nurbz[] = `lsType "nurbsSurface"`; for($n in $nurbz){ if($n!="<done>"){ string $tr[] = `listRelatives -f -p $n`; string $pr[] = `listRelatives -f -p $tr[0]`; string $ntps[] = `nurbsToPoly -mnd 1 -ch 0 -f 2 -pt 1 -pc 200 -chr 0.9 -ft 0.01 -mel 0.001 -d 0.1 -ut 3 -un 3 -vt 3 -vn 3 -uch 0 -ucr 0 -cht 0.2 -es 0 -ntr 0 -mrt 1 -uss 1 -n ($tr[0]+"_poly") $n`; parent $ntps[0] $pr[0]; delete $tr[0]; } }
Use edge loops
float $r[] = {}; //selectionner un edge loop au bord de l'objet et lancer ce code plein de fois (avec Entrée du clavier num.) string $el[] = `pickWalk -d right -type edgeloop`; $oldsize = $size = size($el); setToolTo moveSuperContext; vector $centerPos = `manipMoveContext -q -position Move`; $r[size($r)] = $centerPos.x; $r[size($r)] = $centerPos.y; $r[size($r)] = $centerPos.z; ////////////// //quand c'est fini, lancer ce code $curv = "curve -d 1"; $ks = ""; for($i=0;$i<size($r)/3;$i++){ $curv += " -p "+$r[$i*3+0]+" "+$r[$i*3+1]+" "+$r[$i*3+2]; $ks += " -k "+$i; } $eval = $curv+$ks; eval($eval);
Tracks
//makes tracks along a curve with single motionpaths nodes. Make sure to use a surface-to-curve to get the right normals -- no flips int $dupl = 3; string $objs[] = `ls -sl`; if( (nodeType(`listRelatives -s $objs[1]`) == "nurbsCurve") && (nodeType(`listRelatives -s $objs[0]`) == "mesh") ){ string $expression = ""; string $curv = $objs[1]; string $mesh = $objs[0]; addAttr -ln "uSpeed" -dv .5 -at double $curv; setAttr -e-keyable true ($curv+".uSpeed"); addAttr -ln "uSpread" -dv .1 -at double $curv; setAttr -e-keyable true ($curv+".uSpread"); for($i = 0;$i<$dupl;$i++){ string $dupObj[] = `duplicate $mesh`; string $mp = `pathAnimation -fractionMode true -follow true -followAxis x -upAxis y -worldUpType "normal" -inverseUp true -inverseFront false -bank false -curve $curv $dupObj[0]`; disconnectAttr ($mp+"_uValue.output") ($mp+".uValue"); $expression += $mp+".uValue = ("+$curv+".uSpeed * time + "+$curv+".uSpread * "+$i+" )%1;\n"; } expression -s $expression -o$curv -ae 1 -uc all; select -r $curv; }else{ warning "select an object and a curve"; }
Particles thingy
proc float[] mergeArray(float $a[], float $b[]){ for($e in $b){ $a[size($a)] = $e; } return $a; }; proc float[] quad(float $v[], float $dist){ $x = $v[0]; $y = $v[1]; $z = $v[2]; float $list[] = { $x - $dist, $y - $dist, $z - $dist, $x + $dist, $y - $dist, $z - $dist, $x + $dist, $y - $dist, $z + $dist, $x - $dist, $y - $dist, $z + $dist, $x - $dist, $y + $dist, $z - $dist, $x + $dist, $y + $dist, $z - $dist, $x + $dist, $y + $dist, $z + $dist, $x - $dist, $y + $dist, $z + $dist }; return $list; } proc quadDivide(){ float $distance = 1; string $sel[] = `ls -sl`; float $l0[] = {}; float $l1[] = {}; if(size($sel)==0 || nodeType(`listRelatives -s $sel[0]`) != "particle"){ $l0 = {0,0,0}; $l1 = quad({0,0,0},$distance); }else{ string $objs[] = `listRelatives -s $sel[0]`; $l0 = `getParticleAttr -a 1 -at position $objs[0]`; vector $v1 = <<$l0[0],$l0[1],$l0[2]>>; vector $v2 = <<$l0[3],$l0[4],$l0[5]>>; $distance = mag($v1-$v2)/4; print($distance); for($j = 0;$j<size($l0)/3;$j++){ $l1 = mergeArray($l1,quad({$l0[$j*3],$l0[$j*3+1],$l0[$j*3+2]},$distance)); } } float $l2[] = {}; float $l3[] = {}; for($i = 0;$i<size($l1)/3;$i++){ $l2 = mergeArray($l2,quad({$l1[$i*3],$l1[$i*3+1],$l1[$i*3+2]},$distance/2)); } for($j = 0;$j<size($l2)/3;$j++){ $l3 = mergeArray($l3,quad({$l2[$j*3],$l2[$j*3+1],$l2[$j*3+2]},$distance/4)); } $p1 = createParticle($l1,$distance); $p2 = createParticle($l2,$distance/2); $p3 = createParticle($l3,$distance/4); evalDeferred(print("done.")); } proc string createParticle(float $list[], float $d){ string $p = "particle "; for($i = 0;$i<size($list)/3;$i++){ $p += " -p "+$list[$i*3]+" "+$list[$i*3+1]+" "+$list[$i*3+2]; } string $pObj[] = eval($p); setAttr ($pObj[1]+".particleRenderType") 8; addAttr -is true -ln "radius" -at "float" -min 0 -max 20 -dv $d $pObj[1]; return $pObj[1]; } print("calculating, please wait..\n"); evalDeferred("quadDivide");
Super duplicate enhancement, has moved
proc int hasMoved(string $obj,float $threshold){ int $t = `currentTime -q`; float $pN[] = `getAttr($obj+".translate")`; //float $rN[] = `getAttr($obj+".rotate")`; currentTime -e ($t - 1); float $pO[] = `getAttr($obj+".translate")`; //float $rO[] = `getAttr($obj+".rotate")`; currentTime -e $t; vector $diffT = <<$pO[0]-$pN[0],$pO[1]-$pN[1],$pO[2]-$pN[2]>>; if(mag($diffT)>$threshold){ return true; }else{ return false; } } string $o[] = `ls -sl`; $v = 0; for($i = 1;$i<400;$i++){ currentTime -e $i; $v += hasMoved($o[0],0.001); //print $v; } print(floor(($v*1.0)/$i*10000)/100+"%");
UV texture
string $r = `createNode ramp`; string $p = `createNode place2dTexture`; setAttr ($p+".mirrorV") 1; setAttr ($p+".repeatV") 2; setAttr ($r+".interpolation") 0; connectAttr ($p+".outUV") ($r+".uv"); connectAttr ($p+".outUvFilterSize") ($r+".uvFilterSize"); setAttr ($r+".colorEntryList[0].color") -type double3 1 .33 0; setAttr ($r+".colorEntryList[0].position") .9166; setAttr ($r+".colorEntryList[1].color") -type double3 1 1 0; setAttr ($r+".colorEntryList[1].position") .75; setAttr ($r+".colorEntryList[2].color") -type double3 0 1 0; setAttr ($r+".colorEntryList[2].position") .5833; setAttr ($r+".colorEntryList[3].color") -type double3 0 1 1; setAttr ($r+".colorEntryList[3].position") .4166; setAttr ($r+".colorEntryList[4].color") -type double3 0 0 1; setAttr ($r+".colorEntryList[4].position") .25; setAttr ($r+".colorEntryList[5].color") -type double3 1 0 1; setAttr ($r+".colorEntryList[5].position") .0833; setAttr ($r+".colorEntryList[6].color") -type double3 1 0 0; setAttr ($r+".colorEntryList[6].position") 0; string $r2 = `createNode ramp`; string $p2 = `createNode place2dTexture`; setAttr ($r2+".type") 1; setAttr ($r2+".interpolation") 0; for($i=0;$i<=11;$i++){ setAttr ($r2+".colorEntryList["+$i+"].color") -type double3 (($i*2.0)/12) 0 0; setAttr ($r2+".colorEntryList["+$i+"].position") (($i*1.0)/12); } connectAttr -f ($r2+".outColorR") ($p+".offsetV"); connectAttr ($p2+".outUV") ($r2+".uv"); connectAttr ($p2+".outUvFilterSize") ($r2+".uvFilterSize"); $lamb = `shadingNode -asShader lambert -name lambertUVCheck`; $lambSG = `sets -renderable true -noSurfaceShader true -empty -name lambertUVCheckSG`; connectAttr -f ( $lamb + ".outColor" ) ( $lambSG + ".surfaceShader" ); connectAttr -force ($r+".outColor") ($lamb+".color"); addAttr -ln "tile" -at double -dv 1 $lamb; setAttr -e-keyable true ($lamb+".tile"); $m = `createNode multiplyDivide`; connectAttr -f ($lamb+".tile") ($m+".input1X"); connectAttr -f ($lamb+".tile") ($m+".input1Y"); setAttr ($m+".input2X") 2; setAttr ($m+".input2Y") 1; connectAttr -f ($m+".outputX") ($p+".repeatV"); connectAttr -f ($m+".outputY") ($p2+".repeatU");
small things rig
for($o in `ls -sl`){ select -r $o; setToolTo moveSuperContext; vector $centerPos = `manipMoveContext -q -position Move`; string $c[0] = `circle -nr 0 0 1 -c 0 0 0 -r 2 -ch 0 -n "DaimCtrl"`; move -r -os -wd ($centerPos.x) ($centerPos.y) ($centerPos.z) ; select $c[0] $o; performParentConstraint 0; performScaleConstraint 0; select $c[0] ; zero(); }
auto ribbon setup
string $jnts[] = `ls -sl`; if(size($jnts)!=2){ warning "select 2 joints"; }else{ $startj = $jnts[0]; $endj = $jnts[1]; } float $sT[] = `xform -ws -q -t $startj`; float $eT[] = `xform -ws -q -t $endj`; float $trs[] = {abs($sT[0]-$eT[0]),abs($sT[1]-$eT[1]),abs($sT[2]-$eT[2])}; string $translate = ($trs[0]<$trs[1])?($trs[0]<$trs[2]):""; string $elms[] = `ikHandle -sol ikSplineSolver -scv false -roc false -pcv false`; $curve = $elms[2]; delete $elms[0] $elms[1]; setAttr "curve1.translateZ" -1.5;
Numericable fracture
$speedrand = 4; $posrand = 1; $startframe=110; $endframe=126; string $sel[] = `ls -sl`; CenterPivot; float $rand = 0; float $bbox[] = `xform -q -ws -bb $sel[0]`; float $pos[] = {};//`xform -q -ws -rp $sel[0]` ; for($i=0;$i<size($sel);$i++){ float $bboxtemp[] = `xform -q -ws -bb $sel[$i]`; $bbox = {min($bboxtemp[0],$bbox[0]),min($bboxtemp[1],$bbox[1]),min($bboxtemp[2],$bbox[2]),max($bboxtemp[3],$bbox[3]),max($bboxtemp[4],$bbox[4]),max($bboxtemp[5],$bbox[5])}; float $postmp[] = `xform -q -ws -rp $sel[$i]` ; $pos = {$pos[0] + $postmp[0],$pos[1] + $postmp[1],$pos[2] + $postmp[2]}; } $pos = {$pos[0]/$i,$pos[1]/$i,$pos[2]/$i}; float $x = ($bbox[3]-$bbox[0]); $x = $rand*(rand($x)-$x/2); float $y = ($bbox[4]-$bbox[1]); $y = $rand*(rand($y)-$y/2); float $z = ($bbox[5]-$bbox[2]); $z = $rand*(rand($z)-$z/2); print(($pos[0]+$x)+" "+($pos[1]+$y)+" "+($pos[2]+$z)+"\n"); string $items[] = {}; for($a in $sel){ string $polyCutTool[] = `polyCut -ef 1 -eo 0 0 0 -pc ($pos[0]+$x) ($pos[1]+$y) ($pos[2]+$z) -ro 0 90 90 -ch 1 $a`; //y polyCloseBorder -ch 1 $a; string $polyCutTool[] = `polyCut -ef 1 -eo 0 0 0 -pc ($pos[0]+$x) ($pos[1]+$y) ($pos[2]+$z) -ro 90 90 90 -ch 1 $a`; // polyCloseBorder -ch 1 $a; string $polyCutTool[] = `polyCut -ef 1 -eo 0 0 0 -pc ($pos[0]+$x) ($pos[1]+$y) ($pos[2]+$z) -ro 0 0 90 -ch 1 $a`; //z polyCloseBorder -ch 1 $a; delete -ch $a; int $pieces[] = `polyEvaluate -s $a`; if($pieces[0] > 1){ polySeparate -ch 0 $a; CenterPivot; } appendStringArray($items,`ls -sl`, size(`ls -sl`)); } for($it in $items){ select -r $it; float $center[] = `xform -q -ws -rp $it`; vector $tr = <<$center[0]-$pos[0],$center[1]-$pos[1],$center[2]-$pos[2]>>; $tr = <<$tr.x*rand($speedrand),$tr.y*rand($speedrand),$tr.z*rand($speedrand)>>; $tr += <<rand(-$posrand,$posrand),rand(-$posrand,$posrand),rand(-$posrand,$posrand)>>; vector $rr = <<rand(-30,30),rand(-30,30),rand(-30,30)>>; setKeyframe -at translate -t $startframe -t (($startframe+$endframe)/2) -t $endframe -v 0 $it; selectKey -clear; selectKey -add -k -in 1 ($it+".translateX") ; keyframe -e -o move -vc ($tr.x) -at ($it+".translateX"); selectKey -clear; selectKey -add -k -in 1 ($it+".translateY") ; keyframe -e -o move -vc ($tr.y) -at ($it+".translateY"); selectKey -clear; selectKey -add -k -in 1 ($it+".translateZ") ; keyframe -e -o move -vc ($tr.z) -at ($it+".translateZ"); setKeyframe -at rotate -t $startframe -t (($startframe+$endframe)/2) -t $endframe -v 0 $it; selectKey -clear; selectKey -add -k -in 1 ($it+".rotateX") ; keyframe -e -o move -vc ($rr.x) -at ($it+".rotateX"); selectKey -clear; selectKey -add -k -in 1 ($it+".rotateY") ; keyframe -e -o move -vc ($rr.y) -at ($it+".rotateY"); selectKey -clear; selectKey -add -k -in 1 ($it+".rotateZ") ; keyframe -e -o move -vc ($rr.z) -at ($it+".rotateZ"); selectKey -clear; /* $ax = (abs($rr.x)<80)?0:(($rr.x>0)?360:-360); $ay = (abs($rr.y)<80)?0:(($rr.y>0)?360:-360); $az = (abs($rr.z)<80)?0:(($rr.z>0)?360:-360); selectKey -add -k -in 2 ($it+".rotateX") ; keyframe -e -o move -vc ($ax) -at ($it+".rotateX"); selectKey -clear; selectKey -add -k -in 2 ($it+".rotateY") ; keyframe -e -o move -vc ($ay) -at ($it+".rotateY"); selectKey -clear; selectKey -add -k -in 2 ($it+".rotateZ") ; keyframe -e -o move -vc ($az) -at ($it+".rotateZ");*/ }
Instancer
$p = "particle"; string $sel[] = `ls -sl`; string $rotations[]; for($o in $sel){ float $xf[] = `xform -q -piv -ws $o`; $xf[3] = rad_to_deg($xf[3]); $xf[4] = rad_to_deg($xf[4]); $xf[5] = rad_to_deg($xf[5]); $rotations[size($rotations)] = $xf[3]; $rotations[size($rotations)] = $xf[4]; $rotations[size($rotations)] = $xf[5]; $p += " -p "+$xf[0]+" "+$xf[1]+" "+$xf[2]; } string $particleObj[] = `eval $p`; addAttr -ln rotationPP -dt vectorArray $particleObj[1]; addAttr -ln rotationPP0 -dt vectorArray $particleObj[1]; for($i = 0; $i < size($sel);$i++){ select -r pobjectShape.pt[$r[$j]]; string $pa = "targetPShape.pt["+$endPositions[$j]+"]"; float $posi[] = `getParticleAttr -a 1 -at initialPosition $pa`; setParticleAttr -vv $posi[0] $posi[1] $posi[2] -at targetPositionPP; } setParticleAttr -at rotationPP -fv $rotations -o $particleObj[1]; string $particleIns = eval("particleInstancer -r rotationPP -oi particleId -a -obj "+stringArrayToString($sel," -obj ")+" "+$particleObj[1]);
Merge particles systems
$pobj = "nParticle"; for($obj in `ls -sl`){ $c = `particle -q -count $obj`; $t = getAttr ($obj+".translate"); float $m[] = `xform -query -matrix $obj`; $pos = `getParticleAttr -a 1 -at position $obj`; for($i=0;$i<size($pos);$i=$i+3){ float $p[] = {$pos[$i],$pos[$i+1],$pos[$i+2]}; $p = pointMatrixMult($p,$m); $pobj += " -p "+($p[0]+$t[0])+" "+($p[1]+$t[1])+" "+($p[2]+$t[2]); } } eval($pobj);
tmp:
//select particles and run string $newP = "particle"; string $pa[] = `ls -sl`; for($p in $pa){ string $paSh[] = `listRelatives -s $p`; if(`nodeType $paSh[0]` != "particle"){ warning "select particles only"; break; }else{ float $particlePos[] = `getParticleAttr -a 1 -at position $paSh[0]`; for($i=0;$i<size($particlePos)/3;$i++){ $newP += " -p "+$particlePos[$i*3]+" "+$particlePos[$i*3+1]+" "+$particlePos[$i*3+2]; } } } evalDeferred($newP);
matrix usage
float $m[] = `xform -query -matrix "nParticle1"`; vector $p = `getParticleAttr -a 1 -at position nParticle1.pt[0]`; $p = pointMatrixMult($p,$m); $p += getAttr ( "nParticle1.translate"); locator1.translateX = $p.x; locator1.translateY = $p.y; locator1.translateZ = $p.z;
Match closest particles wizz
//test 2 WIP string $particles[] = `ls -sl`; float $pos1[] = `getParticleAttr -a 1 -at position $particles[0]`; float $pos2[] = `getParticleAttr -a 1 -at position $particles[1]`; float $maxTries1[] = {}; float $maxTries2[] = {}; float $magns[] = {}; float $empties1[] = {}; float $empties2[] = {}; float $newOrd[] = {}; for($i=0;$i<size($pos1)/3;$i++){ vector $pA1 = << $pos1[$i*3] , $pos1[$i*3+1] , $pos1[$i*3+2] >>; vector $pB1 = << $pos2[$i*3] , $pos2[$i*3+1] , $pos2[$i*3+2] >>; float $m1 = mag($pA1-$pB1); $magns[$i] = $m1; } for($i = 0; $i <= 10; $i++){ int $a1 = rand(size($pos1)/3); int $a2 = $a1; while ($a1 == $a2){ $a2 = rand(size($pos1)/3); } int $b1 = rand(size($pos2)/3); int $b2 = $b1; while ($b1 == $b2){ $b2 = rand(size($pos2)/3); } vector $pA1 = << $pos1[$a1*3] , $pos1[$a1*3+1] , $pos1[$a1*3+2] >>; vector $pA2 = << $pos1[$a2*3] , $pos1[$a2*3+1] , $pos1[$a2*3+2] >>; vector $pB1 = << $pos2[$b1*3] , $pos2[$b1*3+1] , $pos2[$b1*3+2] >>; vector $pB2 = << $pos2[$b2*3] , $pos2[$b2*3+1] , $pos2[$b2*3+2] >>; float $m1 = mag($pA1-$pB1); float $m2 = mag($pA2-$pB2); float $m3 = mag($pA1-$pB2); float $m4 = mag($pA2-$pB1); if( ( $m3 + $m4 ) < ( $m1 + $m2 ) ){ $magns[$a1] = $m1; $magns[$a2] = $m2; $newOrd[$a1] = $b1; $newOrd[$a2] = $b2; }else{ } } print $newOrd; /* for($i=0;$i<size($pos1)/3;$i++){ float $shortestdistance = 99999999; vector $p1 = << $pos1[$i] , $pos1[$i+1] , $pos1[$i+2] >>; int $id = -1; for($j=0;$j<size($pos2)/3;$j++){ if($empties[$j] != 1){ vector $p2 = << $pos2[$j] , $pos2[$j+1] , $pos2[$j+2] >>; float $distance = mag($p1-$p2); $shortestdistance = min($shortestdistance, $distance ); if($shortestdistance==$distance){ $id = $j; } } } if($id != -1){ $newOrd[$i] = $id; $empties[$id] = 1; } } */ for($i=0;$i<size($pos1)/3;$i++){ int $index = $newOrd[$i]; float $p[] = { $pos2[$index*3] , $pos2[$index*3+1] , $pos2[$index*3+2] }; select -r ($particles[1]+".pt["+$i+"]"); setParticleAttr -vv $p[0] $p[1] $p[2] -at position; /*refresh -f; pause -sec 1;*/ } select -r $particles;
string $selection[] = `ls -sl`; float $r[] = {}; float $usedArray[] = {}; float $usedArrayFlag[] = {}; float $endPositions[] = {}; proc int inArray(float $v,float $thearray[]){ int $flag = 0; for($item in $thearray){ if($item == $v){ $flag = 1; break; } } return $flag; } for($i = 0;$i < 500;$i++){ $max = 1000; $flag = true; int $t = rand(500); $count = 0; while(inArray($t,$r) && $count < $max){ $count++; $t = rand(500); $flag = false; } if($flag || $count < $max ){ $r[size($r)] = $t; } } for($i = 0;$i < 500;$i++){ $max = 1000; $flag = true; int $t = rand(500); $count = 0; while(inArray($t,$usedArray) && $count < $max){ $count++; $t = rand(500); $flag = false; } if($flag || $count < $max ){ $usedArray[size($usedArray)] = $t; $usedArrayFlag[size($usedArray)] = 0; } } float $rPositions[] = {}; float $usedArrayPosition[] = {}; for($particle in $r){ string $pa = "pobjectShape.pt["+$particle+"]"; float $posi[] = `getParticleAttr -a 1 -at position $pa`; $rPositions[size($rPositions)] = $posi[0]; $rPositions[size($rPositions)] = $posi[1]; $rPositions[size($rPositions)] = $posi[2]; } for($particle in $usedArray){ string $pa = "targetPShape.pt["+$particle+"]"; float $posi[] = `getParticleAttr -a 1 -at position $pa`; $usedArrayPosition[size($usedArrayPosition)] = $posi[0]; $usedArrayPosition[size($usedArrayPosition)] = $posi[1]; $usedArrayPosition[size($usedArrayPosition)] = $posi[2]; } //print(size($rPositions)); for($j = 0; $j < size($r) ; $j++ ){ $failcount = 0; int $shortest; float $shortestdistance = 99999999; int $pid = $j * 3; vector $pPos = <<$rPositions[$pid],$rPositions[$pid+1],$rPositions[$pid+2]>>; for($i=0;$i<=1000;$i++){ int $rand = rand(size($usedArray)); if($usedArrayFlag[$rand]==0){ vector $tPos = <<$usedArrayPosition[$rand*3],$usedArrayPosition[$rand*3+1],$usedArrayPosition[$rand*3+2]>>; $d = mag($pPos-$tPos); if(min($shortestdistance,$d)==$d){ $shortestdistance = $d; $shortest = $rand; } }else{ $failcount++; } } $usedArrayFlag[$shortest] = 1; $endPositions[$j] = $shortest; } for($j = 0; $j < size($r);$j++){ select -r pobjectShape.pt[$r[$j]]; string $pa = "targetPShape.pt["+$endPositions[$j]+"]"; float $posi[] = `getParticleAttr -a 1 -at initialPosition $pa`; setParticleAttr -vv $posi[0] $posi[1] $posi[2] -at targetPositionPP; } saveInitialState -atr targetPositionPP pobjectShape; print("\nEnd"); select -r $selection;
proc int inArray(float $v,float $thearray[]){ int $flag = 0; for($item in $thearray){ if($item == $v){ $flag = 1; break; } } return $flag; } float $r[] = {}; for($i = 0;$i < 500;$i++){ $max = 1000; $flag = true; int $t = rand(500); $count = 0; while(inArray($t,$r) && $count < $max){ $count++; $t = rand(500); $flag = false; } if($flag || $count < $max ){ $r[size($r)] = $t; } } size($r);
$max = 20; $radius = 10; for($i=0;$i<=$max;$i++){ $side = rand($max/($i+1),$max/($i+2)); vector $pos = sphrand($radius); polyCube -w $side -h $side -d $side -sx 1 -sy 1 -sz 1 -ax 0 1 0 -cuv 4 -ch 1; move -r ($pos.x) (abs($pos.y)) ($pos.z); print isInsideCube() } proc isInsideCube(string $object, string $containerObject){ vector $pos = getAttr($object+".translate"); print($pos.x); } isInsideCube("pCube4","pCube1");
$ps = "particleShape1"; /*if(particleShape1.particleId==0){ particleShape1.position = sphrand(2); particleShape1.radiusPP = rand(1,3); }*/ for($i=0;$i<particleShape1.count;$i++){ $j = 0; float $p[] = `getParticleAttr -at position -array true $ps`; vector $s[] = `getParticleAttr -at radiusPP -array true $ps`; $flag = false; vector $po; while(!flag){ $po=sphrand(3); if(pow(mag($s),2)>$p[0]- }; }
locators on vertices bake
int $start = 0; int $end = 10; string $vertices[] = `ls -sl -fl`; string $locators[]; for($v in $vertices){ string $newLoc[] = `spaceLocator`; $locators[size($locators)] = $newLoc[0]; } for($i=$start;$i<=$end;$i++){ currentTime $i; for($j = 0; $j<size($vertices);$j++){ float $pos[] = `xform -q -ws -t $vertices[$j]`; setAttr ($locators[$j]+".translate") $pos[0] $pos[1] $pos[2]; setKeyframe ($locators[$j]+".translate"); } }
Clean Bevel
//requires selection string $s[] = `ls -sl`; string $groupz = `group -em`; for($i = 0;$i<=size($s)-1;$i++){ select -r $s[$i]; string $obj[] = `bevelPlus -constructionHistory false -normalsOutwards true -range false -polygon 1 -tolerance 0.01 -numberOfSides 3 -js true -width 0 -depth 0 -extrudeDepth 0.2 -capSides 4 -bevelInside 0 -outerStyle 0 -innerStyle 0 -polyOutMethod 2 -polyOutCount 200 -polyOutExtrusionType 2 -polyOutExtrusionSamples 1 -polyOutCurveType 3 -polyOutCurveSamples 2 -polyOutUseChordHeightRatio 0`; parent $obj[0] $groupz; }
Select sharp edges
global string $cursel[]; /*proc string selectAngle(){ global string $cursel[]; if(size(`ls -sl`)>0 || size($cursel)> 0){ if(size(`ls -sl`)>0){ $cursel = `ls -sl`; } } $v = `floatSliderGrp -q -v "flSlider"`; $softEdge = `polySoftEdge -angle 50 -ch 1 $cursel`; ConvertSelectionToEdges; polySelectConstraint -m 3 -type 32768 -sm 2; string $selectEdges[] = `ls -sl`; delete $softEdge; invertSelection; return 1; }*/ global proc selectAngle(){ global string $cursel[]; select -r $cursel; $cursel = {}; } string $window = `window -title "Select sharp edges"`; columnLayout; string $slid = `floatSliderGrp -field true -label "Select Edge Angle" -min 0 -max 90 -dc "selectAngle()" "flSlider"`; showWindow $window;
Save renderview image to desktop as png
catchQuiet(`saveRenderViewToDesktop`); //still pops up an error global proc saveRenderViewToDesktop(){ string $fileName = `file -q -sceneName`; string $scene = `match "[^/\\]*$" $fileName`; $scene = `match "^[^\.]*" $scene`; //string $path = $desktop+"/renderView/"+$scene+"/"+$scene+; //string $workspace = `workspace -q -fullName`; string $desktop = getenv("USERPROFILE")+"/Desktop"; string $d = system("echo %DATE%-%TIME%"); string $datetime = substring($d,9,10)+substring($d,4,5)+substring($d,1,2)+"_"+substring($d,12,13)+substring($d,15,16)+"_"+substring($d,18,18); //string $path = $desktop+"/renderView/"+$scene+"/"+$scene+; sysFile -makeDir ($desktop+"/renderView/"); // Windows string $path = $desktop+"/renderView/"+$scene+"-"+$datetime; //string $path = $desktop+"/"+$scene+"-"+$datetime; int $imf = `getAttr "defaultRenderGlobals.imageFormat"`; setAttr "defaultRenderGlobals.imageFormat" 32; renderWindowSaveImageCallback "renderView" $path "image"; setAttr "defaultRenderGlobals.imageFormat" $imf; }
loc on points
string $objs[] = `ls -sl`; string $obj = `match "^[^\.]*" $objs[size($objs)-1]`; setToolTo scaleSuperContext; manipScaleContext -e -mode 3 Scale; vector $centerPos = `manipScaleContext -q -position Scale`; vector $centerRot = `manipScaleContext -q -oa Scale`; $centerRot = <<rad_to_deg($centerRot.x),rad_to_deg($centerRot.y),rad_to_deg($centerRot.z)>>; string $loc[] = `spaceLocator -p 0 0 0`; move -r ($centerPos.x) ($centerPos.y) ($centerPos.z); select -r $objs; select -add $loc[0]; //rotate -r -os ($centerRot.x) ($centerRot.y) ($centerRot.z); //select -r $objs; //string $cl[] = `newCluster " -envelope 1"`; //parent $cl[1] $loc[0];
nClothCache green ticks
print "\n\n"; $ob = `ls -sl -l -o`; string $s[] = `listRelatives -s $ob`; $cache = ""; for($shp in $s){ print(`listConnections -t "nClothShape" $shp`); } listConnections outputCloth2; listRelatives -s nCloth2; listConnections -t "nCache" nClothShape2; catchQuiet (`deleteAttr -attribute "cacheStart" $ob`); catchQuiet (`deleteAttr -attribute "cacheEnd" $ob`); addAttr -ln "cacheStart" -at double $ob; setAttr -e-keyable true ($ob[0]+".cacheStart"); addAttr -ln "cacheEnd" -at double $ob; setAttr -e-keyable true ($ob[0]+".cacheEnd"); setKeyframe -at "cacheStart" -t 1 $ob[0]; keyframe -e -at "cacheStart" -tds 1 $ob[0]; setKeyframe -at "cacheEnd" -t 10 $ob[0]; keyframe -e -at "cacheEnd" -tds 1 $ob[0];
softbodyFlatten
string $sel[] = `ls -sl`; for($i = 0;$i<=100;$i+=2){ currentTime $i; currentTime ($i+1); string $dupe[] = `duplicate $sel[0]`; $ch = `listRelatives -c $dupe[0]`; delete($dupe[0]+"|"+$ch[2]); }
Advanced Skeleton Button Maker
makeButton("FKDrapSideE*_M",344,114,4,15,15,1); //select s makeButton("",684,14,4,15,15,1); //turn mirror on, select t select -r FKDrapSideF_R ; select -tgl FKDrapSideF1_R ; select -tgl FKDrapSideF2_R ; select -tgl FKDrapSideF3_R ; select -tgl FKDrapSideF4_R ; select -tgl FKDrapSideF5_R ; select -tgl FKDrapSideF6_R ; select -tgl FKDrapSideF7_R ; select -tgl FKDrapSideF8_R ; makeButton("",344,215,4,15,15,1); proc makeButton(string $sel, float $x, float $y, float $g, float $bw, float $bh, int $it){ string $hardCodeSelector = "asSelectorDefault|columnLayout5|asSelectorDefaultFormLayout|asSelectorBGImage"; string $hardCodeSelector2 = "asSelectorDefault|columnLayout5|asSelectorDefaultFormLayout|asSelectorBGImage"; float $bigButtons[] = {}; $p = 0; $gBuffStrArr[0]="1"; $i = 0; int $topbutton = 3; string $list[] = {""}; if($sel == ""){ $list = `ls -sl`; }else{ $list = `ls $sel`; } for($obj in $list){ $p = ($p<3)?$p+1:1; print($p+"\n\n"); select -r $obj; $i += $it; print($i+"!!!!\n"); // clear $gBuffStrArr; $gBuffStrArr[0] = ""+($x+$i*($bw+$g)); $gBuffStrArr[1] = ""+$y; asSelectorDpc $hardCodeSelector $hardCodeSelector $gBuffStrArr (($x+$i*($bw+$g))+$bw) ($y+$bh) 2; clear $gBuffStrArr; select -cl; if($p == 1){ $bigButtons[size($bigButtons)] = ($it!=-1)?($x+$i*($bw+$g)):(($x+$i*($bw+$g))+$bw); } if($p == 3 || $list[size($list)-1]==$obj){ $bigButtons[size($bigButtons)] = ($it==-1)?($x+$i*($bw+$g)):(($x+$i*($bw+$g))+$bw); } } $i=0; for($a=0;$a<(size($list)+1);$a+=3){ eval("select -r "+$list[$a]+" "+$list[$a+1]+" "+$list[$a+2]); string $s[] = `ls -sl`; print($a+": "+stringArrayToString($s," ")+"\n"); // clear $gBuffStrArr; $gBuffStrArr[0] = ""+$bigButtons[$i]; $gBuffStrArr[1] = ""+($y+$bh+$g*2); asSelectorDpc $hardCodeSelector $hardCodeSelector $gBuffStrArr $bigButtons[$i+1] ($y+2*$bh+$g*2-3) 2; clear $gBuffStrArr; select -cl; $i+=2; } }
Ajouter des attributs en masse
A finir....
// crée des attributs sur plusieurs objets en meme temps, et les affiches dans la channel box // WIP ---- STRING & INT ne marchent pas (que 'sep' 'float' pr l'instant) string $sel[]=`ls -sl`; if(size($sel)>0){ string $result = `promptDialog -title "Create Attributes" -message "type name default min max\n-> float Angle 0\n-> float Value 0 -10 10\n->sep\n-> sep sepName'" -button "OK" -button "Cancel" -defaultButton "OK" -cancelButton "Cancel" -text "float " -dismissString "Cancel"`; if ($result == "OK") { $text = `promptDialog -query -text`; string $opnts[] = stringToStringArray($text, " "); $type = $opnts[0]; //string $attrs[] = `listAttr -r -s $obj`; //stringArrayContains($attrs,); $text = `promptDialog -query -text`; $ok = 0; $cmd = ""; $setAttr = ""; if($opnts[0] == "sep"){ $nicename = "_______"; if($opnts[1] != ""){ $nicename = "__"+$opnts[1]+"__"; } float $hack = rand(0,99999); $hack = floor($hack); $cmd = "addAttr -ln \"_sep"+$hack+"_\" -nn \""+$nicename+"\" -at \"enum\""; $setAttr = "setAttr -e-channelBox true "; $ok = 1; }else{ $type = ($opnts[0]=="int")?"int ":"double "; $name = $opnts[1]; if($name == ""){ warning "Need a var name!"; }else{ $ok = 1; } $def = ($opnts[2]=="")?0:$opnts[2]; $min = ($opnts[3]=="")?"":"-min "+$opnts[3]+" "; $max = ($opnts[4]=="")?"":"-max "+$opnts[4]+" "; $cmd = "addAttr -ln \""+$name+"\" -at "+$type+""+$min+""+$max+"-dv "+$def+" "; $setAttr = "setAttr -e-keyable true"; } if($ok){ for($obj in $sel){ eval($cmd+" "+$obj); string $listAttrs[] = `listAttr $obj`; string $lastAttr = $listAttrs[size($listAttrs)-1]; eval($setAttr+" "+$obj+"."+$lastAttr); } } } }else{ warning "No objects selected"; }
Edge loops to bones
//select one edge part of an edge loop string $parentjoint = ""; polySelectSp -ring; for($edge in `ls -sl -fl`){ select -r $edge; polySelectSp -loop; setToolTo moveSuperContext; float $centerP[] = `manipMoveContext -q -position Move`; string $newjoint = `joint -p $centerP[0] $centerP[1] $centerP[2]`; if($parentjoint != ""){ parent $newjoint $parentjoint; joint -e -zso -oj xyz -sao yup $parentjoint; }else{ parent -w; } $parentjoint = $newjoint; }
Constraints
$obj = `ls -sl -o`; //for($c in `listConnections -t "constraint" -d 0 $obj`){ for($c in `listConnections -p 1 -d 0 $obj`){ print($c+" "+`nodeType $c`+"\n"); } listConnections -d 0 $obj
Bone Blender
//Bone blender string $sel[] = `ls -sl`; string $blend = "Chest_M.switch_r"; string $sn = `shadingNode -asUtility blendColors`; connectAttr -f $blend ($sn+".blender"); connectAttr -f ($sel[0]+".translate") ($sn+".color1"); connectAttr -f ($sel[1]+".translate") ($sn+".color2"); connectAttr -f ($sn+".output") ($sel[2]+".translate"); string $sn = `shadingNode -asUtility blendColors`; connectAttr -f $blend ($sn+".blender"); connectAttr -f ($sel[0]+".rotate") ($sn+".color1"); connectAttr -f ($sel[1]+".rotate") ($sn+".color2"); connectAttr -f ($sn+".output") ($sel[2]+".rotate"); string $sn = `shadingNode -asUtility blendColors`; connectAttr -f $blend ($sn+".blender"); connectAttr -f ($sel[0]+".scale") ($sn+".color1"); connectAttr -f ($sel[1]+".scale") ($sn+".color2"); connectAttr -f ($sn+".output") ($sel[2]+".scale");
Parallel/Corrective Blendshapes maker
//extremely dirty coding, but it works { if (`window -exists corrBs`) deleteUI corrBs; if (`windowPref -exists corrBs`) windowPref -remove corrBs; string $window = `window -widthHeight 250 400 -title "Corrective Blendshapes" corrBs `; columnLayout -columnAttach "both" 5 -rowSpacing 10 -columnWidth 250; text -ww 1 -l "\nThis will create a shape that you can later feed into a parallel blendshape node manually, and control with SDKs. Make sure no other deformation than the base skinCluster is on."; button -label "Select base mesh" -command "selBaseF" selBase; button -label "Select controller/bone at rest position" -command "controlA" -en false contrBase; button -label ">> Set in pose, click and sculpt" -command "sculptF" -en false sculptBut; button -label "Done ? >> Create the target" -command "doneF" -en false doneBut; button -label "Cancel/close" -command "cancel"; showWindow $window; global string $objs[]; global string $ctrls[]; global float $ctrlsM[]; global string $A[]; global string $B[]; proc selBaseF(){ $objs = `ls -sl`; if(size($objs)!=0){ print $objs[0]; select -cl; button -e -en 1 "contrBase"; button -e -en 0 -label ("Base: "+$objs[0]) "selBase"; } } proc controlA(){ $ctrls = `ls -sl`; if(size($ctrls)!=0){ $ctrlsM[0] = `getAttr ($ctrls[0]+".translateX")`; $ctrlsM[1] = `getAttr ($ctrls[0]+".translateY")`; $ctrlsM[2] = `getAttr ($ctrls[0]+".translateZ")`; $ctrlsM[3] = `getAttr ($ctrls[0]+".rotateX")`; $ctrlsM[4] = `getAttr ($ctrls[0]+".rotateY")`; $ctrlsM[5] = `getAttr ($ctrls[0]+".rotateZ")`; $ctrlsM[6] = `getAttr ($ctrls[0]+".scaleX")`; $ctrlsM[7] = `getAttr ($ctrls[0]+".scaleY")`; $ctrlsM[8] = `getAttr ($ctrls[0]+".scaleZ")`; button -e -en 0 -label ("Ctrl:"+$ctrls[0]) "contrBase"; button -e -en 1 "sculptBut"; } } proc sculptF(){ select -cl; $A = `duplicate -n "base" $objs[0]`; $B = `duplicate -n "sculptme" $objs[0]`; move -r 8 0 0 $B[0]; setAttr ($A[0]+".visibility") 0; catchQuiet(`parent -w $B[0]`); catchQuiet(`parent -w $A[0]`); select -r $B[0]; button -e -en 0 "sculptBut"; button -e -en 1 "doneBut"; } proc doneF(){ select -cl; select -r $B[0] $A[0] $objs[0]; string $bs[] = `blendShape -par`; setAttr ($ctrls[0]+".translateX") $ctrlsM[0]; setAttr ($ctrls[0]+".translateY") $ctrlsM[1]; setAttr ($ctrls[0]+".translateZ") $ctrlsM[2]; setAttr ($ctrls[0]+".rotateX") $ctrlsM[3]; setAttr ($ctrls[0]+".rotateY") $ctrlsM[4]; setAttr ($ctrls[0]+".rotateZ") $ctrlsM[5]; setAttr ($ctrls[0]+".scaleX") $ctrlsM[6]; setAttr ($ctrls[0]+".scaleY") $ctrlsM[7]; setAttr ($ctrls[0]+".scaleZ") $ctrlsM[8]; setAttr ($bs[0]+".weight[0]") 1; setAttr ($bs[0]+".weight[1]") -1; $name = "CorrectedMesh"; $result = `promptDialog -title "Name of correction" -message "Enter Name:" -button "OK" -button "Cancel" -defaultButton "OK" -cancelButton "Cancel" -dismissString "Cancel"`; if ($result == "OK") { $name = `promptDialog -query -text`; } string $newObj[] = `duplicate -n $name $objs[0]`; select -r $newObj[0]; parent -w; string $parB[] = `listConnections ($bs[0]+".outputGeometry[0]")`; delete $parB; catchQuiet(`delete $B[0]`); catchQuiet(`delete $A[0]`); button -e -en 1 -label "Select base mesh" "selBase"; button -e -en 0 -label "Select controller/bone at rest position" "contrBase"; button -e -en 0 "sculptBut"; button -e -en 0 "doneBut"; select -r $newObj[0]; } proc cancel(){ catchQuiet(`delete $B[0]`); catchQuiet(`delete $A[0]`); print("Done"); deleteUI corrBs; } }
Reforger les connections vers les SSS
//SELECTIONNER DABORD LA TEXTURE MR (mentalRayTexture) ET PUIS LA LMAP (miss_fast_lmap) string $files[] = `ls -sl`; $texture = $files[0]+".message"; $lmap = $files[1]+".message"; for($mat in `lsType "misss_fast_skin_maya"`){ if($mat != "<done>"){ catchQuiet(`connectAttr -f $texture ($mat+".lightmap")`); string $bobo[] = `connectionInfo -dfs ($mat+".outValue")`; string $node = $bobo[0]; string $SG = `match "^[^\.]*" $node`; //print($SG+"\n"); catchQuiet(`connectAttr -f $lmap ($SG+".miLightMapShader")`); } }
Joint flip
string $objs[] = `ls -sl`; $parent = `listRelatives -p $objs[0]`; string $flip = `addAttr -ln "FlipCorrect" -at bool $objs[0]`; setAttr -e -keyable true ($objs[0]+".FlipCorrect"); $cond = `shadingNode -asUtility condition`; setAttr ($cond+".secondTerm") 1; setAttr ($cond+".colorIfTrueR") 180; setAttr ($cond+".colorIfFalseR") 0; connectAttr -f ($objs[0]+".FlipCorrect") ($cond+".firstTerm"); connectAttr -f ($cond+".outColorR") ($parent[0]+".rotateX");
Controller color selector
/* ls -sl; listRelatives -s; overrideColor; help -doc ls */ window; //rowLayout -nc 2; columnLayout; colorIndexSliderGrp -label "Select Color" -min 0 -max 20 -value 10; rowLayout -nc 2; button -label "Apply" -command "Apply"; button -label "Cancel" -command "Cancel"; showWindow;
Jean texture to light intensity
animateLights; global proc animateLights(){ string $sele[] = `ls -sl`; string $selRel[] = `listRelatives -s $sele`; string $polys[] = `filterExpand -sm 12`; string $lights[] = `ls -lt $selRel`; if(size($sele) != size($polys)+size($lights) || size($polys)!=1){ warning("Select lights and a poly object with a texture!"); }else{ string $shapes[] = `listRelatives -s $polys`; string $shape = $shapes[0]; string $trans = $polys[0]; string $SG[] = `listConnections -t shadingEngine $shape`; string $outcolor = `connectionInfo -sfd ($SG[0]+".surfaceShader")`; string $no_component = `match "^[^\.]*" $outcolor`; string $fileTexture[] = `listConnections -t file $no_component`; if(size($fileTexture)<1){ warning("No file texture found with "+$shape); }else{ string $lightSet = `sets -em -n "AffectedLightsSet"`; sets -in $lightSet $lights; string $ft = $fileTexture[0]; string $cpom = `createNode closestPointOnMesh`; connectAttr -f ($shape+".outMesh") ($cpom+".inMesh"); connectAttr -f ($trans+".matrix") ($cpom+".inputMatrix"); //locator object $ctrlObjs = `spaceLocator -p 0 0 0 -n "LightsControlLoc"`; $ctrlObj = $ctrlObjs[0]; $anot = `annotate -tx "Lights Control" -p 2 2 2 $ctrlObj`; parent (`listRelatives -p $anot`) $ctrlObj ; setAttr ($anot+".template") 1; addAttr -ln "________" -at "enum" -en "________" $ctrlObj; setAttr -e -keyable true ($ctrlObj+".________"); addAttr -ln "activated" -at double -dv 1 $ctrlObj ; setAttr -e -keyable true ($ctrlObj+".activated"); addAttr -ln "setkeys" -at double -dv 1 $ctrlObj ; setAttr -e -keyable true ($ctrlObj+".setkeys"); addAttr -ln "multiplier" -at double -dv 100 $ctrlObj ; setAttr -e -keyable true ($ctrlObj+".multiplier"); addAttr -ln "debug" -at double -dv 0 $ctrlObj ; setAttr -e -keyable true ($ctrlObj+".debug"); //expression string $ex; $ex += "$ctrlObj = \""+$ctrlObj+"\";\nif(`getAttr ($ctrlObj+\".debug\")` == 1){\n$t = `currentTime -q`;\n\tprint(\"\\n----[\"+$t+\"]------------\\n\");\n}\n"; $ex += "if(`getAttr ($ctrlObj+\".activated\")` == 1){\n $multiplier = `getAttr ($ctrlObj+\".multiplier\")`;\n $ft = \"file1\";\n $cp = \""+$cpom+"\";\n"; $ex += " for($obj in `listConnections -s 1 -d 0 -p 0 -c 0 \""+$lightSet+"\"`){\n $ws = `xform -worldSpace -query -translation $obj`;\n"; $ex += " \tsetAttr ($cp+\".inPosition\") $ws[0] $ws[1] $ws[2];\n \t$u = `getAttr ($cp+\".parameterU\")`;\n \t$v = `getAttr ($cp+\".parameterV\")`;\n"; $ex += " float $RGB[] = `colorAtPoint -o RGB -u $u -v $v $ft`;\n $shp = `listRelatives -s $obj`;\n setAttr ($shp[0]+\".intensity\") ($RGB[0]*$multiplier);\n"; $ex += " if(`getAttr ($ctrlObj+\".setkeys\")` == 1){\n setKeyframe ($shp[0]+\".intensity\");\n }\n if(`getAttr ($ctrlObj+\".debug\")` == 1){\n"; $ex += " $pos = `getAttr ($cp+\".position\")`;\n move -a $pos[0] $pos[1] $pos[2] $ctrlObj; \n select -r $obj $ctrlObj;\n print($obj+\": \"+($RGB[0]*$multiplier)+"; $ex += "\" u: \"+$u+\" v:\"+$v+\"\\n\");\n refresh -f;\n pause -sec 1;\t\t\n }\n }\n}"; expression -s $ex -o $ctrlObj -n "lightsExpression" -ae 1 -uc all ; select -r $ctrlObj; } } }
Del unused nodes
hyperShadePanelMenuCommand("hyperShadePanel1", "deleteUnusedNodes");
motion vector particles
string $panel = `getPanel -withFocus`; $camera = `modelPanel -q -cam $panel`; $pnts = `ls -sl -fl`; float $pntLocalPositions[] = `xform -q -t -ws $pnts`; vector $pntLocalPositionsVectors[] = <<$ptPosWs[0],$ptPosWs[1],$ptPosWs[2]>>; float $a[] = getAttr($camera+".worldInverseMatrix"); matrix $cameraInverseMatrix[4][4] = <<$a[0],$a[1],$a[2],$a[3];$a[4],$a[5],$a[6],$a[7];$a[8],$a[9],$a[10],$a[11];$a[12],$a[13],$a[14],$a[15]>>; float[] pointMatrixMult ( float $point[], float $matrix[] )
particle force
//particleforce vector $force1 = inputForce[1]; vector $force2 = inputForce[2]; if( `mag $force1` != 0 || `mag $force2` != 0 ) lifespanPP = 0;
fracture particles spread/gather
//voronois global proc setVoronois(int $min,int $max){ float $polyVol = 0; float $vmax = 0; float $vmin = 0; string $sele[] = `ls -sl`; string $shapes[] = `listRelatives -s -path $sele`; float $shapeVol[]; string $breakNode[]; for($i = 0;$i<size($sele);$i++){ string $fxbreak[] = `listConnections($shapes[$i]+".inMesh")`; $breakNode[$i] = $fxbreak[0]; select -d; select -r $sele[$i]; $t = catchQuiet($polyVol = `computePolysetVolume`); $polyVol = abs($polyVol); $vmin = ($i == 0)?($polyVol):(min($vmin,$polyVol)); $vmax = max($vmax,$polyVol); $shapeVol[$i] = $polyVol; //print("\n"+$sele[$i]+"("+$shapes[$i]+") "+$breakNode[$i]+" "+size($fxbreak)+".\n"); } select -r $sele; for($a = 0;$a<size($sele);$a++){ $perc = ($shapeVol[$a]-$vmin)/($vmax-$vmin); float $numPar = ceil(($max-$min)*$perc+$min); print("\n"+$sele[$a]+"("+$shapes[$a]+") -> "+$breakNode[$a]+" ["+$shapeVol[$a]+"] "+(floor($perc*100))+"% ("+($numPar)+")"); //setAttr "fxBreakGeometry4.numPoints" 10; } } setVoronois(1,20);
string $particles[] = `ls -sl -fl`; float $arr[] = `getParticleAttr -a 1 -at position $particles`; float $avX = 0; float $avY = 0; float $avZ = 0; int $b = 0; for($b;$b<size($arr);$b+=3){ $avX += $arr[$b]; $avY += $arr[$b+1]; $avZ += $arr[$b+2]; } $avX = $avX/($b/3); $avY = $avY/($b/3); $avZ = $avZ/($b/3); float $avG[] = {$avX,$avY,$avZ}; window -title "Push/Pull Particles"; columnLayout -adjustableColumn true; $t = `floatSlider -min -100 -max 100 -value 0 -step 1 -cc "test($particles,$arr,$avG)" "particleSlider"`; showWindow; proc float[] newPositions(float $positions[], float $avG[], float $scale){ int $b = 0; for($b;$b<size($positions);$b+=3){ $positions[$b] = $positions[$b] + $scale*($avG[0]-$positions[$b]); $positions[$b+1] = $positions[$b+1] + $scale*($avG[1]-$positions[$b+1]); $positions[$b+2] = $positions[$b+2] + $scale*($avG[2]-$positions[$b+2]); } return $positions; } proc moveParticles(string $particles[], float $positions[]){ global string $gMainProgressBar; $len = `size($particles)`; progressBar -edit -beginProgress -isInterruptable true -status "Moving Particles..." -maxValue $len $gMainProgressBar; for($part in $particles){ if(`progressBar -query -isCancelled $gMainProgressBar`) break; progressBar -edit -step 1 $gMainProgressBar; print($part+"\n"); } progressBar -edit -endProgress $gMainProgressBar; } //moveParticles($particles,$arr); proc test(string $particles[],float $positions[], float $average[]){ $scale = `floatSlider -q -v "particleSlider"`; $scale = $scale/100; float $nuPositions[] = newPositions($positions,$average,0); print("-----\n"+$positions[0]+"\n--------\n"); }
3d to 2d 2
/// transform un point 3d en un point 2d (pour eviter a retracker derriere) // Rob Bredow // rob (at) 185vfx.com // http://www.185vfx.com/ // Copyright 3/2002 Rob Bredow, All Rights Reserved global string $hardpath = "E:"; global string $camera = ""; $w = `getAttr "defaultResolution.width"`; $h = `getAttr "defaultResolution.height"`; global string $firstline = "w="+$w+"|h="+$h; // Get a matrix proc matrix screenSpaceGetMatrix(string $attr){ float $v[]=`getAttr $attr`; matrix $mat[4][4]=<<$v[0], $v[1], $v[2], $v[3]; $v[4], $v[5], $v[6], $v[7]; $v[8], $v[9], $v[10], $v[11]; $v[12], $v[13], $v[14], $v[15]>>; return $mat; } // Multiply the vector v by the 4x4 matrix m, this is probably // already in mel but I cant find it. proc vector screenSpaceVecMult(vector $v, matrix $m){ matrix $v1[1][4]=<<$v.x, $v.y, $v.z, 1>>; matrix $v2[1][4]=$v1*$m; return <<$v2[0][0], $v2[0][1], $v2[0][2]>>; } global proc int screenSpace() { global string $camera; global string $hardpath; global string $textafteravant; global string $textafterafter; $w = `getAttr "defaultResolution.width"`; $h = `getAttr "defaultResolution.height"`; if($camera == ""){ string $panel = `getPanel -withFocus`; $camera = `modelPanel -q -cam $panel`; } // get the currently selected point string $dumpList[] = `ls -sl`; int $argc = size($dumpList); if ($argc != 1) { confirmDialog -t "screenSpace Usage" -m "To use, select a point on a geometry or a single object to write"; return -1; } string $dumpPt = $dumpList[0]; // Make $dumpPt a unix friendly name string $name = $dumpPt; while ( match("\\[",$name) != "" ) { $name = `substitute "\\[" $name "_"`; } while ( match("\\]",$name) != "" ) { $name = `substitute "\\]" $name ""`; } while ( match("\\.",$name) != "" ) { $name = `substitute "\\." $name "_"`; } // Find the frame range float $fs = `playbackOptions -q -min`; float $fe = `playbackOptions -q -max`; string $verify = "Will create " + $name + "_screenSpace.cmp\n" + "For the frame range of " + $fs + "-" + $fe + "\n" + "The camera used will be "+$camera+"\n"; if (`confirmDialog -t "screenSpace Verify" -m $verify -b "Dump" -b "Cancel"` == "Cancel") return -2; print ("Dumping selection...\n"); string $pointWsFile = $hardpath+"/"+$name+"_screenSpace.cmp"; int $outFileId = fopen($pointWsFile,"w"); if ($outFileId == 0) { print ("Could not open output file " + $pointWsFile); return -1; } string $line; int $f = 0; float $tx[],$ty[],$tz[]; fprint $outFileId $textafteravant; for ($f=$fs;$f<=$fe;$f++) { currentTime $f; // get the world space position of the point into a vector float $ptPosWs[] = `xform -q -ws -t $dumpPt`; vector $ptVecWs = <<$ptPosWs[0],$ptPosWs[1],$ptPosWs[2]>>; // Grab the worldInverseMatrix from cam_main matrix $cam_mat[4][4] = screenSpaceGetMatrix($camera+".worldInverseMatrix"); // Multiply the point by that matrix vector $ptVecCs = screenSpaceVecMult($ptVecWs,$cam_mat); // Adjust the point's position for the camera perspective float $hfv = `camera -q -hfv $camera`; float $ptx = (($ptVecCs.x/(-$ptVecCs.z))/tand($hfv/2))/2.0+.5; float $vfv = `camera -q -vfv $camera`; float $pty = (($ptVecCs.y/(-$ptVecCs.z))/tand($vfv/2))/2.0+.5; float $ptz = $ptVecCs.z; float $ww = ($ptx*$w*100); float $hh = ($pty*$h*100); $ww = `floor $ww`; $hh = `floor $hh`; $ww *= .01; $hh *= .01; $hh = $h - $hh; //hack to match in comp: $hh = ($hh-$h/2)*1.176+$h/2; $line = "\t"+$f+"\t"+$ww+ "\t" +$hh + "\t" + "0\n"; //$text += $line; fprint $outFileId $line; } $textafter = "\n\n"+$textafterafter; fprint $outFileId $textafterafter; fclose $outFileId; print("\n-------\n"+$pointWsFile+"\n---------\n"); return 1; };
3d to 2d keys afx
/// transform un point 3d en un point 2d (pour eviter a retracker derriere) // Rob Bredow // rob (at) 185vfx.com // http://www.185vfx.com/ // Copyright 3/2002 Rob Bredow, All Rights Reserved global string $hardpath = "E:"; global string $camera = ""; $w = `getAttr "defaultResolution.width"`; $h = `getAttr "defaultResolution.height"`; global string $textafteravant; $textafteravant = "Adobe After Effects 8.0 Keyframe Data\n\n\tUnits Per Second 25\n\tSource Width "+$w+"\n\tSource Height "+$h+"\n\tSource Pixel Aspect Ratio 1\n\tComp Pixel Aspect Ratio 1\n\nTransform Position\n\tFrame X pixels Y pixels Z pixels \n"; global string $textafterafter = "End of Keyframe Data"; // Get a matrix proc matrix screenSpaceGetMatrix(string $attr){ float $v[]=`getAttr $attr`; matrix $mat[4][4]=<<$v[0], $v[1], $v[2], $v[3]; $v[4], $v[5], $v[6], $v[7]; $v[8], $v[9], $v[10], $v[11]; $v[12], $v[13], $v[14], $v[15]>>; return $mat; } // Multiply the vector v by the 4x4 matrix m, this is probably // already in mel but I cant find it. proc vector screenSpaceVecMult(vector $v, matrix $m){ matrix $v1[1][4]=<<$v.x, $v.y, $v.z, 1>>; matrix $v2[1][4]=$v1*$m; return <<$v2[0][0], $v2[0][1], $v2[0][2]>>; } global proc int screenSpace() { global string $camera; global string $hardpath; global string $textafteravant; global string $textafterafter; $w = `getAttr "defaultResolution.width"`; $h = `getAttr "defaultResolution.height"`; if($camera == ""){ string $panel = `getPanel -withFocus`; $camera = `modelPanel -q -cam $panel`; } // get the currently selected point string $dumpList[] = `ls -sl`; int $argc = size($dumpList); if ($argc != 1) { confirmDialog -t "screenSpace Usage" -m "To use, select a point on a geometry or a single object to write"; return -1; } string $dumpPt = $dumpList[0]; // Make $dumpPt a unix friendly name string $name = $dumpPt; while ( match("\\[",$name) != "" ) { $name = `substitute "\\[" $name "_"`; } while ( match("\\]",$name) != "" ) { $name = `substitute "\\]" $name ""`; } while ( match("\\.",$name) != "" ) { $name = `substitute "\\." $name "_"`; } // Find the frame range float $fs = `playbackOptions -q -min`; float $fe = `playbackOptions -q -max`; string $verify = "Will create " + $name + "_screenSpace.cmp\n" + "For the frame range of " + $fs + "-" + $fe + "\n" + "The camera used will be "+$camera+"\n"; if (`confirmDialog -t "screenSpace Verify" -m $verify -b "Dump" -b "Cancel"` == "Cancel") return -2; print ("Dumping selection...\n"); string $pointWsFile = $hardpath+"/"+$name+"_screenSpace.cmp"; int $outFileId = fopen($pointWsFile,"w"); if ($outFileId == 0) { print ("Could not open output file " + $pointWsFile); return -1; } string $line; int $f = 0; float $tx[],$ty[],$tz[]; fprint $outFileId $textafteravant; for ($f=$fs;$f<=$fe;$f++) { currentTime $f; // get the world space position of the point into a vector float $ptPosWs[] = `xform -q -ws -t $dumpPt`; vector $ptVecWs = <<$ptPosWs[0],$ptPosWs[1],$ptPosWs[2]>>; // Grab the worldInverseMatrix from cam_main matrix $cam_mat[4][4] = screenSpaceGetMatrix($camera+".worldInverseMatrix"); // Multiply the point by that matrix vector $ptVecCs = screenSpaceVecMult($ptVecWs,$cam_mat); // Adjust the point's position for the camera perspective float $hfv = `camera -q -hfv $camera`; float $ptx = (($ptVecCs.x/(-$ptVecCs.z))/tand($hfv/2))/2.0+.5; float $vfv = `camera -q -vfv $camera`; float $pty = (($ptVecCs.y/(-$ptVecCs.z))/tand($vfv/2))/2.0+.5; float $ptz = $ptVecCs.z; float $ww = ($ptx*$w*100); float $hh = ($pty*$h*100); $ww = `floor $ww`; $hh = `floor $hh`; $ww *= .01; $hh *= .01; $hh = $h - $hh; //hack to match in comp: $hh = ($hh-$h/2)*1.176+$h/2; $line = "\t"+$f+"\t"+$ww+ "\t" +$hh + "\t" + "0\n"; //$text += $line; fprint $outFileId $line; } $textafter = "\n\n"+$textafterafter; fprint $outFileId $textafterafter; //$text+= $textafterafter; //fprint $outFileId $text; fclose $outFileId; print("\n-------\n"+$pointWsFile+"\n---------\n"); //system("start \""+$pointWsFile+"\""); return 1; };
Kohen Ball Thing II
// cache tout ce qui est plus pres que la distance 'Clipdist' crée lors du premier lancement du script // utilisation: // hideInside 1; // 1 - pose de clées sur la visibilité // 0 - pose pas de clées // global proc hideInside(float $keyframe){ string $sele[] = `ls -sl`; $target = $sele[size($sele)-1]; if(!objExists ($target+".clipdist")){ addAttr -ln "clipdist" -at double $target; setAttr -e -keyable true {$target+".clipdist"}; warning "Remplir l'attribut >> clipdist <<"; }else{ float $hidden = 0; float $minDist = `getAttr ($target+".clipdist")`; select -r $target; setToolTo moveSuperContext; float $centerTarg[] = `manipMoveContext -q -position Move`; for($a=0;$a<size($sele)-1;$a++){ //print("\n"+$a+" --- "+$sele[$a]); select -r $sele[$a]; setToolTo moveSuperContext; float $centerPosi[] = `manipMoveContext -q -position Move`; $vec = <<$centerTarg[0]-$centerPosi[0],$centerTarg[1]-$centerPosi[1],$centerTarg[2]-$centerPosi[2]>>; $dist = `mag $vec`; setAttr ($sele[$a]+".visibility") 1; if($dist-$minDist < 0){ setAttr ($sele[$a]+".visibility") 0; $hidden++; } if($keyframe){ setKeyframe ($sele[$a]+".visibility"); } } print($hidden+" objets cachés"); } select -r $sele; }
Nodestate Locked>Normal
//Check si les nodeStates sont pas en normal: for($obj in `ls`){ $a = `getAttr($obj+".nodeState")`; if($a != 0){ print("\n"+$obj+" "+$a); } //catchQuiet(`setAttr($obj+".nodeState") 0`); }
Chernokid Manager
//ui interface based on http://www.axelgaertner.de/axcrack/AxCrack.mel thanks! global string $window="ChernokidsManager"; global int $width=200; global string $location = "U:/CHERNOKID/PROD/TOOLS/MAYA/MANAGER"; global string $locationB = "U:/CHERNOKID/PROD/BDD/FINAL"; global string $extension = "txt"; if (`window -exists $window`) deleteUI -window $window; window -tlc 210 390 -wh $width 300 -title ($window+" 0.1") -iconName "ckMan" $window; string $root = `formLayout`; string $parent = `tabLayout -scr true -cr true -imh 10 -imw 10 -parent $root`; formLayout -edit -attachForm $parent "top" 5 -attachForm $parent "left" 5 -attachForm $parent "bottom" 5 -attachForm $parent "right" 5 $root; // Create Tab01 tabCharger($parent); // Create Tab02 tabRefs($parent); showWindow $window; global proc tabRefs(string $parent) { $extension = "ma"; global string $locationB; $width=`tabLayout -q -w $parent`; string $MaxMasterFrame=`frameLayout -lv false -mw 10 -mh 10 -w $width -bv false -parent $parent "Refs"`; string $MasterFrame=`columnLayout -adj true -rs 7 -parent $MaxMasterFrame`; string $nvoFrm=`frameLayout -l "Décors" -bv true -la "center" -li 10 -lv true -mw 10 -mh 10 -w $width -bs "etchedIn" -parent $MasterFrame `; string $nvoCol=`rowColumnLayout -cw 1 350 -parent $nvoFrm`; separator -style "none" -height 17 -parent $nvoCol; refsDD("bob", "test", "",$nvoCol,$locationB+"/DECORS",$extension); separator -style "none" -height 17 -parent $nvoCol; button -label "Charger en Ref" -h 30 -c ("loadRef(getDropDownListValue(\"bob\"),$locationB+getDropDownListValue(\"bob\"))") -parent $nvoCol; popupMenu; menuItem -label "Ref Editor" -c "getDropDownListValue(\"bob\")"; menuItem -label "Ouvrir la scène (!!)"; menuItem -label "Ouvrir le dossier"; } global proc tabCharger(string $parent) { global string $location; global string $extension; $width=`tabLayout -q -w $parent`; string $MaxMasterFrame=`frameLayout -lv false -mw 10 -mh 10 -w $width -bv false -parent $parent "Plans"`; string $MasterFrame=`columnLayout -adj true -rs 7 -parent $MaxMasterFrame`; string $chargerFrame=`frameLayout -l "Charger" -bv true -la "center" -li 10 -lv true -mw 10 -mh 10 -w $width -bs "etchedIn" -parent $MasterFrame `; string $chargerLay = `rowColumnLayout -cw 1 350 -cal 1 "center" -numberOfColumns 1 -parent $chargerFrame`; string $txtload =`columnLayout -parent $chargerLay`; string $imgrow =`columnLayout -parent $chargerLay`; string $chrgp = `columnLayout -parent $chargerLay`; string $nvoFrm=`frameLayout -l "Nouveau" -bv true -la "center" -li 10 -lv true -mw 10 -mh 10 -w $width -bs "etchedIn" -parent $MasterFrame `; string $nvoCol=`rowColumnLayout -cw 1 350 -parent $nvoFrm`; string $Frame03=`frameLayout -l "Editer" -bv true -la "center" -li 10 -lv true -mw 10 -mh 10 -w $width -bs "etchedIn" -parent $MasterFrame `; string $Frame03Col=`columnLayout -adj true -parent $Frame03`; $img = $location+"/images/none.png"; text -l "- Plan: "-parent $txtload -al "right" -fn "smallBoldLabelFont" Plantexte; text -l "(...)" -parent $txtload -al "left"; image -image $img -w 200 -h 113 -parent $imgrow Imagepreview; separator -style "none" -height 10 -parent $imgrow; optionMenuGrp -label "Travail" -parent $imgrow -cal 1 "right" -cw2 140 170 -cc ("updateSections(\""+$chrgp+"\")") typeXXX; mksections; separator -style "none" -height 10 -parent $chrgp; plansDropDown($chrgp,$location+"/plans/anim",$extension); separator -style "none" -height 17 -parent $chargerLay; button -label "Charger" -h 30 -c ExecuteExpandPieces -parent $chargerLay Chargebutton; popupMenu; menuItem -label "Charger le plus récent du dossier"; menuItem -label "Ouvrir le dossier"; optionMenuGrp -label "Travail" -parent $nvoCol -cal 1 "right" -cw2 140 170 -cc ("") typePlan; mksections; separator -style "none" -height 10 -parent $nvoCol; textFieldGrp -cal 1 "right" -cw2 140 170 -label "Plan (pXX)" -text "00" -parent $nvoCol NvoPlan; separator -style "none" -height 17 -parent $nvoCol; button -label "Nouveau" -h 30 -c ExecuteExpandPieces -parent $nvoCol; } proc mksections(){ menuItem -label "anim"; menuItem -label "layout"; } proc string remPre(string $string,string $pre){ string $pre = $pre+"_"; string $prev = `substitute $pre $string ""`; return $prev; } proc string remEx(string $file){ string $node = $file; string $no_component = `match "^[^\.]*" $node`; return $no_component; } global proc updateSections(string $parent){ global string $location; global string $extension; string $getFromap = `optionMenuGrp -q -v typeXXX`; plansDropDown($parent,$location+"/plans/"+$getFromap,$extension); } proc updatePlans(string $location,string $extension) { string $plan=`optionMenuGrp -q -v loadPlanXXX`; if($plan != "..."){ $plan = $location+"/"+$plan+"."+$extension; string $infos[] = flatTextToArray($plan); text -e -l $infos[0] Plantexte; if($infos[1] != ""){ image -e -image $infos[1] Imagepreview; } } } proc string[] flatTextToArray(string $textfile){ $fileId=`fopen $textfile "r"`; string $nextLine = `fgetline $fileId`; string $rem = "\\\n"; string $infos[] = {`substitute $rem $nextLine ""`}; while ( size( $nextLine ) > 0 ) { //print ( $nextLine ); $nextLine = `fgetline $fileId`; $infos[size($infos)] = `substitute $rem $nextLine ""`; } fclose $fileId; return $infos; } proc plansDropDown(string $parent, string $location,string $extension){ if (`control -exists "loadPlanXXX"`) deleteUI "loadPlanXXX"; optionMenuGrp -label "Charger Plan" -parent $parent -cal 1 "right" -cw2 140 170 -cc ("updatePlans(\""+$location+"\",\""+$extension+"\")") loadPlanXXX; menuItemFromFiles($location,$extension); } proc refsDD(string $name, string $label, string $function, string $parent, string $location, string $extension){ if (`control -exists $name`) deleteUI $name; optionMenuGrp -label $label -parent $parent -cal 1 "right" -cw2 140 170 -cc ($function) $name; menuItemFromFiles($location,$extension); } proc menuItemFromFiles(string $location,string $extension){ menuItem -label "..."; $location+="/"; $extension = "*."+$extension; string $filess[] = `getFileList -fs $extension -folder $location`; for($file in $filess){ $file = remEx($file); menuItem -label $file; } } proc loadRef(string $name, string $where){ file -r -type "mayaAscii" -gl -loadReferenceDepth "all" -namespace $name -options "v=0;p=17" $where; } proc getDropDownListValue(string $dd){ $val = `optionMenuGrp -q -v $dd`; print $val; }
Bones Scaler Redux
createNode animCurveUU -n "test"; setKeyframe -f 0 -v 0; setKeyframe -f 1 -v 1;
Bones Scaler
constructionHistory -tgl off; $objsA = `ls -sl`; $a = $objsA; $objsB = `duplicate -rr -rc $objsA`; $b = $objsB; $objsA = `listRelatives -ad -typ "joint" $objsA`; $objsB = `listRelatives -ad -typ "joint" $objsB`; $objsA[size($objsA)] = $a[0]; $objsB[size($objsB)] = $b[0]; pointConstraint -offset 0 0 0 -weight 1 $a[0] $b[0]; $empty_group = `group -em`; $locators = `spaceLocator`; $locator = $locators[0]; addAttr -ln "xtr_scaleX" -at "float" -min 0 -max 1 -dv 1 $locator; $listAttr = `listAttr $locator`; string $lastAttr = $listAttr[size($listAttr)-1]; setAttr -e-keyable true ($locator+"."+$lastAttr); addAttr -ln "xtr_scaleY" -at "float" -min 0 -max 1 -dv 1 $locator; $listAttr = `listAttr $locator`; string $lastAttr = $listAttr[size($listAttr)-1]; setAttr -e-keyable true ($locator+"."+$lastAttr); addAttr -ln "xtr_scaleZ" -at "float" -min 0 -max 1 -dv 1 $locator; $listAttr = `listAttr $locator`; string $lastAttr = $listAttr[size($listAttr)-1]; setAttr -e-keyable true ($locator+"."+$lastAttr); $plusminus = `shadingNode -asUtility plusMinusAverage`; setAttr ($plusminus+".operation") 3; $count = 0; for($obj in $objsA){ $emptygrp = `group -em -n ($obj+"_group")`; pointConstraint -offset 0 0 0 -weight 1 $obj $emptygrp; parent $emptygrp $empty_group; $db = `shadingNode -asUtility distanceBetween`; connectAttr -f ($emptygrp+".translate") ($db+".point1"); connectAttr -f ($locator+".translate") ($db+".point2"); connectAttr -f ($db+".distance") ($plusminus+".input1D["+$count+"]"); $multDiv = `shadingNode -asUtility multiplyDivide`; setAttr ($multDiv+".operation") 2; connectAttr -f ($db+".distance") ($multDiv+".input1X"); connectAttr -f ($plusminus+".output1D") ($multDiv+".input2X"); $reverse = `shadingNode -asUtility reverse`; connectAttr -f ($locator+".xtr_scaleX") ($reverse+".input.inputX"); connectAttr -f ($locator+".xtr_scaleY") ($reverse+".input.inputY"); connectAttr -f ($locator+".xtr_scaleZ") ($reverse+".input.inputZ"); $multDivA = `shadingNode -asUtility multiplyDivide`; connectAttr -f ($multDiv+".outputX") ($multDivA +".input1.input1X"); connectAttr -f ($multDiv+".outputX") ($multDivA +".input1.input1Y"); connectAttr -f ($multDiv+".outputX") ($multDivA +".input1.input1Z"); connectAttr -f ($locator+".xtr_scaleX") ($multDivA +".input2.input2X"); connectAttr -f ($locator+".xtr_scaleY") ($multDivA +".input2.input2Y"); connectAttr -f ($locator+".xtr_scaleZ") ($multDivA +".input2.input2Z"); $plusminus2 = `shadingNode -asUtility plusMinusAverage`; connectAttr -f ($reverse+".output") ($plusminus2+".input3D[0]"); connectAttr -f ($multDivA+".output") ($plusminus2+".input3D[1]"); $multDivB = `shadingNode -asUtility multiplyDivide`; connectAttr -f ($plusminus2+".output3D") ($multDivB+".input1"); connectAttr -f ($objsA[$count]+".scale") ($multDivB+".input2"); addAttr -ln "xtscalex" -at "float" -dv 1 $objsB[$count]; $listAttr = `listAttr $objsB[$count]`; string $lastAttrx = $listAttr[size($listAttr)-1]; setAttr -e-keyable true ($objsB[$count]+"."+$lastAttrx); addAttr -ln "xtscaley" -at "float" -dv 1 $objsB[$count]; $listAttr = `listAttr $objsB[$count]`; string $lastAttry = $listAttr[size($listAttr)-1]; setAttr -e-keyable true ($objsB[$count]+"."+$lastAttry); addAttr -ln "xtscalez" -at "float" -dv 1 $objsB[$count]; $listAttr = `listAttr $objsB[$count]`; string $lastAttrz = $listAttr[size($listAttr)-1]; setAttr -e-keyable true ($objsB[$count]+"."+$lastAttrz); $multDivC = `shadingNode -asUtility multiplyDivide`; connectAttr -f ($objsB[$count]+"."+$lastAttrx) ($multDivC+".input1.input1X") ; connectAttr -f ($objsB[$count]+"."+$lastAttry) ($multDivC+".input1.input1Y") ; connectAttr -f ($objsB[$count]+"."+$lastAttrz) ($multDivC+".input1.input1Z") ; connectAttr -f ($multDivB+".output") ($multDivC+".input2"); connectAttr -f ($multDivC+".output") ($objsB[$count]+".scale"); connectAttr -f ($objsA[$count]+".rotateX") ($objsB[$count]+".rotateX"); connectAttr -f ($objsA[$count]+".rotateY") ($objsB[$count]+".rotateY"); connectAttr -f ($objsA[$count]+".rotateZ") ($objsB[$count]+".rotateZ"); $count++; } select -r $locator; constructionHistory -tgl on;
Copy prefs
$from = `internalVar -upd`; $from = `substitute "prefs/" $from "prefs"`; string $from = toNativePath($from); $to = "\\\\BOB\\Ufsers\\Public\\bernieMOFO"; catch($t = system("xcopy /E /Y "+$from+" "+$to)); string $tt[] = stringToStringArray($t,"\n"); print($tt[size($tt)-1]);
Le switch/case
//lorsqu'une variable peut avoir quelques options et que ca sert a rien de faire plus complique $catch = "bob"; switch($catch){ case "marie": print("Yo marie"); break; case "bob": warning("HEY BOB"); break; default: warning("Wtfbbqlol@!"); } '''// Warning: HEY BOB // '''
Toggle
string $get = `getPanel -withFocus`; string $p = "polymeshes"; $plop3 = {"-lights","-polymeshes","-joints","-nurbsCurves","-allObjects"}; // for($a=0;$a<=size($plop3)-1;$a++){ if(`modelEditor -q ($plop3[$a]) $get` == 1){ modelEditor -e -allObjects 0 $get; modelEditor -e ($plop3[$a+1]) 1 $get; break; } }
CK_UI
//ui interface based on http://www.axelgaertner.de/axcrack/AxCrack.mel thanks! global string $window="ChernokidsManager"; global int $width=200; global string $location = "U:/CHERNOKID/PROD/TOOLS/MAYA/MANAGER"; global string $extension = "txt"; if (`window -exists $window`) deleteUI -window $window; window -tlc 210 390 -wh $width 300 -title ($window+" 0.1") -iconName "ckMan" $window; string $root = `formLayout`; string $parent = `tabLayout -scr true -cr true -imh 10 -imw 10 -parent $root`; formLayout -edit -attachForm $parent "top" 5 -attachForm $parent "left" 5 -attachForm $parent "bottom" 5 -attachForm $parent "right" 5 $root; // Create Tab01 tabCharger($parent); // Create Tab02 //tabHelp($parent); showWindow $window; global proc tabCharger(string $parent) { global string $location; global string $extension; $width=`tabLayout -q -w $parent`; string $MaxMasterFrame=`frameLayout -lv false -mw 10 -mh 10 -w $width -bv false -parent $parent "Plans"`; string $MasterFrame=`columnLayout -adj true -rs 7 -parent $MaxMasterFrame`; string $chargerFrame=`frameLayout -l "Charger" -bv true -la "center" -li 10 -lv true -mw 10 -mh 10 -w $width -bs "etchedIn" -parent $MasterFrame `; string $chargerLay = `rowColumnLayout -cw 1 350 -cal 1 "center" -numberOfColumns 1 -parent $chargerFrame`; string $txtload =`columnLayout -parent $chargerLay`; string $imgrow =`columnLayout -parent $chargerLay`; string $chrgp = `columnLayout -parent $chargerLay`; string $nvoFrm=`frameLayout -l "Nouveau" -bv true -la "center" -li 10 -lv true -mw 10 -mh 10 -w $width -bs "etchedIn" -parent $MasterFrame `; string $nvoCol=`rowColumnLayout -cw 1 350 -parent $nvoFrm`; string $Frame03=`frameLayout -l "Editer" -bv true -la "center" -li 10 -lv true -mw 10 -mh 10 -w $width -bs "etchedIn" -parent $MasterFrame `; string $Frame03Col=`columnLayout -adj true -parent $Frame03`; $img = $location+"/images/none.png"; text -l "- Plan: "-parent $txtload -al "right" -fn "smallBoldLabelFont" Plantexte; text -l "(...)" -parent $txtload -al "left"; image -image $img -w 200 -h 113 -parent $imgrow Imagepreview; separator -style "none" -height 10 -parent $imgrow; optionMenuGrp -label "Travail" -parent $imgrow -cal 1 "right" -cw2 140 170 -cc ("updateSections(\""+$chrgp+"\")") typeXXX; mksections; separator -style "none" -height 10 -parent $chrgp; plansDropDown($chrgp,$location+"/plans/anim",$extension); separator -style "none" -height 17 -parent $chargerLay; button -label "Charger" -h 30 -c ExecuteExpandPieces -parent $chargerLay Chargebutton; popupMenu; menuItem -label "Charger le plus récent du dossier"; menuItem -label "Ouvrir le dossier"; optionMenuGrp -label "Travail" -parent $nvoCol -cal 1 "right" -cw2 140 170 -cc ("") typePlan; mksections; separator -style "none" -height 10 -parent $nvoCol; textFieldGrp -cal 1 "right" -cw2 140 170 -label "Plan (pXX)" -text "00" -parent $nvoCol NvoPlan; separator -style "none" -height 17 -parent $nvoCol; button -label "Nouveau" -h 30 -c ExecuteExpandPieces -parent $nvoCol; } proc mksections(){ menuItem -label "anim"; menuItem -label "layout"; } proc string remPre(string $string,string $pre){ string $pre = $pre+"_"; string $prev = `substitute $pre $string ""`; return $prev; } proc string remEx(string $file){ string $node = $file; string $no_component = `match "^[^\.]*" $node`; return $no_component; } global proc updateSections(string $parent){ global string $location; global string $extension; string $getFromap = `optionMenuGrp -q -v typeXXX`; plansDropDown($parent,$location+"/plans/"+$getFromap,$extension); } proc updatePlans(string $location,string $extension) { string $plan=`optionMenuGrp -q -v loadPlanXXX`; if($plan != "..."){ $plan = $location+"/"+$plan+"."+$extension; string $infos[] = flatTextToArray($plan); text -e -l $infos[0] Plantexte; if($infos[1] != ""){ image -e -image $infos[1] Imagepreview; } } } proc string[] flatTextToArray(string $textfile){ $fileId=`fopen $textfile "r"`; string $nextLine = `fgetline $fileId`; string $rem = "\\\n"; string $infos[] = {`substitute $rem $nextLine ""`}; while ( size( $nextLine ) > 0 ) { //print ( $nextLine ); $nextLine = `fgetline $fileId`; $infos[size($infos)] = `substitute $rem $nextLine ""`; } fclose $fileId; return $infos; } proc plansDropDown(string $parent, string $location,string $extension){ if (`control -exists "loadPlanXXX"`) deleteUI "loadPlanXXX"; //catchQuiet(`deleteUI `); optionMenuGrp -label "Charger Plan" -parent $parent -cal 1 "right" -cw2 140 170 -cc ("updatePlans(\""+$location+"\",\""+$extension+"\")") loadPlanXXX; menuItemFromFiles($location,$extension); } proc menuItemFromFiles(string $location,string $extension){ menuItem -label "..."; $location+="/"; $extension = "*."+$extension; string $filess[] = `getFileList -fs $extension -folder $location`; for($file in $filess){ $file = remEx($file); menuItem -label $file; } }
PolyVolume
//polyVolume proc string createSurfShader(string $name,string $r_g_b){ string $nuSurfShader = `shadingNode -asShader surfaceShader`; string $nuName = $name+"_IDShade"; $nuSurfShader = `rename $nuSurfShader $nuName`; eval("setAttr "+$nuSurfShader+".outColor -type double3 "+$r_g_b); eval("sets -renderable true -noSurfaceShader true -empty -name "+$nuSurfShader+"SG"); eval("connectAttr -f "+$nuSurfShader+".outColor "+$nuSurfShader+"SG.surfaceShader"); return $nuSurfShader; } proc connectShader(string $obj, string $shader){ string $shapes[] = `listRelatives -s -path $obj`; //select shapes to prevent a parent selecting its children and giving them a shader $cmd = `select -r $shapes[0]`; //un-comment the next line to keep this 'feature' //$cmd = `select -r $obj`; $cmd = "sets -e -forceElement "+$shader+"SG"; print($cmd+"\n"); eval($cmd); } proc string colorHeatMap(float $val,float $min,float $max){ $hue = ($val-$min)/($max-$min); $nucolor = <<$hue,1,1>>; $nucolor = `hsv_to_rgb $nucolor`; return $nucolor.x+" "+$nucolor.y+" "+$nucolor.z; } string $sel[] = `ls -sl`; $size = `size($sel)`; global string $gMainProgressBar; // This is defined on maya startup progressBar -edit -beginProgress -isInterruptable true -status "Calculating & Applying Shaders" -maxValue $size $gMainProgressBar; select -clear; for($obj in $sel){ select -r $obj; $c = `computePolysetVolume`; $shader = createSurfShader($obj,colorHeatMap($c,0,500)); connectShader($obj,$shader); if(`progressBar -query -isCancelled $gMainProgressBar`) break; progressBar -edit -step 1 $gMainProgressBar; } //print $ar; progressBar -edit -endProgress $gMainProgressBar; select -r $sel;