こんにちわ、兼業クリエイターのみっつです。
今回はmayabatchを使い、Mayaをコマンドラインから操作する方法を共有していきたいと思います。
ちなみにこういうGUIを立ち上げずに起動する方法を、『スタンドアロンで起動する』っていうらしいですヨ
ヘーシランカッター
- 場所:Mayaの場所/bin/mayabatch.exe
- 実行方法:mayabatch -command “プロシージャ名”
- フラグ確認:mayabatch -help
- 注意点:global procで定義、ファイル名とプロシージャの名前は同じ
mayabatchのざっくりっとした解説は上記の通りです。
下の方で詳しく解説していきます。
■動作環境
- Windows10
- Maya2022
mayabatchを走らせる前にMayaのファイルを準備する
mayabatchを試す前に、処理の対象となるファイルを用意しましょう。
適当にオブジェクトを作り、『C:\work\maya\test.ma』って場所に保存します。
今回はこのMayaシーンを使って作業していきます。
mayabatchの場所と実行方法
mayabatch.exe はMayaのパス/bin/mayabatch.exe 入ってます。
mayabatchの実行方法
実行方法①mayabatch.exeへのフルパスを書いて実行する
"C:/Program Files/Autodesk/Maya2022/bin/mayabatch.exe" -file "C:/work/maya/test.ma" -command "file -rename """C:/work/maya/test01.ma""";file -save";
実行方法②mayabatchの階層に移動して実行する
cd C:/Program Files/Autodesk/Maya2022/bin
mayabatch -file "C:/work/maya/test.ma" -command "file -rename """C:/work/maya/test01.ma""";file -save";
コマンドプロンプトを立ち上げて、↑のコマンドを実行します。
実行方法は2つほどあるので、状況に応じて使い分けて下さい。
実行してる処理は、
- test.maを開く
- 『test.ma』の名前を『test01.ma』に変更
- 保存
って感じです。
mayabatchの解説
- mayabatchの書き方①コマンドだけ渡す
- mayabatch -command “melスクリプト”;
- mayabatchの書き方②ファイルを指定してコマンドを渡す
- mayabatch -file “ファイルのフルパス” -command “melスクリプト”;
mayabatchの書き方は↑の感じです。
コマンドだけを渡すこともできるし、ファイルを指定して実行することもできます。
注意すべきはダブルクォーテーションで囲む際に、ちゃんとエスケープさせるって部分ですかね
細かい話はあんまり分かってないので、参考にした記事を貼っておきます。
mayabatchのフラグ紹介
-v | 製品バージョン情報とカット番号を表示します |
-batch | バッチ モード用 |
-prompt | インタラクティブ非 GUI モード用 |
-proj [dir] | 指定したプロジェクト ディレクトリでファイルを検索します |
-command [mel command] | 指定したコマンドをスタートアップ時に実行します |
-file [file] | 指定したファイルを開きます |
-script [file] | 指定したファイルをスタートアップ時にソースします |
-log [file] | 標準出力および標準エラーメッセージを指定したファイルにコピーします(完全なファイル名を使用) |
-hideConsole | コンソール ウィンドウを非表示 |
-recover | 最後に使用したジャーナル ファイルを回復します |
-optimizeRender [file] [outfile] | Maya ファイルをレンダリング作業用に最適化し、出力ファイルに結果を入れます |
-archive [file] | 指定したシーンのアーカイブ化に必要なファイルをリスト表示しま |
-noAutoloadPlugins | いかなるプラグインも自動ロードしません。 |
-3 | Python 3000 の互換性に関する警告を有効にします |
-help | helpの表示 |
mayabatchで使えるフラグの一覧です。
今回はこの中で-file と -command フラグを使った感じですね。
自作したMELファイルを呼び出して実行する
mel単体で渡すだけでなく、自作したmelファイルで処理することもできます。
(むしろこっちの方がやりたいですよねって話ね…)
melファイルを用意する
//standaloneTest.mel
global proc standaloneTest(){
file -open "C:/work/maya/test.ma";
file -rename "C:/work/maya/_____test01.ma";
file -save;
};
ファイルを開いてリネームして保存し直す、っていうmelスクリプトを用意しました。
ファイル名は『standaloneTest.mel』です。
これをMayaのスクリプトパスが通ってる場所に配置します。
無難にいくなら『C:/Users/{ユーザー名}/ドキュメント/maya/{mayaのバージョン}/ja_JP/scripts』の中で良いと思います。
mayabatch -command "standaloneTest;"
melファイルを用意したら↑のコマンドを実行します。
先程書いたコマンドよりも、だいぶスッキリしましたね!
うまくいけば『_____test01.ma』ってリネームされたMayaのファイルがあるはずです。
『エラー: line 1: プロシージャ “〇〇”が見つかりません』と出てくる場合の対処法
- プロシージャの定義が globe proc になっているか。
- メインのプロシージャはmelファイルと同じ名前になっているか。
『エラー: line 1: プロシージャ “プロシージャ名”が見つかりません。』って出てくる場合は上記を見直してみましょう。
【まとめ】mayabatch -command “プロシージャ名”でバッチ処理を回そう!
- 場所:Mayaの場所/bin/mayabatch.exe
- 実行方法:mayabatch -command “プロシージャ名”
- フラグ確認:mayabatch -help
- 注意点:global procで定義、ファイル名とプロシージャの名前は同じ
以上がmayabatchのまとめです。
mayabatchを使うことでMayaをコマンドラインから操作でき、より効率的な処理が可能になります。
ぜひともご活用下さい!
それでは!