久しぶりにMayaを使っているので、スクリプトでも書いてみました。
MEL から Python へ
かなり昔 Maya のスクリプトを書いてた頃は MEL しかなかったけど、今は Python で書けるようになっててうれしい。 Python は昔 flask でweb 作ったとき、コードが見やすい印象があり割と気に入ってる。なので今後はMELじゃなくて Python で書いていこうと思ったら、 PyMel というのもあるらしい。
Python
maya.cmds
hello.pyfrom maya import cmds
def printHello(*args):
print "Hello! Maya & Python!"
cmds.window(title='Hello Button', widthHeight=(300,100))
cmds.columnLayout(adjustableColumn=True)
cmds.button(label='Hello', command=printHello);
cmds.setParent('..')
cmds.showWindow()
maya.mel
Pythonの中でMELコマンドを実行するモジュール。
eval と evalDeferred の各 Maya コマンドは Python ではサポートされていないらしいので、そういう時に使うのかな。
from maya import mel
maya_location = mel.eval("getenv MAYA_LOCATION")
print(maya_location)
maya.utils
詳しくは調べてないけど、スレッド関連。
必要になったら調べる。
PyMel
オープンソースの Python ライブラリで、修正 BSD ライセンス。Autodeskは直接のサポートは行っていないけど、Maya と一緒にインストールされているらしい。
PyMELのほうがオブジェクト指向を生かしたPythonらしいスクリプトが作成できるらしい。
pymel.core
Python での maya.cmds をラップしたもの。
上の hello,py をpymel で書き直したらこう。ほぼかわらない。
hello.pyfrom pymel import core
def printHello(*args):
print "Hello! Maya & Python!"
core.windows.window(title='Hello Button', widthHeight=(300,100))
core.windows.columnLayout(adjustableColumn=True)
core.windows.button(label='Hello', command=printHello);
core.windows.setParent('..')
core.windows.showWindow()
VSCode と繋ぐ