Maya Python

maya 起動時に自動でコードを実行する【環境変数について】

maya を使う時、個人個人で違う設定にしたいことがあると思います。

例えば スクリプトを置くフォルダを別の場所にしたい場合。
デフォルトであれば
C:\Users\ユーザー名\Documents\maya\scripts
のフォルダにダウンロードしたツールやスクリプトを入れて利用します。

しかし、ツールやスクリプトを自作するようになると外部のものと自作したものが混在してしまうため、デフォルトのフォルダにまとめて運用すると不都合が起きる場合があります。

こういったときに環境変数を設定しておくとスクリプト置き場を別の場所に設定できます。

また、他によくある例としては maya の言語を設定するときです。

maya を英語版で立ち上げる際は bat ファイルを利用して maya を立ち上げるのが一般的です。
これは maya の環境変数の言語を英語に変更して maya を立ち上げています。

環境変数の設定

maya の環境変数を設定するには環境変数を設定した bat ファイルを作成し、その bat ファイルから maya を起動させます。

set MAYA_SCRIPT_PATH=D:\mel
set PYTHONPATH=D:\python
SET MAYA_UI_LANGUAGE=en_US
"C:\Program Files\Autodesk\Maya2022\bin\maya.exe"

テキストエディタに上記のコードを書いて bat ファイルとして保存します。
※フォルダのパスとmaya のバージョンは変更してください。
私は分けて設定することが多いですが、両方同じパスにしておくと mel も python も同じフォルダに入れられます。

ここで指定したフォルダは
C:\Users\ユーザー名\Documents\maya\scripts
と同じように扱うことができます。

今後、上記の bat ファイルを起動すると maya が英語になり、指定したフォルダにパスが通った maya が起動するようになります。

環境変数は他にも様々なものが用意されています。
環境変数 | サポートとラーニング

複数のパスを通す

複数のパスを通すには「 ; 」セミコロンで接続します。

set PYTHONPATH=D:\python;D:\test\python

環境変数を確認する

環境変数を確認するには getenv コマンドを利用します。このコマンドは mel コマンドにしかありません。

from __future__ import print_function, unicode_literals
import maya.mel as mm
print(mm.eval('getenv "PYTHONPATH"'))

上記のコードでは python で行っていますが、当然 mel コマンドで直で記述しても問題ありません。
フラグの部分を変更すると他の環境変数も取得できます。

環境変数を設定する

maya を立ち上げた後に環境変数を設定するには putenv コマンドを利用します。このコマンドも mel コマンドにしかありません。

import maya.mel as mm
mm.eval('putenv "PYTHONPATH" "D:/Temporary"')

userSetup.py

上記の環境変数と併せて、userSetup.py について解説しておきます。

環境変数で設定したパスの直下に「userSetup.py」がある場合、maya 起動時にこのファイルを実行します。

テスト用のコードを用意しました。

userSetup.py という名前のファイルで、下記のコードが記述されています。

from __future__ import print_function, unicode_literals

def test():
    print('\n\n\n\n\n\n\n\n\n\n\n\n\n\n       Success !!!\n\n\n\n\n\n\n\n\n\n\n\n\n\n')


import maya.utils
maya.utils.executeDeferred(test)
  1. 上記のファイルを解凍し、userSetup.py を任意のフォルダに移す
  2. bat ファイルで環境変数「PYTHONPATH」を移したフォルダのパスに設定して maya を起動

これで maya が起動した際、下記のように自動で「Success !!!」と出力されるはずです。
わかりやすいように改行を連打しています。

userSetup.py は maya を立ち上げた時のみ読み込まれます。
そのため、maya を立ち上げた後に環境変数を通したとしても、そのタイミングでは読み込まれません。

executeDeferred

userSetup.py が読み込まれるタイミングは、maya が立ち上がった直後です。
maya が立ち上がった直後というのは python 自体が読み込まれていません。
そのため、普通に書くとエラーで処理されません。

そこで、コードが実行されるタイミングをずらす必要があります。

import maya.utils
maya.utils.executeDeferred(関数名)

上記の maya.utils の executeDeferred は、 maya が完全に立ち上がった状態で指定した関数を実行する ためのものです。
executeDeferred を利用することで、すべての条件が整った状態で関数を実行することができます。

まとめ

今回は maya 起動時に関数を実行させる方法についてお話してきました。

主な使い方としてはウィンドウメニューに自作したメニューを追加しておきたい場合や、普段多用するパイプラインツールを起動しておく際に利用します。
また、環境変数で別のパスを通しておくと複数人でファイルを管理する際にも便利です。

POINT
  • bat ファイルで環境変数を設定する
  • userSetup.py を用意する
  • maya.utils.executeDeferred(関数名) で関数を実行する

このあたりがポイントかと思います。

また、デフォルトの
C:\Users\ユーザー名\Documents\maya\scripts
内には userSetup.mel があります。
このファイルを書き換えたり、このフォルダ内に userSetup.py を用意することでも同様に起動時にコードが走るようになります。
パスが通っていて、その場所に userSetup.py があることが条件です。

-Maya Python