【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で確認

module_001

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

Module Managerで確認

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

modulesフォルダーを作成する

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

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

maya_module_exampleの中身

module_004

maya_module_example/icon

example_icon

{
    string $whatIs=<code>whatIs &quot;echo_mel.mel&quot;</code>;
    string $path=<code>substitute &quot;Mel procedure found in: &quot; $whatIs &quot;&quot;</code>;
    $path=dirname( $path + &quot;/echo_mel.mel&quot;);
    print $path;
    print &quot;\n&quot;;
}

import os

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

{
    string $whatIs=<code>whatIs &quot;echo_scripts.mel&quot;</code>;
    string $path=<code>substitute &quot;Mel procedure found in: &quot; $whatIs &quot;&quot;</code>;
    $path=dirname( $path + &quot;/echo_scripts.mel&quot;);
    print $path;
    print &quot;\n&quot;;
}

import os

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

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

PCの環境

環境
OS : Windows 64bit
Maya: 2019.3

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

+ MAYAVERSION:2019 PLATFORM:win64 LOCALE:en_US maya_module_example 1.0.0 ../maya_module_example

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

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

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

+ MAYAVERSION:2019 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

Module Managerで再確認

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

動作確認をする

module_007

source "echo_mel.mel";
source "echo_scripts.mel";

import echo_scripts
import echo_python
reload(echo_scripts)
reload(echo_python)