【MayaTips】複数オブジェクトのUVセットを別の既存UVセットにコピー

Maya標準機能で
・複数オブジェクトのUVセットを、新規のUVセットにコピー(複製)することはできます。
・単一オブジェクトであれば、UVセットの内容を既存のUVセットにコピーすることもできます。
ただ「複数オブジェクト」のUVセットを一度に「既存のUVセット」にコピーすることは困難です。
少しスクリプトを書けばできるので紹介します。
複数オブジェクトのUVセットを既存のUVセットにコピーするスクリプト
下記のコードのUVセット名を書き換えて、オブジェクトを選択し実行するだけです。
{
string $selects[] = `ls -sl -tr`;
for($sel in $selects){
polyCopyUV -uvSetNameInput "uvSet" -uvSetName "map1" $sel;
}
}
このままだと、
選択したオブジェクトの「uvSet」という名前のUVセットを「map1」という名前のUVセットにコピーするコードなので、
UVセット名を別の名前にしたい場合はここを書き換えてください。
※オブジェクトに書いたUVセット名がないとそこでエラーになりスクリプトが止まります。
実行方法
1: スクリプトエディタを起動
2: MELタブに切り替え
3: 上記のコードをコピー&ペースト
4: UVセット名を書き換え
5: 「Ctrl + Enter」または「テンキーEnter」で実行

ざっくりコードの内容
polyCopyUV というコマンドは、UVセットをコピーすることができるコマンドです。

-uvSetNameInput の後にコピー元になるUVセット名を、
-uvSetName の後にコピー先になるUVセット名を、
最後に適用したいオブジェクト名を書くだけ。
これを実行すると、pCube1というオブジェクトにあるUVセット、uvSetがmap1にコピーされます。
UVセット名はその都度ソースコードを書き換えるので固定でいいとして、
pCube1の部分を選択したオブジェクト、しかも複数に対応できるようにしたのが、今回紹介したものです。
ls -sl で選択したオブジェクトを取得できるので、それを$selectsの中に代入。

(-trをつけておくとトランスフォーム以外は選択されていても無視されます。)
$selectsの中には複数のオブジェクトが入っているので、$selの中に一つずつ取り出して、個数分polyCopyUVを実行。

ざっくりこんな感じです。
スポンサーリンク