Maya

【Maya:Python】UVセットをコピー

シャドウマップ用にUVセットを用意しなければならない機会はとても多いと思います。
UVエディタで毎回map1からコピーが面倒だったため作成しました。

一つ目のUVセット名が map1
二つ目のUVセット名が uvSet
であることが前提となります。

  • UVセットが1つ(map1のみ)の場合はuvSetを作成します
  • UVセットが2つ(map1とuvSet)の場合はmap1をuvSetにコピーします
  • UVセットが3つ以上あった場合は警告が出て処理しません

コード

実行する前にUVを選択し忘れないようにしてください。
オブジェクトを選択しただけでUV選択はしていない状態で実行した場合
UVセットが1つの時ならコピーされましたが、
すでにuvSetがある場合だとエラーになってしまい原因はまだわかっていません。

import maya.cmds as cmds

def main():
    sl_point = cmds.ls(sl=True)
    uvSets = cmds.polyUVSet(sl_point[0], q=True, allUVSets=True)
    # 要素数3以上なら警告
    if len(uvSets) >= 3:
        cmds.warning( "uvSetが3つ以上あります" )
    # 要素数2以上ならコピー
    if len(uvSets) >= 2:
        cmds.polyCopyUV(sl_point[0], uvi='map1', uvs='uvSet', ch=1)
        cmds.select(cl=1)
    # 要素数1なら作成
    elif len(uvSets) == 1:
        cmds.polyCopyUV(sl_point[0], uvi='map1', uvs='uvSet', ch=1, createNewMap=1)
        cmds.select(cl=1)

if __name__ == '__main__':
    main()