初めての Maya Python プラグイン

このトピックは、初めて Maya Python プラグインを作成して実行する場合の手順について説明します。

(オプション) Maya プラグイン環境変数を設定する

既定では、Maya は 次のディレクトリに配置されたプラグインをロードしようとします。

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)チェックボックスはここではオンにしないでください。

Python プラグインをロードする

新規作成されたプラグインを Maya にロードするには、2 つの方法があります。

Python プラグインを起動する

ここで作成したのは、「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 プラグインが実行されました。