このトピックは、初めて Maya Python プラグインを作成して実行する場合の手順について説明します。
既定では、Maya は 次のディレクトリに配置されたプラグインをロードしようとします。
C:/Users/<username>/Documents/maya/<version>/plug-ins
Library/Preferences/Autodesk/maya/<version>/plug-ins
$MAYA_APP_DIR/maya/<version>/plug-ins
この詳細は、次の通りになります。
Maya がプラグインをロードする既定の場所は複数存在する場合があります。詳細については、Maya ユーザ ガイドの「環境変数」セクションの「ファイル パス変数」を参照してください。また、この環境変数を設定するフォルダのリストのコマンド ラインに getenv MAYA_PLUG_IN_PATH
と入力することもできます。
オプションで、MAYA_PLUG_IN_PATH
環境変数の追加フォルダを定義し、これらのフォルダからプラグインをロードすることができます。
Windows 7 の場合は、スタートメニューを開き、検索ボックスに「env
」と入力し、[Enter]キーを押します。User variables
セクションで「新規(New)」ボタンをクリックし、変数名として「MAYA_PLUG_IN_PATH
」を入力します。選択するパスに変数値を設定します。後でこのパスにスクリプトを格納します。たとえば、変数値「%USERPROFILE%¥Documents¥scripts
」は、現在のユーザの My Documents¥scripts フォルダに対応します。複数のパスを指定するには、変数値をセミコロン「;
」で区切ります。
Maya を起動すると、MAYA_PLUG_IN_PATH
に含まれるフォルダがウィンドウ > 設定/プリファレンス > プラグイン マネージャ(Window > Settings/Preferences > Plug-in Manager)に別のセクションとして表示されます。
スクリプト エディタを使用して Python プラグインを作成する
Python および MEL Script Editor (Python and MEL Script Editor)ウィンドウは、ウィンドウ > 一般エディタ > スクリプト エディタ(Window > General Editors > Script Editor)にあります。Python プラグインは任意の外部テキスト エディタを使用して作成することもできますが、このトピックでは Maya にビルトインされた対話型スクリプト エディタを使用した手順を説明します。
スクリプト エディタの Python タブに、以下のプラグイン コードをペーストしてください。このコードは、呼び出されると「Hello World!」をスクリプト エディタに出力する単純なコマンドを作成します。その他の Python プラグインのサンプル(以下を含む)は、Developer Kit インストールの devkit/plug-ins/scripted フォルダにあります(「ビルド環境を設定する: Windows 環境(64 ビット)」を参照してください)。2.0 API を使用するプラグインの名前は、pyHelloWorldCmd.py などのように、'py' ではじまります。 次のトピックでは、プラグインのプログラム構造を説明します。ここでは、最初のプラグインの実行に焦点を置きます。
Python API 2.0:
import sys
import maya.api.OpenMaya as om
def maya_useNewAPI():
"""
The presence of this function tells Maya that the plugin produces, and
expects to be passed, objects created using the Maya Python API 2.0.
"""
pass
# command
class PyHelloWorldCmd(om.MPxCommand):
kPluginCmdName = "pyHelloWorld"
def __init__(self):
om.MPxCommand.__init__(self)
@staticmethod
def cmdCreator():
return PyHelloWorldCmd()
def doIt(self, args):
print "Hello World!"
# Initialize the plug-in
def initializePlugin(plugin):
pluginFn = om.MFnPlugin(plugin)
try:
pluginFn.registerCommand(
PyHelloWorldCmd.kPluginCmdName, PyHelloWorldCmd.cmdCreator
)
except:
sys.stderr.write(
"Failed to register command: %s¥n" % PyHelloWorldCmd.kPluginCmdName
)
raise
# Uninitialize the plug-in
def uninitializePlugin(plugin):
pluginFn = om.MFnPlugin(plugin)
try:
pluginFn.deregisterCommand(PyHelloWorldCmd.kPluginCmdName)
except:
sys.stderr.write(
"Failed to unregister command: %s¥n" % PyHelloWorldCmd.kPluginCmdName
)
raise
Python API 1.0:
import sys
import maya.OpenMaya as OpenMaya
import maya.OpenMayaMPx as OpenMayaMPx
# command
class HelloWorldCmd(OpenMayaMPx.MPxCommand):
kPluginCmdName = "spHelloWorld"
def __init__(self):
OpenMayaMPx.MPxCommand.__init__(self)
@staticmethod
def cmdCreator():
return OpenMayaMPx.asMPxPtr( HelloWorldCmd() )
def doIt(self,argList):
print "Hello World!"
# Initialize the script plug-in
def initializePlugin(plugin):
pluginFn = OpenMayaMPx.MFnPlugin(plugin)
try:
pluginFn.registerCommand(
HelloWorldCmd.kPluginCmdName, HelloWorldCmd.cmdCreator
)
except:
sys.stderr.write(
"Failed to register command: %s¥n" % HelloWorldCmd.kPluginCmdName
)
raise
# Uninitialize the script plug-in
def uninitializePlugin(plugin):
pluginFn = OpenMayaMPx.MFnPlugin(plugin)
try:
pluginFn.deregisterCommand(HelloWorldCmd.kPluginCmdName)
except:
sys.stderr.write(
"Failed to unregister command: %s¥n" % HelloWorldCmd.kPluginCmdName
)
raise
スクリプト エディタ(Script Editor)ウィンドウで、ファイル > スクリプトの保存(File > Save Script)を選択します。ファイル名を myFirstPlugin.py
(拡張子 .py は省略可能。自動的に追加されます)に設定し、スクリプトを C:¥Users¥<username>¥Documents¥maya¥<version>¥plug-ins
フォルダまたは MAYA_PLUG_IN_PATH
環境変数で定義したフォルダの 1 つに保存します。
新規保存したスクリプトを Maya が認識しているか確認するには、プラグイン マネージャ(Plug-in Manager)ウィンドウに、ウィンドウ > 設定/プリファレンス > プラグイン マネージャ(Window > Settings/Preferences > Plug-in Manager)でアクセスし、更新(Refresh)ボタンを押します。プラグイン ファイルはここに表示されます。ロード(Loaded)または自動ロード(Auto load)チェックボックスはここではオンにしないでください。
新規作成されたプラグインを Maya にロードするには、2 つの方法があります。
プログラムを使用: スクリプト エディタで、以前の Python コードを削除します。ここで次のコード行を書き、スクリプト エディタのツールバー上の青色の実行(Play)ボタンを使用してコードを実行します。
import maya.cmds
maya.cmds.loadPlugin("myFirstPlugin.py")
プラグイン マネージャ(Plug-in Manager)ウィンドウを表示したときに、プラグインのロード(Loaded)チェックボックスがオンになっていることを確認します。
手動: プラグイン マネージャ(Plug-in Manager)ウィンドウ内で、ロード(Loaded)および自動ロード(Auto load)チェックボックスをオンにすることができます。ロード(Loaded)チェックボックスをオンにするとプラグインがロードされ、自動ロード(Auto load)チェックボックスをオンにすると、Maya を起動したときに自動的にプラグインがロードされるようになります。ロード(Loaded)チェックボックスを一度オフにしてから再度オンにするとプラグインがリロードされます。これは、コードのテストやデバッグの際に便利です。
ここで作成したのは、「Command」プラグインです。つまり、このプラグインは、呼び出されたときに「Hello World!」を出力する新しいコマンドを定義します。プラグインが適切にロードされると、新しい MEL コマンドとして表示されます。また、Python モジュール maya.cmds
内の新しい関数として表示されます。このモジュールはすべての利用可能な Maya Python コマンド(利用可能な MEL コマンドのサブセット)を定義します。コマンドを実行するには、スクリプト エディタ内で次のコードを実行します。
import maya.cmds as cmds
cmds.spHelloWorld()
スクリプト エディタには次の行が表示されます。ここには、「Hello World!」という出力とともにコマンドがエコーされます。
import maya.cmds as cmds
cmds.spHelloWorld()
Hello World!
これで 初めての Maya Python プラグインが実行されました。