Maya

【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マテリアルアサインされていた場合は、おそらく最初にアサインした方が優先されます。エラーにはなりません。

ABOUT ME
shamimatsu
shamimatsu
3DCGデザイナー
ながらくゲーム業界で2D、3DCGデザイナーとして働いてきましたが、新しい業界に挑戦中です。 ブログのデザインをリニューアル中のため、見づらい箇所もあるかもしれませんが少しづつ修正していきます。
記事URLをコピーしました