本日は3Dモデリング枠です。
本ブログではBlenderを用いたPythonのコード実行については2023年に入り多々実行していました。
今回はMayaでPythonを実行していきます。
筆者はMayaに関しては前職時代に触っていたのですが、Blenderを習得してしまったためほとんど触らずにいました。
今回は久しぶりのMayaを触っている際に「あれ?MayaもPython動かせるはずだけど」ということを思ったので実際に触っていきます。
〇Mayaのスクリプティング
Blenderではスクリプティングウィンドウ(スクリプト実行)からPythonを入力、実行できます。
Mayaの場合Mel
およびPython
を実行することができます。
MelはUnixのシェルスクリプトに似ている言語です、こちらもいずれ触っていきたいと思います。
①上部ワールドメニューWindow
から一般エディタ→スクリプト エディタ
を選択します。
これによってスクリプトエディタが起動します。
②Pythonタブへと切り替えます。
③Pythonコードを入力します。
print("Hellow!")
④上部の実行ボタンを押します。
これによってスクリプトが実行され実行結果がコンソールに表示されます。
なおMayaの場合子のコンソールウィンドウのことをヒストリーペイン
と呼称します。
対して入力で使用するフィールドのことをインプットペイン
と呼称します。
〇ポリゴン数の表示
次に応用として現在選択されているオブジェクトのポリゴン数を出力します。
これを行うためにはMayaAPIを使用する必要があります。
Blenderの場合はimport bpyでbpyのライブラリを使用しますが、Mayaの場合はimport mayaを使用します。
コードは以下になります。
import maya.cmds as cmds def get_selected_object_poly_count(): # 選択されたオブジェクトのチェック selected_objects = cmds.ls(selection=True, dag=True, shapes=True) if not selected_objects: print("選択されたオブジェクトがありません。") return # ポリゴン数を合計する変数 total_poly_count = 0 for obj in selected_objects: # オブジェクトのシェイプノードを取得 shapes = cmds.listRelatives(obj, shapes=True, fullPath=True) or [obj] for shape in shapes: # シェイプノードのタイプがポリゴンメッシュであるか確認 if cmds.nodeType(shape) == "mesh": # ポリゴン数を取得して合計に加算 poly_count = cmds.polyEvaluate(shape, face=True) total_poly_count += poly_count print(f"選択されたオブジェクトの合計ポリゴン数: {total_poly_count}") # 関数呼び出し get_selected_object_poly_count()
考え方はBlenderの場合と同じでMayaのAPIで選択されているオブジェクトのチェックを行い、内部のデータにアクセス、ポリゴン数を抽出しています。
コードを実行することでポリゴン数がヒストリーペインに出力されます。
〇参考
Mayaでスクリプトウィンドウを初めて開いたため今回はこちらの記事にお世話になりました。
BlenderだけでなくMayaにも少しづつ慣れていきたいです。
本日は以上です。