【Maya:Python】マテリアル全選択リストから指定名を除外する
shamimatsu
三味松ブログ
maya2022を使用
マテリアルをアサインする時ハイパーシェードを開いてアサインするという流れが面倒だったため、もっと気軽にアサインしたいと思いスクリプトを作成しました。
コードはpython3のため過去バージョンのmayaでは動作しない可能性があります
# -*- coding: utf-8 -*-
import maya.cmds as cmds
sl_nodes = cmds.ls(sl=True)
#最初に選択したメッシュとそれ以降を分ける
sl_first = sl_nodes[0]
sl_second = sl_nodes[1:]
#最初に選択したメッシュのシェーディングエンジン名を取得
cmds.select(sl_first)
cmds.hyperShade(smn=1)
mat_name = cmds.ls(sl=True)
SG_name = cmds.ls(cmds.listConnections(mat_name),type='shadingEngine')
#2番目以降に選択したメッシュにマテリアルアサイン
for i in sl_second:
cmds.select(i)
cmds.sets(forceElement=SG_name[0], e=1)
1メッシュに2マテリアルアサインされていた場合は、おそらく最初にアサインした方が優先されます。エラーにはなりません。