これは Maya Advent Calendar 2019 の最終日25日目の記事です。
前日は cr_coyote さんの「ブレない伸びーるSplineIKリグを作ってみる」です。
当初スクリプトからマテリアルまわりの取得&操作を書こうと思っていましたが、
2016年のMayaのAdventCalendarで mono-g さんがすでに「Mayaのマテリアルのこねこね」を書かれていて、
自分の知ってる範囲内のマテリアルまわりの知識だとそんなに書くことなさそうだったので、
OpenMaya PythonAPI2.0 を使った基本的な処理の逆引きメモにしてみました。
OpenMaya自体の事は 一番下の参考サイトのところに書いている AREA JAPAN というサイト中で
Autodeskの築島さんが書かれた記事を読まれてるといいかもしれません。
20個くらい書きたいものがあったんですが、なかなか書く時間が取れなかったので
今回はとりあえずキリがいい10個書きました。
※書けなかったネタは今後また少しずつ書いていく予定です。
また急いで書いたので間違っている箇所があるかもしれません。
もし間違いやもっと良い書き方がありましたら教えて頂けると助かります。
ちなみに検証はMaya2017を使っていますので、
もしかしたら2019や最近出た2020で変わっている部分があったりする可能性はあります。
目次です。
一番使うんじゃないかと思われる、いわゆる ls(sl=True) コマンドに相当するものですね。
OpenMaya.MGlobal.getActiveSelectionList()
https://help.autodesk.com/view/MAYAUL/2017/JPN/?guid=__py_ref_class_open_maya_1_1_m_global_html
選択しているノードから特定のノードの一覧を取得する
ls(sl=True, type=xxx) コマンドに相当するものですが、API2.0 では1行では書けません…w
OpenMaya.MItSelectionList()
ノードタイプを調べる
nodeType() コマンドに相当するものです。
トランスフォームとメッシュを取得する
メッシュの方は listRelatives(transform, shape=True) コマンドに相当するものですかね。
OpenMaya.MDagPath
https://help.autodesk.com/view/MAYAUL/2017/JPN/?guid=__py_ref_class_open_maya_1_1_m_dag_path_html
ノードをリネームする
rename() コマンドに相当するものです。
OpenMaya.MDGModifier()
TRSの値を取得、変更する
xform() コマンドに相当するものですかね。
OpenMaya.MFnTransform
https://help.autodesk.com/view/MAYAUL/2017/JPN/?guid=__py_ref_class_open_maya_1_1_m_fn_transform_html
キーフレームを取得、変更する
keyframe() コマンドに相当するものですかね。
OpenMayaAnim.MFnAnimCurve
https://help.autodesk.com/view/MAYAUL/2017/JPN/?guid=__py_ref_class_open_maya_anim_1_1_m_fn_anim_curve_html
エクスプレッションを設定する
expression() コマンドに相当するものです。
コード内のコメントにも書いていますがAPI2.0にはまだMFnExpressionが移植されていないので1.0の方を使うしかなさそうです。
MFnExpression
https://help.autodesk.com/view/MAYAUL/2017/JPN/?guid=__cpp_ref_class_m_fn_expression_html
mel コマンドを実行する
mel.eval() コマンドに相当するものです。
OpenMaya.MDGModifier
https://help.autodesk.com/view/MAYAUL/2017/JPN/?guid=__py_ref_class_open_maya_1_1_m_d_g_modifier_html
頂点カラーを取得、変更する
polyColorPerVertex() コマンドや polyColorSet() コマンドに相当するものです。
OpenMaya.MFnMesh
https://help.autodesk.com/view/MAYAUL/2017/JPN/?guid=__py_ref_class_open_maya_1_1_m_fn_mesh_html
はい、ひとまず今回は以上となります。
だいぶ 某H さん が勢力を拡大されていて、Mayaさん の立場が…いやなんでもないですw
色々困る点はありますが、3D全般でいうとまだまだ現場ではメインのツールだと思うので頑張って頂きたいですね。
では、少し早いですが、良いお年を!
参考サイト
https://forums.cgsociety.org/t/setkeyframe-command-equivalent-in-openmaya/1754534/5
MAYA PYTHON API 2.0: IS IT READY YET?
https://matiascodesal.com/blog/maya-python-api-20-it-ready-yet/
How to find all upstream DG nodes with maya python api? - Stack Overflow
https://stackoverflow.com/questions/18738371/how-to-find-all-upstream-dg-nodes-with-maya-python-api
コメントをお書きください