Python のスクリプティングは、単純なコマンドの実行や、プラグインの開発などの Maya の多くのタスクに使用できます。さまざまなタスクを対象とするいくつかの異なる Maya 関連ライブラリが用意されています。次に、Maya に付属している Python ライブラリの概要を示します。
Autodesk Maya は、以前 MEL コマンドを使用していた場所ではすべて Python スタイルのスクリプティングをサポートしています。Python スクリプティングを Maya に実装することで、MEL により提供される一般的な Maya コマンドに同じようにアクセスできます。つまり、sphere や ls などすべてのビルトイン Maya コマンドに Python からアクセスできます。
MEL スクリプトとして書かれたコマンド(実際には MEL グローバル プロシージャ)には、MEL にアクセスするコール(maya.mel.eval)を使用してアクセスします。詳細については、MEL と Python の通信を参照してください。
PySide のバージョン 1.2 は Maya に含まれます。これは、Python 2.7 と Maya Qt のバージョン 4.8.6 で構築されます。
Python は、類似の機能を提供する豊富な標準モジュールを備えています。使用可能な関数とこれらの関数の Python スクリプトでの使用方法の詳細については、Python のマニュアルを参照してください。
Autodesk Maya 2016 の PyQt を構築する場合は、Microsoft 2012 Visual Studio Update 4 のコンパイラを使用する必要があります。これは、Maya 2012 の動作とは異なります。
PyQt モジュールのコピーを構築する方法については、autodesk.com/maya-docs-jpn の「PyQt」セクションを参照してください。
MEL コマンド リファレンスに似た Python コマンド リファレンスがあります。すべての Python コマンドの詳細については、Maya ヘルプ(Maya Help)の『Python コマンド リファレンス』を参照してください。
このヘルプには、ヘルプ > Python コマンド リファレンス(Help > Python Command Reference)を選択するか、Maya ヘルプを開く(ヘルプ > Maya ヘルプ(Help > Maya Help))ことによりアクセスできます。ヘルプが表示されたら、ナビゲーション フレームの最下部にある CommandsPython をクリックします。
Maya をインストールすると、同時に Python もインストールされます。Maya ではサポートしているすべてのプラットフォームで Python バージョン 2.7.6 を採用しています。Maya 用のスタンドアローン型 Python シェルは Windows では mayapy.exe、Linux と Mac OS X では mayapy という名前です。
Maya は起動する度に、userSetup.py ファイルのすべての Python コマンドを実行します。このファイルを使用して、作業環境を設定したり、maya.cmds モジュールの読み込みなどの頻繁に使用する Python コマンドを実行したりすることができます。
userSetup.py スクリプトは Maya の初期化およびセットアップ フェーズ時に実行されるので、このスクリプトでは、作業環境をセットアップし、Maya 機能への依存性を持たないコマンドだけが正常に実行されます。
maya.utils.executeDeferred() を使用すると、Maya シーンが初期化されるまでコード実行を遅延させることができます。詳細については、maya.utils を参照してください。
ファイルは必ず正しい拡張子(.py)で保存してください。
Python のパスに項目を追加するには、次のいずれかを行います。
次に sys.path にアペンドする例を示します。
import sys sys.path.append( '/Users/jdoe/maya/Scripts' )
パスに MEL スクリプトがある場合は、同じ名前を含む任意の 1 つのグローバル プロシージャにアクセスする前に、このスクリプトをソースにする必要はありません。ただし、Python ではまずスクリプトを明示的に読み込んでから、スクリプトに含まれる任意のクラスや関数にアクセスする必要があります。
# This will access the function "bar" in the file "foo.py" import foo foo.bar()