Maya

【maya:python】最初に選択したメッシュにアサインされているマテリアルを転送

shamimatsu

maya2022を使用
マテリアルをアサインする時ハイパーシェードを開いてアサインするという流れが面倒だったため、もっと気軽にアサインしたいと思いスクリプトを作成しました。

三味松
三味松
思っていたより便利でよく使っています

コードはpython3のため過去バージョンのmayaでは動作しない可能性があります

コード

1# -*- coding: utf-8 -*-
2import maya.cmds as cmds
3
4sl_nodes = cmds.ls(sl=True)
5
6#最初に選択したメッシュとそれ以降を分ける
7sl_first = sl_nodes[0]
8sl_second = sl_nodes[1:]
9
10#最初に選択したメッシュのシェーディングエンジン名を取得
11cmds.select(sl_first)
12cmds.hyperShade(smn=1)
13mat_name = cmds.ls(sl=True)
14SG_name = cmds.ls(cmds.listConnections(mat_name),type='shadingEngine')
15
16#2番目以降に選択したメッシュにマテリアルアサイン
17for i in sl_second:
18    cmds.select(i)
19    cmds.sets(forceElement=SG_name[0], e=1)

注意点

1メッシュに2マテリアルアサインされていた場合は、おそらく最初にアサインした方が優先されます。エラーにはなりません。

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