この記事はMaya Advent Calendar 2024の3日目の記事です。
戦国時代の最も優れた発明品の1つに、剣聖・上泉信綱が考案したとされる竹刀があります。竹刀が発明される以前は木刀を使っていたため、稽古でも怪我が多く非常に危険でした。しかし、現在では竹刀の登場により初心者でも安全に稽古ができるようになっています。
どうも、クリーク・アンド・リバー社 COYOTE 3DCG STUDIO テクニカルチーム所属、戦国大好き人間の中林です。
僕はMayaのMELからスクリプトを覚えました。そのため、かつてはテクニカルアーティスト(以下、TA)は全員Mayaを使えるものだと思い込んでいました。
しかし、現在の弊スタジオでは30人以上のTAが所属しており、その前身はエンジン開発者、Blenderなど他のDCCツールのユーザーと多岐にわたります。
そのため、Mayaのスクリプトを触ったことがないままTAになるケースも増えてきました。
それでも、弊スタジオでは依然としてMayaが主流であり、Pythonスクリプトでツール制作を依頼されることもあります。
そこで今回は、Maya初心者のTAに教えることの多い「Mayaのスクリプトをどこに入れるのか」そして「どう、実行するか」についてご紹介します。
初心者向け:スクリプトの保存場所
基本的にMELスクリプトでもPythonスクリプトでもファイルを入れる場所は同じです。
ドキュメント\maya\script
一部のユーザーは、Mayaのバージョンフォルダやja_JPフォルダ内のscriptsフォルダに保存する場合がありますが、僕はこれは推奨しません。
ドキュメント\maya\20XX\ja_JP\scripts (XXは各Mayaバージョン)
このフォルダに保存すると、Mayaのバージョンをまたいでスクリプトを使用できないためです。
また、同名のスクリプトファイルが複数のフォルダに存在すると、旧バージョンが優先され、最新バージョンが読み込まれない問題が発生することがあります。
そのため、バージョン依存のフォルダへの保存は避けましょう。
MELスクリプトの実行方法
方法①:ファイル名と関数名を一致させる
MELスクリプトでは、ファイル名と関数名を一致させることで、Maya起動時に自動的に読み込ませることができます。
例:sample.mel
Mayaを起動後に「ファイル名();」を実行するだけでスクリプトが動きます。
ただし、スクリプトの内容を更新しても、Mayaを再起動しないと変更が反映されないというデメリットがあります。
方法➁souceコマンドを使う
以下のように、スクリプトの起動の戦闘でsourceコマンドを記述します。
・起動コマンド
source sample2.mel;
testImport();
・sample2.melの中
global proc testImport(){
print("Source import sample\n");
}
これにより、スクリプトの更新後もMayaの再起動を不要にできます。
方法③:スクリプトエディタから読み込む
スクリプトエディタの「ファイル > スクリプトのソース」から読み込む方法もあります。
慣れると、アイコンボタンを使って効率的に操作できます。
Pythonスクリプトの実行方法
Pythonでは、ファイル名と関数名を一致させる必要はありません。以下の例をご覧ください。
・Python例:sample.py
def main():
print("Python import sample")
Python3の起動コマンド
import sample
import importlib
importlib.reload(sample)
sample.main()
Python3ではreloadを使うのにimportlibをインポートする必要があります。
Python2の起動コマンド
import sample
reload(sample)
sample.main()
配布用例
reloadはあくまでスクリプトの書く側が変更を確認しやすいよう使っています。
配布後に変更は無いのでreloadを外せばPython3でもPython2でも共用できます。
import Sample; Sample.main()
Pythonではめったに使わないけど「;」でスクリプトの改行扱いができます。
アーティストさんに配布するときはスクリプトエディタを立ち上げなくても、下の1行コマンドで使えるように1行でまとめます。
小さいけどこのような気遣いを僕はTAとしての優しさだと思っています。
以上で初心者編は終わりになります。
しかし、これはMayaの初期設定のフォルダに入れているだけです。
実はスクリプトを入れる場所は追加できます。
スクリプトを入れるフォルダを追加しよう
スクリプトフォルダを追加する方法の解説は、ヘキサドライブ社のテクニカルアーティストのRitaroさんがDAIKIN社の公式HPで公開しているブログを紹介します。
SUITE Users Note:最新Mayaワークグループ設定について
ブログには他にもQT Designerの解説も含まれており、大変参考になります。
また、Ritaroさんのブログは他にも役に立つ情報が多くあります。
僕も駆け出しのTAの頃からずっと、お世話になっています。
Maya.envの問題点
Maya.envファイルの上書き問題
一部のツールによってMaya.envファイルが勝手に上書きされてしまい、最悪ツールが動作しなくなる場合があります。
例えば、以下のようなケースです。
➀ツールAがインストール時にMaya.envをこっそり書き換える。
➁別のツールBがインストール時にMaya.envをこっそり上書きする。
➂結果としてツールAが動作しなくなる。
このような問題で、TAに相談が持ち込まれることが稀にあります。
modファイルの問題点
modファイルは、異なる名前であれば複数登録できるため、他のツールと競合しにくいというメリットがあります。
ただし、同名ファイルに弱いという弱点があります。
しかし、ファイル名が被らないように固有名やプロジェクト名を先頭につけるなどの工夫をすれば回避できます。
まとめ
初心者のうちは、スクリプトを「ドキュメント\Maya\scripts」フォルダに入れるだけで十分です。
慣れてきたら、modモジュールを活用することで、さらに多くのことができるようになります。
配布用のスクリプトを作成する際にも便利です。この記事が、Mayaでスクリプトの配置に困っている方のお役に立てれば幸いです。
明日12/4は 9bozさんの記事です、おたのしみに!