最後の旅を始めよう

-黒の英雄譚・零-

MAYA Python どっ基礎講座‗03 『MELのログをPythonに翻訳』

2023年01月03日 | MAYA_Pyhon...
前項
処理の順番が上から行われるという事を解説しました。



ここまで解れば、
自分専用のツールを作りたく成って来るのではないでしょうか?

でも、どうやったら作れるのか見当も付かない。。。

そんな初心者にオススメの方法が
『MELのログをPythonに翻訳』です。




MELログを取得

それでは、簡単な処理のログをとってみましょう。
試しに、ロケータを二つ作成してそれを親子付けしてみます。



するとスクリプトエディタのログ画面に、以下の様なログが生成されます。

CreateLocator;
spaceLocator -p 0 0 0;
// 結果: locator1
CreateLocator;
spaceLocator -p 0 0 0;
// 結果: locator2
parent locator2 locator1 ;
// 結果: locator2

この中からコマンドだけを抽出したいと思います。
試しにMELタブにコピーするとシンタックスハイライトで色分けされます。
ここで水色にハイライトされたものがコマンドです。




CreateLocator」は、ロケータを作成するコマンドです。
spaceLocator」は、ロケータの場所を決めるコマンドですが
実は、これだけでもロケータの作成が出来てしまいます。
その為、今回は「spaceLocator」コマンドのみを使います。


という訳で、以下の三行が必要なコマンドとなります。

spaceLocator -p 0 0 0;
spaceLocator -p 0 0 0;
parent locator2 locator1 ;

これをPythonに翻訳してすれば良い訳ですね。


やり方は、カンタンです。
以前、01_二行で解るMAYA Pythonの構造でやった構造、
要はアレに書き換えれば良い訳です。

試しに「spaceLocator」で行うとこんな感じです。

spaceLocator -p 0 0 0;
   ↓
cmds.spaceLocator( p = [0, 0, 0] )


・コマンドの頭にモジュール名「cmds.」を追加する
・フラグは()で囲いまとめる
・MELでフラグ名を表す「-」は要らないので削除
・フラグの引数は「=」で繋ぐ
・引数が複数存在する場合は[]等で囲い、間を「, 」で区切る(リスト型にする)
・MELのコマンドの終了を表す「;」は要らないので削除
・文字列は「’」「”」囲む(サンプルコードにはありませんが…)



これを全てに行うとこうなります。

cmds.spaceLocator( p = [0, 0, 0] )
cmds.spaceLocator( p = [0, 0, 0] )
cmds.parent( "locator2", "locator1" )

このスクリプトを実行すると
ロケータを二つ作成してそれを親子付けするという
一連の作業を再現してくれます。

この様に大抵のMayaの操作であれば、
MELのログを翻訳し並べる事でPythonスクリプトに置き換えツールを作る事が出来ます。



ちなみに、
作成したツールをUIのボタンから起動出来る様にする為には、関数を使用します。
関数については、『09_関数』にて詳しく解説しますが、
とりあえず以下の様にする事でボタンからの呼び出しが出来る様になります。

#---------------------------------------------------------------------------------------------------
import maya.cmds as cmds

#UI作成
cmds.window( title ="MyUI", width = 200 )
cmds.columnLayout( adjustableColumn =True )
cmds.button( label ="ロケータを作成して親子付け", command ="fCreateLocatorParent()" )
cmds.showWindow()

#ロケータ作成関数
def fCreateLocatorParent():
    cmds.spaceLocator( p = [0, 0, 0] )
    cmds.spaceLocator( p = [0, 0, 0] )
    cmds.parent( "locator2", "locator1" )
#---------------------------------------------------------------------------------------------------



次項 → 04_コマンドリファレンスの使い方
前項 → 02_処理の順番
一覧へ

関連-------------------------------------
Python_MAYA機能メモ
Python_MAYA_ちょっとしたツール集
Python_エラーメモ
編集
コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« MAYA Python どっ基礎講座‗02... | トップ | MAYA Python どっ基礎講座‗05... »
最新の画像もっと見る

コメントを投稿

MAYA_Pyhon...」カテゴリの最新記事