これはなに?
DCCツールとかその辺りでは拡張用の言語としてPythonが採用されていることが多いです。
(タイトルに挙げた以外だと、Softimage、3dsMax、Cinema4D、LightWave、modo、3D-Coat、Motionbuilder、Metasequoia、Vueあたりも。Adobeは頑なにjsx)
これらのPython環境は、アプリケーション本体(GUI)を立ちあげなくても
対話モードで使えたりします。
タイトルに挙げた4つで確認してみました。
環境
- Microsoft Windows [Version 10.0.10240]
- ※Autodeskファミリーはいまのところwin10に正式対応してません
- ConEmu 150913 [64] >web
Maya
Mayaインストールフォルダのbin内のmayapy.exeを使います。
例:
C:\Program Files\Autodesk\Maya2016\bin\mayapy.exe
公式ドキュメント:
http://help.autodesk.com/view/MAYAUL/2016/JPN/?guid=GUID-83799297-C629-48A8-BCE4-061D3F275215
モジュール
Mayaの機能を使うためのモジュールは現在二種類あります。
- Maya Python (または単にcmdsとも)
- PyMEL
多くの場合、前者はimport maya.cmds as cmds
(とか~~as mc
)、
後者はimport pymel.core as pm
(とか~~as pmc
)として利用します。
後者は前者をオブジェクティブにラップしたものです(ざっくり
もともと外部で開発されていたものですが、Maya2011から標準搭載されるようになりました。
githubで公開されています。
https://github.com/LumaPictures/pymel
Maya Python
maya.cmdsは、読み込めはしますが、
import maya.cmds as mc
中を見てみても、使える感じじゃありません
>>> dir(mc)
['__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__']
initializeしてあげると、使えるようになります。
下記はドキュメントにあった例文(▼)
try:
import maya.standalone
maya.standalone.initialize()
except:
pass
PyMEL
PyMELも読み込めます。
読んだ途端にMaya起動時にスクリプトエディタに出るのと同様のログがプリントされます。
import pymel.core as pm
cmdsをinitializeしたときはメモリ109MBくらいでしたが、PyMELだと475MBくらい行きました。
GUI込みの、普通のMaya起動だと677MBくらい。
ちなみにPyMEL読み込む処理の中にinitializeも含まれてます。
古事記にもそう書かれている。
https://github.com/LumaPictures/pymel/blob/master/pymel/internal/startup.py
Houdini
Houdini インストールフォルダのhython.exeを使います。
例:
C:\Program Files\Side Effects Software\Houdini 15.0.244.16\bin\hython.exe
なんとなくsys.argv
>>> sys.argv
['C:\\PROGRA~1\\SIDEEF~1\\HOUDIN~1.16\\houdini\\python2.7libs\\houdiniInterpreter.py']
なるほどね。
モジュール
Houdiniの機能を使うためのモジュールは「hou」モジュールです。
hython.exeを起動した時点で読み込まれてます。
>>> dir()
['__builtins__', '__doc__', '__name__', 'hou']
公式ドキュメント:
http://www.sidefx.com/docs/houdini15.0/hom/commandline
※日本語版は、パブリックなものとしては12で止まっており、国内代理店と契約すれば最新版が見れるようです。
http://sidefx.jp/doc/hom/
なお、単純に「hython」で検索すると、Haskell実装Pythonというのも出てきますのでちょっと注意。
##numpy
hython環境では、デフォルトでnumpyが読み込めます。
ありがてえありがてえ(
blender
blender を、「--python-console」というオプションを付けて起動します。
例:
"C:\Program Files\Blender Foundation\Blender\blender.exe" --python-console
何よりも無言のblenderウィンドウがどぅーーんと立ち上がるのが印象深いです(立ち上がりますが、特に使わないウィンドウです)。
なんとなくsys.argv
>>> sys.argv
['blender-app.exe', '--python-console']
なるほどね。
モジュール
blenderの機能を使うためのモジュールは「bpy」モジュールです。
読み込みます。
import bpy
中身。ある程度まとめられてます。
>>> dir(bpy)
['__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', 'app', 'context', 'data', 'ops', 'path', 'props', 'types', 'utils']
…じっくり使ったわけではないのでこれで使える状態なのかとかよく分かりません(笑
(なんかblender(GUI)上のPython Consoleとは読まれてるクラスとかが違うような気も。)
公式ドキュメント:
http://wiki.blender.org/index.php/Doc:JA/2.6/Manual/Render/Command_Line
※日本語版は2.6。最新はこちら
http://www.blender.org/manual/advanced/command_line.html?highlight=python#python-options
「Render」カテゴリだったのが「advanced」に移動してます。
Python Console :
http://www.blender.org/manual/editors/python_console.html
Blender Python API :
http://www.blender.org/api/blender_python_api_2_76_2/
Scripting & Extending Blender » Introduction :
http://www.blender.org/manual/advanced/scripting/introduction.html
##numpy
Houdini同様、blenderもなにもしなくてもnumpy読み込めます。
終了
後ろに応答しないblenderウィンドウがいらっしゃる関係か、雑にウィンドウを閉じようとすると警告されます。
quit()
かexit()
でちゃんと終了させてあげましょう。
(…なんか最後に一瞬Errorが出て、not found云々っぽいですが、まあ…)
Nuke
Nuke に「-t」というオプションを付けて起動します。terminalのt。
例:
"C:\Program Files\Nuke9.0v8\Nuke9.0.exe" -t
…するとPythonインタープリタとして起動するっぽいですが、
無料体験版ではライセンス的に許可されていないようで、試せませんでした。
…。
コマンドラインからのレンダリングも制限されているので、そりゃそうかー。です。
ということで、苦し紛れに普通にNuke上で云々してみました。
※
また、-tの後ろにPythonスクリプトファイルを与えると、それを実行してくれるようです。
"C:\Program Files\Nuke9.0v8\Nuke9.0.exe" -t path\to\your\script.py
モジュール
Nukeの機能を使うためのモジュールは「nuke」モジュールです。
それにしても、単にdir()
した時点ですでにグローバルになんかいろいろ置かれてます。。。
公式ドキュメント:
https://www.thefoundry.co.uk/products/nuke/developers/90/pythondevguide/command_line.html
NUKE Python Developer's Guide v9.0v8 documentation :
http://docs.thefoundry.co.uk/nuke/90/pythondevguide/index.html
まとめ
Houdini、Nukeは、モジュールが最初から読み込まれている勢、
Maya、blenderは任意に読み込む勢、
でした。
また、
MayaとHoudiniはそのままPythonインタープリタが立ち上がるexeが用意されてます。
blenderとNukeはオプションつけることでインタープリタにもなるパターン。
sys.argvはHoudiniとblenderにはなんか入ってましたが、
言及してないMayaとNukeは['']
(空っぽ)でした。
Mayaは、開発周りのドキュメントも日本語化に熱心です。
ドキュメントとして優秀か、誤訳はないか、というのとはまた別枠ですが、ありがたいです。
他のPython動くツールも対話モードがあるかみてみたいですね。
おまけ
3dsMax
Maxにも Python API が標準で載るようになりましたが、上に書いたような対話モードではなく起動したMax上で使えます。
あとは3dsmaxcmd.exeですかね。でも対話モードないのかな?あるのかな?基本的にはバッチレンダリング用途の人です。すみませんよく分かりません(笑
Executing Python scripts from the command line:
http://docs.autodesk.com/3DSMAX/16/ENU/3ds-Max-Python-API-Documentation/files/GUID-379E0B39-7F56-4764-88B6-B26090948800.htm
ConEmu
ConEmu プロジェクト日本語トップページ - OSDN:
https://osdn.jp/projects/conemu/