チュートリアル / Maya API入門チュートリアル
第1回:開発環境の準備、サンプルプラグインのビルドと実行

2021.07.28
  • Maya
  • ゲーム
  • コラム
  • スクリプト・API
  • チュートリアル
  • 学生・初心者
  • 映画・TV・アニメ
Maya API入門チュートリアル

みなさまこんにちは、オートデスクの加瀬です。
Mayaを使い始めたのが1998年にリリースされたSGI IRIX用v1.0でしたが、当時はポリゴンのモデリングツールが殆ど無い状態でキャラクタモデリングはNURBSが中心だったと記憶しています。そんなv1.0ですが、最初からMayaのエンジンコア、MELとAPIはかなりの完成度でカスタマイズの自由度が高く、特にAPIは不足している機能を作り易い環境でした。現代のMayaでもAPIはカスタマイズをする上で重要なツールとなっています。

これから何回かに分けてMaya APIを初めて触る方向けにMayaプラグインの作り方をご紹介したいと思います。
Mayaのヘルプページにもプラグインの作り方は載っていますが、導入時に少々分かりにくい所があるかもしれません。このコラムでは手順をシンプルに説明したいと思います。
これからAPIを始める方の参考になれば幸いです。

Maya APIとは

Maya APIはMayaのプラグインを作るための開発ツールキットで、Mayaに新しい機能を追加する事ができます。MayaはMELやPythonなどのスクリプトモジュールを提供していて、スクリプトの中でMayaが標準で持つコマンド群を使いツールを作る事ができます。しかしスクリプトは新しい関数を作りコマンドの様に利用する事はできますが、Mayaに登録されているコマンドそのものやディペンデンシーノードを開発する事はできません。
Maya APIで開発した新しい機能はプラグインファイルとなり、これをMayaにロードして実際のスタジオワークで使用することができます。

Maya APIにはプログラミング言語プラットフォームとして、C++, Python, .NETの各ライブラリが用意されています。
今回のコラムではMaya 1.0の初期から存在する基本的なC++ APIを使ってシンプルなMayaプラグインの作り方をご紹介したいと思います。 C++はネイティブコンパイラを使うため Python, .NETと比べて最も高速な処理が期待できます。特に複雑な数値演算やメモリを扱う場合に向いているでしょう。

Maya APIで作る事ができるプラグインタイプはいくつか種類があります。
・コマンドプラグイン
・ノードプラグイン
・マニピュレータープラグイン
・シェイププラグイン
・アトリビュートデータタイププラグイン
・ファイルトランスレータプラグイン
・ビューポートレンダラープラグイン
・その他諸々....

プラグインタイプは様々ですが、基本的で良く使うタイプであるコマンドプラグインの作成から触ってみるのが良いと思います。

プラグイン以外では、スタンドアローンアプリケーションを開発する事もできます。
プラグインはmaya.exeを実行しロードして使用する仕組みですが、スタンドアローンでは開発者自らMayaエンジンを利用したexe形式のアプリケーションを開発する事ができます。
バッチ処理に向いていると思いますが、mayaBatch.exeが用意されているため、スタンドアローンアプリケーションはあまり作る機会は無いかもしれません。

開発環境の準備

Windows環境ではMicrosoft Visual Studioが必要です。
今回はMaya 2022 Windows版を使用するので、これに対応するMicrosoft Visual Studio 2019でC++のプラグインソースコードをビルドする必要があります。

またMaya APIを扱うためにはdevkitと呼ばれるライブラリのパッケージも必要です。
devkitはMayaデベロッパーセンターから取得できます。
https://www.autodesk.co.jp/developer-network/platform-technologies/maya

Maya API入門チュートリアル

ページ内からMaya 2022 win64のdevkitをダウンロードします。

Maya API入門チュートリアル

ダウンロードしたファイルは圧縮されているので展開して任意のフォルダに配置します。
例: C:\devkit\Autodesk_Maya_2022_DEVKIT_Windows

このdevkit内にはサンプルプラグインが多数用意されています。
これらのサンプルプラグインをビルドしてMayaで実行を試してみましょう。

まず環境変数の設定を行います。
Windowsの環境変数に DEVKIT_LOCATION を追加します。
変数値はdevkitを配置したフォルダ内のdevkitBaseフォルダを含むパスを指定します。
例: C:\devkit\Autodesk_Maya_2022_DEVKIT_Windows\devkitBase

Maya API入門チュートリアル

このDEVKIT_LOCATION環境変数は、次のcmakeの実行で必要になります。

続いてcmakeでサンプルプラグインのVisual Studio用プロジェクトの構築を行います。
cmakeはVisual Studioをインストールしたフォルダ内に用意されているので、今回はこちらを使用します。通常cmakeは以下に置かれていると思います。

C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe

cmake.exeへのパスはWindowsのPATH環境変数に登録しておいても良いと思います。
またcmakeは自身でダウンロードした物を使うこともできます。

Windowsのコマンドプロンプトを開きdevkit内のplug-insフォルダに移動します。
例: > cd C:\devkit\Autodesk_Maya_2022_DEVKIT_Windows\devkitBase\devkit\plug-ins

Maya API入門チュートリアル

このplug-insフォルダにサンプルプラグインのソースコードが置かれていますが、Visual Studioで扱うプロジェクトファイルが無いのでcmakeで生成します。
cmakeに以下のオプションを付けて実行します。

cmake . -Bbuild -G "Visual Studio 16 2019"
Maya API入門チュートリアル

cmakeの処理は数秒で完了すると思います。
以下の様に表示されれば成功です。

Maya API入門チュートリアル

cmakeの処理が完了すると plug-insフォルダ内にbuildフォルダが作られます。
このbuildフォルダ内に各サンプルプラグインのVisual Studioプロジェクトファイルと、これらのプロジェクトをまとめるソリューションファイル Plugins.slnが生成されます。

cmakeをLinuxとmacOSの環境で扱う場合はdevkitフォルダ内にREADME.mdがあるのでこちらを参照してください。

プラグインをビルドする

cmakeでサンプルプラグインのプロジェクトが生成出来たので、Visual Studioでビルドをしてみましょう。
Visual Studioでソリューションファイル Plugins.slnを開きます。
Plugin.slnはbuildフォルダにあります。
例: C:\devkit\Autodesk_Maya_2022_DEVKIT_Windows\devkitBase\devkit\plug-ins\build

ソリューションエクスプローラーにサンプルプラグインのプロジェクトのリストが表示されますが、リストの中からhelloWorldCmdを選択してビルドします。このプラグインはとてもシンプルなコマンドプラグインです。

Maya API入門チュートリアル

エラーが無くコンパイルとリンクが正常に通ればビルドは成功です。

Maya API入門チュートリアル

ビルドに成功したhelloWorldCmd.mllプラグインファイルは以下のhelloWorldCmdプロジェクトフォルダのDebugフォルダ内に生成されます。
例: C:\devkit\Autodesk_Maya_2022_DEVKIT_Windows\devkitBase\devkit\plug-ins\build\helloWorldCmd\Debug
拡張子 .mllファイルはWindowsのDLLですが、Mayaではファイル拡張子として.mllを採用しています。
この拡張子はLinuxでは.so、 macOSでは.bundleになります。

Mayaでプラグインをロードする

Maya を起動してhelloWorldCmd.mllをプラグインとしてロードしてみましょう。
今回は英語GUIのMayaを使用します。
メニューから Window- > Settings Preferences- > Plug-in Manager を選択しPlug-in Managerを開きます。

Maya API入門チュートリアル

BrowseボタンをクリックしてhelloWroldCmd.mllをロードします。
helloWorldCmd.mllはbuild\helloWorldCmd\Debugフォルダにあります。

セキュリティの警告ウィンドウが表示されますが、Allowボタンをクリックしてプラグインのロードを許可します。セキュリティ管理はMaya 2022から採用されました。この警告はMayaに標準で用意されているプラグイン以外をロードする時に表示されます。この挙動に関してはMayaのプリファレンスで設定が可能です。

Maya API入門チュートリアル

Plug-in ManagerのOther Registered Pluginsの項目にhelloWroldCmd.mll表示され、ロードが成功した事が確認できます。プラグイン名右端の"i"アイコンボタンをクリックするとプラグインの情報を確認する事ができます。

Maya API入門チュートリアル

これでコマンドプラグインとしてコマンド名 helloWorld がMayaに登録されました。

プラグインの実行確認

Script Editorを開いてプラグインを実行してみましょう。
Window- > General Editors- > Script Editor を選択します。
MELの入力テキストフィールドに ”helloWorld” と記述します。

Maya API入門チュートリアル

helloWroldの文字列をマウスで選択してExecuteボタンをクリックします。または文字列を選択した状態でCtrl+Enterにより実行する事ができます。
結果はScript Editorのヒストリフィールドに表示されます。"helloWrold"と表示されればプラグインの実行は成功です。このコマンドプラグインは通常のMELコマンドのように使用する事ができます。

helloWorldCmd.cppのソースコードを確認すると、coutを使って”Hello World”の文字列を出力しています。

Maya API入門チュートリアル

MayaのOutput Windowにプラグインの出力した文字列 “Hello World”が表示されます。
Maya 2022でOutput Windowを開くには、メインメニューから Window->Output Windowを選択して開いてください。
またはMELコマンド "outputWindow"を実行してください。

今回はサンプルソースコードの中からシンプルなコマンドプラグインをビルドして実行を試しました。
コマンドプラグインの詳細については次回以降に解説したいと思います。

製品購入に関するお問い合わせ
オートデスク メディア&エンターテインメント 製品のご購入に関してご連絡を希望される場合は、こちらからお問い合わせください。