【Maya】モジュールワークフローの使い方【Module workflow】

maya

Maya Module workflow

Mayaにはプラグインモジュールという機能があります。
プラグイン モジュールを作成すれば、ネットワーク上の任意の場所またはローカルに保存できるプラグインの配布可能インストールを作成できるようになります。
場所を管理するために Maya インストールやその他のハードにファイルを書き込む必要がなくなります。
モジュール ファイルを使用することで、インストールされている数多くのプラグインの場所を別のスクリプト フォルダに変えるなど、
モジュールの配布を簡単に変更できるようになります。
複数のバージョンのプラグインをインストールしたり、OS、Maya のバージョン、および言語設定に基づいて異なるバージョンをロードしたりすることも可能です。

モジュール フォルダの構造

モジュール ファイルでは、モジュールの場所を指定します。
場所は、読み取られる .mod ファイルの場所を基準としたパス、または絶対パスで指定できます。
モジュール フォルダの構造を上書きするには、次の構文を使用します。
<オーバーライドするフォルダ>: <このフォルダの新しい場所>

モジュールのロードのための条件を指定する

OS 条件

PLATFORM: win64
PLATFORM: mac
PLATFORM: linux

システムロケール

LOCALE:en_US
LOCALE:ja_JP
etc...

Maya のバージョン

MAYAVERSION: 2017
MAYAVERSION: 2018
MAYAVERSION: 2019
MAYAVERSION: 2020

+ MAYAVERSION:2020 PLATFORM:mac LOCALE:ja_JP maya_module_example 1.0.0 ../maya_module_example
上のコードではMayaのバージョンが2020、OSがmac、システム ロケール設定が日本語の場合にのみ、maya_module_example プラグインがロードされます。

モジュールの場所を基準とした値を使用して環境変数を指定することもできます。

変数の現在値にアペンドする

PYTHONPATH +:= scripts
XBMLANGPATH +:= icons

モジュール パスを取得する

getModulePath –moduleName “maya_module_example”

既知の制限事項

次のフォルダ タイプは、リーガル モジュール リソース パスとしてサポートされていません。
モジュール システムでは、名前に次の拡張子が付いたフォルダは無視されます。
.so , .ml, .bundle, .py, .dll,
.framework, .plugin, .plist, .app,
.pkg, .rtfd, .download, .sparsebundle

Learning

現在のMAYA_MODULE_PATHを調べる

MAYA_MODULE_PATHは最初からいくつか提供されています

Pythonで確認

import os
def getpath(env="MAYA_MODULE_PATH"):
    for e in os.environ.get(env).split(";"):
        print e
getpath()

Module Managerで確認

Module Managerなどを使用して確認した場合

modulesフォルダーを作成する

先程調べたMAYA_MODULE_PATHのDocuments以下のpathはデフォルトでは作成されていないため
C:/Users/ <UseName> /Documents/mayaに移動し

C:/Users/ <UseName> /Documents/maya/modulesを作成する

モジュールで入れたいscriptと任意の.modを用意する
C:/Users/ <UseName> /Documents/maya/modules/ <name>.mod
C:/Users/ <UseName> /Documents/maya/maya_module_example

maya_module_exampleの中身

maya_module_example/mel
{
    string $whatIs=`whatIs "echo_mel.mel"`;
    string $path=`substitute "Mel procedure found in: " $whatIs ""`;
    $path=dirname( $path + "/echo_mel.mel");
    print $path;
    print "\n";
}
maya_module_example/python

import os

def file_path():
    print("__file__: %s" % __file__)
file_path()

maya_module_example/scripts
{
    string $whatIs=`whatIs "echo_mel.mel"`;
    string $path=`substitute "Mel procedure found in: " $whatIs ""`;
    $path=dirname( $path + "/echo_mel.mel");
    print $path;
    print "\n";
}

import os

def file_path():
    print("__file__: %s" % __file__)
file_path()

PCの環境に合わせて.modを書いていく

PCの環境

環境
OS : Windows 64bit
Maya: 2017.4

.modの場所( C:/Users/ <UseName> /Documents/maya/modules/ <name>.mod )を基準にしてモジュールの場所を指定する相対パスを指定する方法と
モジュールの場所( ../maya_module_example )を基準にしてスクリプト フォルダの場所を指定する相対パスを指定できる
今回は.modの場所を基準にしてモジュールの場所指定する方法を使用している

[cmd]

  • MAYAVERSION:2018 PLATFORM:win64 LOCALE:en_US maya_module_example 1.0.0 ../maya_module_example
    [/cmd]

この例では、Mayaのバージョンが2018、OSがWindows64bit、システムロケール設定がen_USの場合にのみ、maya_module_exampleプラグインがロードされます。

カスタム環境変数を設定する

カスタム環境変数を設定するには、次の構文を使用します。
MYVAR = MYVALUE
モジュールの場所を基準とした値を使用して環境変数を指定することもできます。その場合は「 := 」構文を使用します。
PYTHONPATH := python
変数の現在値にアペンドするには、+ または : 演算子を使用します。
PATH +:= bin
今回は以下のカスタム環境変数を設定しています

[cmd]

  • MAYAVERSION:2018 PLATFORM:win64 LOCALE:en_US maya_module_example 1.0.0 ../maya_module_example
    MAYA_SCRIPT_PATH +:= scripts
    MAYA_SCRIPT_PATH +:= mel
    PYTHONPATH +:= scripts
    PYTHONPATH +:= python
    XBMLANGPATH +:= icons
    [/cmd]
Module Managerで再確認


modules.modの項目が追加され、モジュールプラグインとしてmaya_module_exampleが追加されているのが確認できました

動作確認をする

source "echo_mel.mel";
source "echo_scripts.mel";
import echo_scripts
import echo_python
reload(echo_scripts)
reload(echo_python)