ハローワールド、プログラマのマツノブです。
皆さんMayaのプラグインを作ることってよくあると思います。
言語は何で実装しますか? MEL? Python?
今回はMayaプラグインを作る上でMELとPythonの違いについて見ていきましょう。
え?C/C++で実装する?長くなるので別の機会にしましょう。
まず、最初にボタンを押すとHello Worldと表示されるウインドウを作るコードを見ていきましょう
MEL
1 2 3 4 |
window -title "Hello World"; columnLayout; button -label "Hello World" -command "print(\"Hello World\n\")"; showWindow; |
Python
1 2 3 4 5 |
import maya.cmds as mc mc.window(title='Hello World') mc.columnLayout() mc.button(label='Hello World', command='print("Hello World")') mc.showWindow() |
ウインドウを生成して、レイアウトを指定して、ボタンを配置して表示。
ほとんど変わりが無いように見えますね。
では、もっと短いコードではどうでしょう?
次のコードはシーンに配置されているすべてのオブジェクトを一覧表示するものです。
MEL
1 |
print(`ls`) |
Python
1 2 |
import maya.cmds as mc print('\n'.join(mc.ls())) |
Pythonに比べてMELのコードが実に簡潔なことがわかります。
先の2つのコードを見てみるとPythonのコードでは先頭に
1 |
import maya.cmds as mc |
というコードが有ることがわかります。
Mayaの標準スクリプト言語であるMELと違いPythonではMayaの機能を利用するためにモジュールのインポートが必要になります。
このため手順の少ない短いコードを書く場合に余計なコードが増えてしまいます。
では、MELのほうがPythonより優れているかといえばそうではありません。
PythonはMayaのスクリプト言語以外でもToolbagやMarvelous Designerといったツールのスクリプト言語に利用されていたりPython単独で利用されていたりと幅広い開発者がいるため資料が多く利用できるモジュールも多数公開されています。
最近良く利用されるデータフォーマットであるJSONもPythonだと簡単に利用できますがMELでは自分で構文解析を行う必要があります。
まとめると
MEL
- いいところ
- Mayaの機能を簡単に利用できる
- Mayaでの利用に限って言えばPythonより情報が多い
- いまいちなことろ
- Mayaが提供していない機能は自作する必要がある
- 言語に関する情報はPythonより少ない
Python
- いいところ
- 利用者が多いため情報が多い
- 文字列操作やリスト操作といったPythonの強力な機能が利用できる
- いまいちなところ
- MELと比較すると入門のハードルが高い
以上のことから初心者ならMELのほうがとっつきやすいが機能面ではPythonのほうが優れているのではないでしょうか
かく言う私はPython推しです。