Help us understand the problem. What is going on with this article?

Maya起動バッチを作ろう

概要

チームでMayaを使う際、特定のツールセットを使用可能にしたり、任意の設定を行ったり、
利用者全員の環境を統一する事が重要になってきます。
本記事ではバッチファイルを使った環境統一について記載してみたいと思います。

バッチファイル構成

私は下記のバッチファイル構成をよく使用します。

  • 実行ファイル起動用バッチ(実際にMayaまたはMayaBatchを起動するバッチ)
  • MayaBatch実行用バッチ(Jenkinsやバッチ処理などで実行するバッチ)
  • Maya通常実行用バッチ(アーティストが通常作業に実行するバッチ)
  • Maya開発実行用バッチ(ツール開発者が開発時に実行するバッチ)

全てのバッチファイルを同じ階層に格納し、
サブフォルダにPythonやMELなどのスクリプトも格納していると想定してください。

実行ファイル起動用バッチ

EXEファイルをオプション付きで起動するバッチです。
maya2018.prj1.bat のような名前で、プロジェクト別に作成します。

引数 用途
%1 maya.exeかmayabatch.exeへのフルパス
%2 mayaの言語モードを指定する文字列
%3 起動時にオープンするファイルパス
%4 起動時に実行するMELファイルパス

同時に下記のような環境変数の設定を行います。

  • MAYA_UI_LANGUAGE(起動後のUI言語を指定)
  • MAYA_DISABLE_CIP(Customer Involvement Program を無効化)
  • MAYA_FORCE_PANEL_FOCUS(http://ueta.hateblo.jp/entry/2015/01/31/182224)
  • MAYA_SCRIPT_PATH(MELファイルの場所を指定)
  • PYTHONPATH(usersetup.pyとPythonファイルの場所を指定)
  • MAYA_PLUG_IN_PATH(プラグインファイルの場所を指定)
maya2018.prj1.bat
CD /d %~dp0
::----------------------------------------------------------------
::Args
::----------------------------------------------------------------
SET MAYA_EXE=%1
SET MAYA_UI_LANGUAGE=%2
SET OPEN_FILE=%3
SET MEL=%4

::----------------------------------------------------------------
::Gernal
::----------------------------------------------------------------
SET PATH_BAT=%~DP0
SET MAYA_DISABLE_CIP=1
SET MAYA_FORCE_PANEL_FOCUS=0

::---------------------------------------------------
::MEL Tools
::---------------------------------------------------
SET MAYA_MEL_1=%PATH_BAT%inhouse\mel;
SET MAYA_MEL_2=%PATH_BAT%package\mel;
SET MAYA_SCRIPT_PATH=%MAYA_MEL_1%%MAYA_MEL_2%

::----------------------------------------------------------------
::Python Tools
::----------------------------------------------------------------
SET PATH_USERSETUP=%PATH_BAT%inhouse\prj1\python;
SET PYTHONPATH=%PATH_USERSETUP%

::----------------------------------------------------------------
::Plugin Tools
::----------------------------------------------------------------
SET PATH_PLUGIN=%PATH_BAT%inhouse\plugin;
SET MAYA_PLUG_IN_PATH=%PATH_PLUGIN%

::----------------------------------------------------------------
::Run MayaBatch
::----------------------------------------------------------------
IF NOT {%MAYA_EXE:mayabatch.exe=%} == {%MAYA_EXE%} (
    START /WAIT "" %MAYA_EXE% -file %OPEN_FILE% -script %MEL% -log "%PATH_BAT%mayabatch.log"
    EXIT
)

::----------------------------------------------------------------
::Run Maya
::----------------------------------------------------------------
if "%OPEN_FILE%" == "" (
    START "" %MAYA_EXE% -hideConsole
) else (
    START "" %MAYA_EXE% -hideConsole -file %OPEN_FILE%
)
EXIT

MayaBatch実行用バッチ

起動用バッチにMayaBatchを起動させるバッチです。
maya2018.prj1.cmd.bat のような名前で、プロジェクト毎に作成します。

引数 用途
%1 起動時にオープンするファイルパス
%2 起動時に実行するMELファイルパス
maya2018.prj1.cmd.bat
::---------------------------------------------------
::Exe
::---------------------------------------------------
SET MAYA_EXE="C:\Program Files\Autodesk\Maya2018\bin\mayabatch.exe"

::---------------------------------------------------
::Run MainBatch
::---------------------------------------------------
SET PATH_BAT=%~DP0
SET PATH_MAYA_BAT=%PATH_BAT%maya2018.prj1.bat

SET OPEN_FILE=%1
SET MEL=%2
START %PATH_MAYA_BAT% %MAYA_EXE% en_US %OPEN_FILE% %MEL%
EXIT

Maya通常実行用バッチ

起動用バッチにMayaを起動させるバッチです。
maya2018.prj1.jp.bat のような名前で、プロジェクトと言語毎に作成します。
※英語ならmaya2018.prj1.en.bat

引数 用途
%1 起動時にオープンするファイルパス
%2 起動時に実行するMELファイルパス
maya2018.prj1.jp.bat
::---------------------------------------------------
::Exe
::---------------------------------------------------
SET MAYA_EXE="C:\Program Files\Autodesk\Maya2018\bin\maya.exe"

::---------------------------------------------------
::Run MainBatch
::---------------------------------------------------
SET PATH_BAT=%~DP0
SET PATH_MAYA_BAT=%PATH_BAT%maya2018.prj1.bat

SET OPEN_FILE="%1"
if %OPEN_FILE% == "" (
    START %PATH_MAYA_BAT% %MAYA_EXE% ja_JP
) else (
    START %PATH_MAYA_BAT% %MAYA_EXE% ja_JP %OPEN_FILE%
)

Maya開発実行用バッチ

起動用バッチにMayaを起動させるバッチです。
maya2018.prj1.dev.bat のような名前で、プロジェクト毎に作成します。

特定パスからツールが起動されていないと動作しないといったケースがあります。
そういった場合、ツールの実行場所を置き換えるなどのハックをする必要があります。
開発実行用バッチではそのようなケースに対応するために環境変数を設定します。

※スクリプトは開発用、実行環境はアーティスト環境のように見せかけるイメージ。
※開発用の環境変数を使うコードは別途実装が必要。

maya2018.prj1.dev.bat
::---------------------------------------------------
::Develop Mode
::---------------------------------------------------
REM 開発モードの場合、下記のパスにあるバッチから起動したように見せかけます
SET MAYA_DEV_MODE=1
SET MAYA_BAT_PATH=X:\prj1\maya

::---------------------------------------------------
::Run MainBatch
::---------------------------------------------------
SET PATH_BAT=%~DP0
SET PATH_MAYA_BAT=%PATH_BAT%maya2018.prj1.en.bat
START %PATH_MAYA_BAT%
EXIT

userSetup.py

起動用バッチで使用するuserSetup.pyを指定しています。
userSetup.pyでは下記のような環境設定を行うことが多いです。

  • コマンドポート解放
  • 独自プラグインのロード
  • メニューバーやサイドバーの追加
  • プリファレンスの上書き(単位設定やビューポート設定など)
  • スクリプトジョブの追加(SceneOpenedでスクリプトを遅延実行させるなど)
  • MELグローバル変数の定義
  • Loggerのセットアップ

まとめ

バッチファイルを使うことで、あらかじめ決めておいた場所にある
スクリプトを実行可能にしたり、設定を変更しておくことが簡単にできます。

しかしながら、Mayaのインストールパスが違うといったケースはよく発生します。
バッチファイルを生成するセットアップツールを作るといいかもしれませんね。
専用ランチャーから実行する場合は、EXEファイルの関連付けを設定できたりしていいですね。

より汎用的なパイプランを実装したい方は、Ecosystemなどを参考にしてみてください。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away