【Maya】プラグイン配布の構成を考える


Mayaのプラグインを作ったんだけどどうやって共有したらいいのかわからないよ!
というわけで色々試して今自分なりにこんな感じかなーと思ってる構成について書いてみます。

モジュール設定ファイルを作る

Maya.envを書き換えるって方法もあるんですが、Maya.envに自分の作ったプラグインの情報だけが書かれる保証はないので、他のプラグインやらなんやらの設定に影響が及んでしまう可能性があります。
出来るだけ自分が作ったものにしか影響が及ばないような形にしたいので、モジュールを利用してみます。
参考:複数ファイル モジュールの配布

「.mod」拡張子のモジュール設定ファイルを適切な場所に配置することで、Mayaがこの設定を元にモジュールの読み込みをしてくれます。
フォーマットは以下のような感じ。

+ (Conditions )“moduleName” “moduleVersion” “moduleLocation”

Conditionsの記述は任意で、以下のようなものが指定できます。

  • MAYAVERSION:Mayaのバージョン
    • 例)2015、2016
  • PLATFORM:対象のOS
    • 例)win64、mac
  • LOCALE:対象の言語
    • 例)en_US、ja_JP

参考:Maya モジュールのパス、フォルダ、およびバージョン

設定例は以下のような感じ。

+ PLATFORM:mac Maya_Module_Example 1.0 /Users/tm8r/maya_plugins/maya_module_example
PYTHONPATH +:= python

+ PLATFORM:win64 Maya_Module_Example 1.0 W:\maya_plugins\maya_module_example
PYTHONPATH +:= python

PYTHONPATHのところは、moduleLocation直下のpythonディレクトリをMayaのファイルパス変数「PYTHONPATH」に追加する記述になります。
「+:=」を「+=」にすると絶対パスで指定することもできます。

モジュール設定ファイルを配置する

配置場所はMAYA_MODULE_PATHで定義されている場所になります。
MAYA_MODULE_PATHはMayaのスクリプトエディタでMELのタブを開いて、「getenv MAYA_MODULE_PATH;」を実行すれば確認できます。
だいたい以下あたりになるんじゃないかと思います。

  • Windows:C:¥Users¥ユーザー名¥Documents¥maya¥Mayaバージョン¥modules
  • Mac : /Users/ユーザー名/Library/Preferences/Autodesk/maya/Mayaバージョン/modules

※モジュールを使ったことがない場合は自分でmodulesディレクトリを作成する必要があります。

ディレクトリ構成を考える

サンプルのリポジトリを用意したのでこちらを参照。
github.com

ルートにモジュール設定ファイルがありますが、実際のところこちらは適切な場所にコピーして使用する想定です。
シンボリックリンクとかで読んでくれればいいんですけど、少なくとも自分のMacの環境では読んでくれませんでした。

で、ルート直下にpythonとscriptsというディレクトリを用意しています。
基本的にはpython配下にpythonファイルを、scripts配下にmelファイルを置く想定です。
モジュール直下のscriptsディレクトリは自動的にMayaファイルパス変数PYTHONPATHに追加されるためここに置いたpythonファイルは参照できるようになるんですが、melと分けるために一応python専用ディレクトリを用意しています。
例外的にMaya起動時に自動的に読み込まれるuserSetup.pyだけscripts配下に置いています。
上のリポジトリのuserSetup.py同様、ここにメニューを構築するコードなど、起動時に自動実行してほしい内容を書いておくと楽ちんです。

python直下には他のプラグインと被らない名前のディレクトリを作って、その中にpythonファイルを置くようにします。
(pythonのモジュール名が被ると期待したモジュールが使えなかったりするため)
pythonに慣れてればやらない凡ミスだと思うんですが、ディレクトリをpythonモジュールと認識させるためには__init__.pyが必要になるので、こちらも忘れずに作成しておきます。

Mayaを起動する

上記リポジトリを落としてモジュール設定ファイルに記載されたディレクトリを自分の環境に書き換えた上で適切な場所に配置してMayaを起動します。
f:id:tm8r:20161018220457p:plain
うごいた…!

また、scripts配下に置いたmelファイルもこの時点でスクリプトエディタなどから実行できるようになってます。

モジュールで対応できないもの

残念ながらシェルフに関してはこの方法で配布できません。
MAYA_SHELF_PATHというファイルパス変数があって、こちらにディレクトリを追加する記述をモジュール設定ファイルに書いた後、「getenv MAYA_SHELF_PATH;」を実行すると、ちゃんとパスに追加されてるのが確認できるものの、シェルフには追加されていません。
MAYA_SHELF_PATHが使用されるタイミングがモジュール読み込みより先なのかなーという感じ。
したがって、こちらはMaya.envに書かざるを得なさそうな感じです。かなしみ。

おわり

ネットワークドライブにプラグインを置いてる会社も多いのかなーと思うんですけど、個人利用だとか、特定のバージョンを使いたいとか、そういった場合でもこのような構成にしておけばモジュール設定ファイルにさえ手が入らなければリポジトリの最新バージョンを落とすだけでファイルの更新の追従ができるので、簡単に管理ができそうです。

参考:最新Mayaワークグループ設定について

スポンサーリンク