Maya Script API2.0 メッシュノードの取得

MayaAPI2.0で選択しているメッシュノードを取得する方法です。

import maya.api.OpenMaya as om2

def get_mesh_node():
	selectionLs = om2.MGlobal.getActiveSelectionList()
	selObj = []
	selDnode = []

	for x in range(selectionLs.length()):
		mDag = selectionLs.getDagPath(x)
		if mDag.hasFn(om2.MFn.kMesh):		
			selObj.append(om2.MFnMesh(mDag))
	for x in selObj:
		print x.name()
get_mesh_node()

1.0に比べるとはるかに簡単なコードを書くことができます。
ただ、英語でも情報が少ないので調べるのが難しい、、

 

頂点のインデックスを取得するには、
MFnMesh関数にセットしたものに対して、「getVertices」メソッドを実行すると、
メッシュの各頂点の情報が取得できるようです。
2つのタプルで、一つ目がその頂点で構成されるポリゴンが何角形であるか、もう一つが
頂点のフェースインデックス。

 
うーん、フェースインデックスとは、、
頂点インデックスとして使う場合は、set()関数でまとめて使えば良い、ということだろうか。
頂点インデックスをMObjectとして取得できるもっと良いメソッドが存在するのだろうか?
それすらも分からない。

 

それとシェイプノードからスキンクラスターにたどり着く方法もまだ分からない。

 

あれ、記事を書きながらMayaで試していたら、
「getActiveSelectionList」で取得したものはコンポーネントであれば、コンポーネントとして取得している。
あら、凄い。これは便利だ。

コメントする

post date*

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

トラックバックする

トラックバック用URL:

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

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

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