MayaのPython API 2.0について解説してみました。
例として最近接頂点の取得の実装を行いつつ、API2.0の使い方を説明しています。
最近接頂点はMaya Pythonの標準モジュールのmaya.cmdsでは取得できません。
取得できないものが取得できるのがAPIの強みですね。
管理人がYouTubeで解説!
動画で使用したスライド
動画で使用したコマンド
from maya import cmds
from maya.api import OpenMaya as om2
# 入力頂点
in_pos = cmds.xform("in_locator", q=True, t=True)
# 選択リストを作ってターゲットメッシュを追加する
sl = om2.MSelectionList()
sl.add("body_smooth_skinShape")
# 選択リストの0番目の要素をMDagPath型で取得する
dagpath = sl.getDagPath(0)
# 取得したMDagPathをMFnMeshに入れる
mesh = om2.MFnMesh(dagpath)
# MFnMeshのコマンドが使えるようになったので最近接頂点取得コマンドを使ってみる。
poly_pt, poly_id = \
mesh.getClosestPoint(om2.MPoint(in_pos),om2.MSpace.kWorld)
# 指定したポリゴン内の頂点IDを取得する
poly_ids = mesh.getPolygonVertices(poly_id)
# 入力頂点から最も近い頂点IDの位置を取得する
closest_vtx_pos = None
temp_length = None
for i in range(len(poly_ids)):
temp_pos = mesh.getPoint(poly_ids[i], om2.MSpace.kWorld)
delta = (temp_pos - om2.MPoint(in_pos)).length()
if temp_length is None or delta < temp_length:
closest_vtx_pos = temp_pos
temp_length = delta
# 取得した最も近い頂点位置に"out_locator"をセットする
cmds.xform("out_locator", t=list(closest_vtx_pos)[:3])
Python API勉強におすすめ書籍!
少し古い書籍になりますが、Python APIにおける基本が全て書かれています。
というよりも本書をマスターできればMaya Pythonマスターです。ってくらいには初心者向けではありません。
コメント