すぐ忘れてしまうのでメモ。
エントリポイント
Mayaが最初に呼び出すスクリプトディレクトリにuserSetup.pyを置きます。
Windowsの場合は
C:\Users\user\Documents\maya\scripts
以下に置くことになります。
このディレクトリは、
- MAYA_SCRIPT_PATH
- PYTHONPATH
に任意のパスを追加しておくことで変更することができます。
自分の場合、ツールごとにgit管理しているので、意図的にスクリプトフォルダを開発用ディレクトリに差し替えています。
# 例
set MAYA_SCRIPT_PATH=MAYA_SCRIPT_PATH;D:\dev\mayatool
set PYTHONPATH=PYTHON_PATH;D:\dev\mayatool
中身はこんな感じにしておきます
userSetup.py
# -*- coding: utf-8 -*-
from maya import utils
from MyTool import menu
utils.executeDeferred(menu.main)
executeDeferredでMAYAシステム上のすべてのGUIコンポーネントがロードされた後に実行されます。
メニュー登録用スクリプト
それぞれのツール用ディレクトリにメニュー追加用スクリプトを用意しておいて、userSetup.pyから呼ぶ形にします。
root/
├ userSetup.py
├ MyTool/
│ ├ __init__.py
│ ├ menu.py
│ └ Animation/
│ ├ __init__.py
│ └ gui.py
MyTool内のスクリプトはモジュール化しておいたほうが都合がよいので、__init__.py
も仕込んでいます。
メニューに追加するスクリプトは次のようにします。
menu.py
# -*- coding: utf-8 -*-
import maya.cmds as cmds
def main():
cmds.menu(l='MyTool', p='MayaWindow', to=True)
cmds.menuItem(l='Animation', to=True, sm=True)
cmds.menuItem(l='MyAnimator',
c='from MyTool.Animation import gui;reload(gui);gui.main()')
reloadを挟むことで、毎回メニューをクリックした際にGUIのスクリプトに更新を走らせることができるので、
自分は入れる派ですがなくても大丈夫です。
これで追加することができました。