2011年11月21日月曜日

[MEL]テクスチャファイルのパスを変更する

他人から受け取ったデータなどで、テクスチャのパスが通らずに
正しく表示出来ない時、BonusToolsの”Change Texture Paths”を
使う事が多いが、カレントプロジェクトをセットしたりといろいろ面倒なので、
もっとシンプルで乱暴なMELを作ってみた。
Maya2011から追加されたfileDialog2コマンドを使用しているので、
2010以前は非対応。そこだけ旧fileDialogコマンドに変えれば動くとは思う・・・。

【使い方】
1.HyperShade等で、テクスチャを変更したいFileノードを選択(複数可)
2.MELを実行(スクリプトエディタで"ReplaceTexPath();")
3.フォルダ選択ダイヤログが表示されるので、テクスチャのあるフォルダを選択し”Accept”
4.選んだフォルダにテクスチャがあれば差し替え、無ければスルーされる




// 【ReplaceTexPath.mel】
global proc ReplaceTexPath()
{
    string $NewPath[] = `fileDialog2 -fileMode 3 -okCaption "Accept" -dialogStyle 2`;
    string $FileLs[] =`ls -sl -type "file"`;
    for ($FileNd in $FileLs)
    {
         $TexPath =`getAttr ($FileNd+".fileTextureName")`;
         $Texname =`basename $TexPath ""`;
         $TexTest =`filetest -f ($NewPath[0]+"/"+$Texname)`;
         if ($TexTest == 1)
         {
              setAttr -type "string" ($FileNd+".fileTextureName") ($NewPath[0]+"/"+$Texname);
              print ($NewPath[0]+"/"+$Texname+"に差し替えました\n");
         } else {
              print ($NewPath[0]+"/"+$Texname+"が見つかりせんでした\n");
         }
    }
}