スタンドアロン アプリケーション

スタンドアロン アプリケーションの作り方

Python によって、Maya を起動しなくても Maya の機能を使用した、 独立して動作するアプリケーションを作成することができます。
スタンドアロン アプリケーションを実行するときは、 コマンドラインから mayapy コマンドを使用します。

スタンドアロン アプリケーションに必要なコマンド

独立した Maya の Python スクリプトを作成するときには、 必ずスクリプトの最初で以下のコマンドと初期化関数を実行しておく必要があります。
import maya.standalone
maya.standalone.initialize(name='python')
これらを実行した後で、Maya の機能を Python の関数で利用できるようになります。 ただし、バッチモードでの実行になるので、GUI の作成などはできません。

スタンドアロン アプリケーションの例

Maya のシーンファイルを、バイナリーからアスキーファイルに変更して保存するアプリケーションを作成してみましょう。

  1. Maya によって、球体が 1 個だけあるシーンを作成し、 現在のプロジェクトの scenes ディレクトリに test.mb というファイル名で保存します。
  2. 以下の Python スクリプトを mbtoma1.py という名前で作ります。
    import maya.standalone
    maya.standalone.initialize(name='python')
    
    maya.cmds.file('test.mb', o=True)
    maya.cmds.file(rename='test.ma')
    maya.cmds.file(save=True, type='mayaAscii')
    
  3. mbtoma1.py を実行します。
    (実行する前に test.ma という名前のシーンファイルがないか確認してください。)
    コマンドラインから以下のように実行します。
    # mayapy mbtoma1.py
  4. 現在のプロジェクトの scenes ディレクトリに test.ma というファイル名が作成されます。
    test.ma はアスキーファイルなので、テキストエディタで中身を閲覧することができます。
    test.ma を Maya で開くと test.mb と同じシーンになっているはずです。

スクリプトの解説

import maya.standalone
maya.standalone パッケージをインポートします。
maya.standalone.initialize(name='python')
Python で Maya の機能が使用できるように初期化します。
maya.cmds.file('test.mb', o=True)
test.mb というファイル名のシーンファイルを開きます。
シーンファイルは、現在のプロジェクトのシーンファイルのあるディレクトリ(デフォルトでは scenes)から探されます。
maya.cmds.file(rename='test.ma')
現在読み込まれているシーンファイルの名前を test.ma に変更します。
maya.cmds.file(save=True, type='mayaAscii')
現在読み込まれているシーンファイルをアスキーフォーマット(mayaAscii)で保存します。

練習

  1. mbtoma1.py を参考にして mbtoma2.py という Python スクリプトを作ってください。
    mbtoma2.py はコマンドラインから実行するときに、 引数からアスキーフォーマットを作成するバイナリのシーンファイル名を指定できるようにしてください。
    (使用例)
    以下のコマンドで、シーンディレクトリにある test.mb から test.ma ファイルが作成されます。
    # mayapy mbtoma2.py test.mb
    拡張子の .mb は省略されないという前提で作成してください。
    (ヒント)
    コマンドラインの引数をスクリプト内で使用するには、 以下のように実行します.
    import sys
    s = sys.argv[1]
    
  2. mbtoma2.py を参考にして mbtoma3.py という Python スクリプトを作ってください。
    mbtoma3.py はコマンドラインから実行するときに、 mbtoma2.py と同様に引数からシーンファイル名を指定できますが、 拡張子の .mb を省略してもしなくても、どちらでも動作するようにしてください。
    (使用例)
    以下のコマンドで、シーンディレクトリにある test.mb から test.ma ファイルが作成されます。
    # mayapy mbtoma3.py test
    拡張子を省略しなくても同様の結果になります。
    # mayapy mbtoma3.py test.mb
  3. mbtoma3.py を参考にして mbtoma4.py という Python スクリプトを作ってください。
    mbtoma4.py は、複数のシーンファイル名を引数で与えることができるようにしてください。
    (使用例)
    以下のコマンドで、シーンディレクトリにある test1.mb から test1.ma、 test2.mb から test2.ma、 test3.mb から test3.ma が作成されます。
    # mayapy mbtoma4.py test1.mb test2 test3
    if文を使用しないスクリプトを作成して提出してください。
  4. mbtoma4.py を参考にして mbtoma5.py という Python スクリプトを作ってください。
    引数のファイル名に*.mbを与えると、フォルダ内にある.mbファイルをすべて.maファイルに変換できるようにします。
    # mayapy mbtoma5.py *.mb

参考


Prev
Home | Contents
Mail