OpenMayaの概略とコンパイル・実行の方法
MAYA API の種類
OpenMayaと呼ばれているMAYAのAPI(Aplication Programming Interface)には以下のものがある。
- OpenMaya
- 基本的なクラスを集めたライブラリ
- OpenMayaUI
- ユーザーインターフェイス(GUI)を作るためのライブラリ
- OpenMayaAnim
- アニメーションのためのライブラリ(デフォーマーやインバース・キネマティクスなど)
- OpenMayaFX
- ダイナミクスをあつかうためのライブラリ
- OpenMayaRender
- レンダリングを行うためのライブラリ
これらのAPIを使用してプラグインとアプリケーションを作ることができる。
コンパイル方法と実行(WindowsNT, Visual C++)
まず、最初に簡単なプログラム(helloWorld.cpp)をコンパイルして、プラグインとして読み込めるようにしてみよう。
- 設定
プラグインをつくるためにVisual C++の設定を行う。
- 新しいプロジェクトを作る。
-
- Projects tab を選ぶ
- Win32 Dynamic-Link Library を選択
- プロジェクトのディレクトリを指定
- OKボタンを押す
- プロジェクトにファイル(プログラムソース)を追加する。
-
- ファイルのディレクトリとファイル名(helloWorld.cpp)を指定
- OKボタンを押す
- 新たなマクロとインクルードファイルのパスを追加する。
-
- 設定の対象を"全ての構成"(All Configurations)にする
- C/C++ tab を選ぶ
- カテゴリ(Category box) でプリプロセッサー(select Preprocessor)を選ぶ
- NT_PLUGIN をプリプロセッサの定義(Preprocessor definitions list)に加える
- インクルードファイルのパスにincludeファイルのディレクトリを追加する。
- OKボタンを押す
- ライブラリを追加する。
-
- 設定の対象を"全ての構成"(All Configurations)にする
- リンク(Link tab)を選ぶ
- カテゴリ(Category box) で"一般"(General)を選ぶ
- オブジェクト/ライブラリモジュールにFoundation.lib と OpenMaya.lib をライブラリに加える
- OKボタンを押す
- ランタイムライブラリーを設定。
-
- 設定の対象を"全ての構成"(All Configurations)にする
- Settings For box で C/C++ tab を選ぶ
- カテゴリ(Category box)で"コード生成"(Code Generation)を選ぶ
- 使用するランタイムライブラリ(Use run-time library box)で"マルチスレッド(DLL)"(Multithreaded DLL)を選ぶ
- OKボタンを押す
- プラグインのエントリーポイントをエクスポートする。
-
- 設定の対象をWin32 Debugにする
- リンク(Link tab)を選ぶ
- プロジェクトオプション(Project Options box)に
/export:initializePlugin /export:uninitializePlugin
を追加
- 設定の対象をWin32 Releseにする
- 同じくプロジェクトオプション( Project Options box)に
/export:initializePlugin /export:uninitializePlugin
を追加
- OKボタンを押す
- プラグインファイルの拡張子を変更する。
-
- リンク(Link tab)を選ぶ
- 設定の対象をWin32 Debugにする
- カテゴリ(Category box) で"一般"(General)を選ぶ
- 出力ファイル名(Output file name)の拡張子を.mllに変更
- 設定の対象をWin32 Releseにする
- 出力ファイル名(Output file name)の拡張子を.mllに変更
- OKボタンを押す
- 変更点をセーブする。
- プログラムをエディタで書く。
#include <maya/MSimple.h>
#include <maya/MPxCommand.h>
DeclareSimpleCommand( helloWorld, "Alias|Wavefront", "2.0");
MStatus helloWorld::doIt( const MArgList& )
{
MPxCommand::setResult(MString("Hello World !!\n"));
return MS::kSuccess;
}
- ビルドする。
- で Debug か Release かを選ぶ
-
または、F7
- helloWorld.mllというプラグインが作られる。
- MAYAにプラグインとして読み込ませる。
以下のどちらかの方法で読み込む。
- プラグイン・マネージャによって読み込む。
- MELコマンドによって読み込む。
MAYA_PLUG_IN_PATHに指定してあるディレクトリからの場合は以下のコマンドで読み込む。
loadPlugin "helloWorld";
- 実行する。
コマンドラインまたはScriptエディターから以下のように打ち込んで実行する。
helloWorld
コマンドラインからのコンパイル方法
以下のバッチファイルを実行することによってコンパイルできる。
include(/I)やlib(/LIBPATH)のパスは適宜、定義し直すこと。
set prog=helloWorld
cl /nologo /MTd /W3 /Gm /GX /ZI /Od /I "c:\aw\maya2.5\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "STRINGS_EXPORTS" /D "NT_PLUGIN" /Fp".\%prog%.pch" /YX /Fo".\\" /Fd".\\" /FD /GZ /c .\%prog%.cpp
link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib foundation.lib openmaya.lib /LIBPATH:"c:\aw\maya2.5\lib" /export:initializePlugin /export:uninitializePlugin /nologo /dll /incremental:no /pdb:".\%prog%.pdb" /machine:I386 /out:".\%prog%.mll" /implib:".\%prog%.lib" .\%prog%.obj
コンパイル方法と実行(UNIX)
- プログラム(helloWorld.cpp)をエディタで書く。
#include <maya/MSimple.h>
DeclareSimpleCommand( helloWorld, "Alias|Wavefront", "2.0");
MStatus helloWorld::doIt( const MArgList& )
{
printf("Hello World\n");
return MS::kSuccess;
}
- コンパイルする。
- IRIX
# CC -n32 -c -I/usr/aw/maya/include -o helloWorld.o helloWorld.cpp
# CC -n32 -shared -no_transitive_link -o helloWorld.so helloWorld.o -L/usr/aw/maya/lib -lOpenMaya
- Linux
# c++ -shared -O3 -pipe -mpentiumpro -D_BOOL -DLINUX -I/usr/aw/maya/include -L/usr/aw/maya/lib -o helloWorld.so helloWorld.cpp -lOpenMaya
- helloWorld.so というファイルが作られる。
- MAYAにプラグインとして読み込ませる。
- プラグイン・マネージャによって読み込む。
- MELコマンドによって読み込む。
loadPlugin "helloWorld";
MAYAのプラグインはMAYA_PLUG_IN_PATHに設定してあるディレクトリの中から読み込まれる。
helloWorldプラグインを読み込む時は、helloWorld.so というファイルを探して読み込む。
- 実行する。
コマンドラインまたはScriptエディターから以下のように打ち込んで実行する。
helloWorld
参考
Prev | Next
Home | Contents
abe@injapan.net