[mel]自动更新资产

xiaoxiao2021-02-28  20

今天花点时间给公司写了个自动更新角色rig的工具:

global string $refNodesNeedUpdate = ""; global string $refNodesOld = ""; global proc returnrefNodesNeedUpdate(){ string $allReferenceNodes[] = `file -q -r`; string $selectedRefNodes[];clear $selectedRefNodes; for($i=0,$j=0;$i<size($allReferenceNodes);$i++){ if(`referenceQuery -il $allReferenceNodes[$i]`){ string $buffer[]; clear $buffer; tokenize $allReferenceNodes[$i] "/" $buffer; if(($buffer[5] == "chr")&&($buffer[7] == "rig")){ $selectedRefNodes[$j] = $allReferenceNodes[$i]; } $j=$j+1; } } //print $selectedRefNodes; for($eachNode in $selectedRefNodes){ string $filebufferString[];clear $filebufferString; string $refbufferString[];clear $refbufferString; string $verbufferString[];clear $verbufferString; tokenize $eachNode "/" $filebufferString; int $sizeOfnode = `size($filebufferString)`; tokenize $filebufferString[$sizeOfnode-1] "_" $verbufferString; int $sizeOfVer = `size $verbufferString`; int $currentVer = stringRemovePrefix($verbufferString[$sizeOfVer-1], "v" ); string $queryFolder = $filebufferString[0] + "/" + $filebufferString[1] + "/" + $filebufferString[2] + "/" + $filebufferString[3] + "/" + $filebufferString[4] + "/" + $filebufferString[5] + "/" + $filebufferString[6] + "/" + $filebufferString[7]; string $fileList[] = `getFileList -folder $queryFolder `; int $newFileList[];clear $newFileList; int $k ; for($eachVer in $fileList) { if((size ($eachVer)) == 4){ int $newFileListtemp = stringRemovePrefix($eachVer, "v" ); $newFileList[$k] = $newFileListtemp; $k = $k+1;} } if(size ($newFileList)){ //print $newFileList; int $newArray[] = sort ($newFileList) ; int $sizeNewArray = size ($newArray); if($currentVer != $newArray[$sizeNewArray-1]) { global string $refNodesOld; string $tempString = $filebufferString[$sizeOfnode-1]; string $tempString02[];clear $tempString02; tokenize $tempString "." $tempString02; string $tempStringBuffer[];clear $tempStringBuffer; tokenize $tempString02[0] "_" $tempStringBuffer; for($i=1;$i<$currentVer+1;$i++){ string $tempString0 = $tempStringBuffer[0]+ "_"+$tempStringBuffer[1]+ "_"+$tempStringBuffer[2]+ "_"+$tempStringBuffer[3]+ "_"+"v00"+$i+"RN"; //print (1+1); if(`objExists $tempString0`){ $refNodesOld = $refNodesOld + " " + $tempString0; //print $refNodesOld; //print (1+1); break; } } string $newRigFolder = $queryFolder +"/"+ "v00" + $newArray[$sizeNewArray-1]+"/"+"rig_mb"; string $newRig[] = `getFileList -folder $newRigFolder `; global string $refNodesNeedUpdate; $refNodesNeedUpdate = $refNodesNeedUpdate +" "+ $newRigFolder +"/"+ $newRig[0]; } } } } /* $refNodesNeedUpdate = ""; $refNodesOld = ""; */ //returnrefNodesNeedUpdate; /* print ($refNodesNeedUpdate+"\n"); print $refNodesOld */ global proc string[] relistRefNodesOld(){ global string $refNodesOld; string $tempBuffer[];clear $tempBuffer; tokenize $refNodesOld " " $tempBuffer; for($i=0;$i<size($tempBuffer);$i++) { int $k=1; for($j=$i+1;$j<size($tempBuffer);$j++) { if($tempBuffer[$i] == $tempBuffer[$j]) { $tempBuffer[$j] = $tempBuffer[$j]+$k; $k = $k+1; } } } return $tempBuffer; //print $tempBuffer; } global proc DH_openFile(){ global string $refNodesNeedUpdate; global string $refNodesOld; returnrefNodesNeedUpdate; string $allNodesNeedUpdateArry[];clear $allNodesNeedUpdateArry; tokenize $refNodesNeedUpdate " " $allNodesNeedUpdateArry; string $allNodesOldName[];clear $allNodesOldName; tokenize $refNodesOld " " $allNodesOldName; if(size($allNodesNeedUpdateArry)>=2){ string $charName = ""; int $i; for($eachChar in $allNodesNeedUpdateArry){ string $fullName[];clear $fullName; string $charLongName[];clear $charLongName; tokenize $eachChar "/" $fullName; int $fullNameSize = size($fullName); tokenize $fullName[$fullNameSize-1] "_" $charLongName; $charName = $charName + "\n" + $charLongName[2]; $i=$i+1; } //print $charName; string $ifUpdate = `confirmDialog -title "提示" -m ("发现以下角色需要更新绑定,是否更新?\n "+$charName) -b "Yes" -b "No" -defaultButton "Yes" `; if($ifUpdate == "Yes"){ if(size($allNodesNeedUpdateArry) == size($allNodesOldName)){ string $relistedOldArry[] = `relistRefNodesOld`; for($i=0;$i<size($relistedOldArry);$i++){ file -loadReference $relistedOldArry[$i] -type "mayaBinary" -options "v=0;p=17;f=0" $allNodesNeedUpdateArry[$i]; } } } } else { print "当前场景暂无需要更新的rig."; } $refNodesNeedUpdate = ""; $refNodesOld = ""; } DH_openFile;
转载请注明原文地址: https://www.6miu.com/read-2630824.html

最新回复(0)