Maya Script Pymel – 選択したトランスフォームからマテリアルとマテリアルがアサインされているメッシュ情報の抽出

タイトル長っ。
使う頻度はそれなりにあるにも関わらず、使わない時は使わないので、忘れてしまうのを書いておきます。

import pymel.core as pm

def get_set(shading_engine):
	return shading_engine.members()

def get_material(sel_transform):
	sel_shape = sel_transform.getShape()
	shading_engine = sel_shape.inputs(type=pm.nt.ShadingEngine)
	return shading_engine

sel = pm.ls(sl=1,type=pm.nt.Transform)
if sel:
	for s in sel:
		mat = get_material(s)
		print mat
		mem = get_set(mat[0])
		print mem

タイトルの通り、メッシュノードを持ったトランスフォームノードを選択した状態で、実行します。
雛形なので、エラー処理などはしておりません。
重要な手順は、トランスフォームノードからシェイプノードを取り出し、
シェイプノード.inputs()メソッドをタイプ指定「pm.nt.ShadingEngine」でシェーディンググループを取り出します。
取り出したシェーディングフループから単体を取り出し、シェーディンググループ.members()メソッドでフェース情報を取り出せます。
つくづくpymelはオブジェクトの操作が楽ちんです。

 

ところで、MODO10が発表されましたねぇ。
MARIとの連携のようなことも書いてありますが、どうなのでしょう?
MARIのように膨大なデータをMODOでも扱えるようになるのかなぁ。
バージョンアップといえば、SubstancePainterも2がリリースされるそうですねぇ。
なんだかんだと、使ってみると3D-coatが一番使いやすい3Dペイントソフトであることを痛感するのですが、これからは変わってくるのでしょうか。

コメントする

post date*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トラックバックする

トラックバック用URL:

アニメーションが親切に解説されております

レンダリング、ライティングの基本が分かります

図版が見やすい美術解剖書です