CG系 PRを含みます

【Maya】mayabatchを使ってMayaをコマンドラインから操作する

記事内に商品プロモーションが含まれます

こんにちわ、兼業クリエイターのみっつです。

今回は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つほどあるので、状況に応じて使い分けて下さい。

実行してる処理は、

  1. test.maを開く
  2. 『test.ma』の名前を『test01.ma』に変更
  3. 保存

って感じです。

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いかなるプラグインも自動ロードしません。
-3Python 3000 の互換性に関する警告を有効にします
-helphelpの表示

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をコマンドラインから操作でき、より効率的な処理が可能になります。

ぜひともご活用下さい!

それでは!

ABOUT ME
みっつ
CGアニメーター/リガー テクニカルアーティスト(TA)目指して精進中です 都内でゲーム作ってます。