17.プラグイン
MikuMikuMovingのプラグイン
開発に必要なソフトウェア
Microsoft Visual C# 2010 Express もしくはこれに準じるソフトウェア
必要環境
Windows XP以降
.NET Framework 2.0
DirectX 9.0c Runtime 2010 Feb以降 (SDKは必要ありません)
現在MikuMikuMovingで用意されているプラグインは下の2種類です。
また上記プラグインに、以下のような特定の機能を追加することができます。
これらのプラグインでは、モデル、アクセサリ、エフェクト、カメラやライトに対して、キーフレーム操作やモーション操作等が可能です。
MMM内部のオブジェクトには、Scene オブジェクトを使用してアクセスします。
Sceneオブジェクト
Sceneオブジェクトを使って、MMM内部の様々なオブジェクトにアクセスすることができます。
Sceneオブジェクトは下記のような構造を持っています。
各要素に対して可能な操作については、クラスライブラリを参照してください。
Scene
+ モデル
+ 材質
+ 表示枠
+ ボーン
+ レイヤ
+ キーフレーム
+ プロパティ
+ キーフレーム
+ アクセサリ
+ レイヤ
+ キーフレーム
+ エフェクト
+ キーフレーム
+ カメラ
+ レイヤ
+ キーフレーム
+ ライト
+ キーフレーム
+ 全体プロパティ
+ キーフレーム
+ 字幕
+ オーディオ
+ ブックマーク
+ スクリーンオブジェクト (後述)
コマンドプラグイン
コマンドプラグインでは、ICommandPlugin インターフェースを実装する必要があります。
Runメソッド内に、プラグインの処理を記述します。
なお、コマンドプラグインはRunメソッド内で処理を完結する必要があります。
Runメソッド内で、フォームなどの別メソッドを作成した処理は保証されません。
常駐型プラグイン
常駐型プラグインでは、IResidentPlugin インターフェースを実装する必要があります。
Initializeメソッドにて、初期化処理を、
Updateメソッドにて、毎フレーム実行される処理を記述します。
また、プラグインが有効化されたときの処理を Enabledメソッドに、無効化されたときの処理を記述します。
常駐型プラグインでは、Sceneオブジェクトから取得する情報はUpdate内で完結させる必要があります。
Updateが終わって次のUpdateが開始されるまでの間に、ユーザーによりモデルやキーフレームが追加/削除されることがあるからです。
MMM内部データについては、ローカルに保持しないようにしてください。
ScreenObject
ScreenObjectを使用すると、MMMのスクリーン上に、画像を配置し、マウスイベントを取得することができます。
画像は2D位置(スクリーン上)、3D位置(三次元空間内)に置くことができます。
Initializeメソッド内でScreenObjectインスタンスを生成し、Scene.ScreenObject.Add メソッドで追加します。
作成したScreenObjectを破棄は、プラグイン内で行ってください。
プロジェクトへの保存
プラグインのデータをプロジェクトに保存するには、ICanSavePluginインターフェースを実装する必要があります。
OnSaveProjectで保存データをStreamとして返し、
OnLoadProjectでStreamから保存データを受け取ります。
なお、どちらのメソッドでもStreamはDisposeする必要はありません。
プロパティ/メソッド
void OnLoadProject(Stream)
Stream OnSaveProject()
説明
プロジェクトが読み込まれたときに呼ばれます。
StreamはDisposeする必要はありません。
プロジェクトが保存されるときに呼ばれます。
StreamはDisposeする必要はありません。
プラグインのユーザーコントロール
プラグインはユーザーコントロールを持つことができます。
IHaveUserControlインターフェースを実装する必要があります。
ユーザーコントロールは、CreateControlメソッドにて生成するようにしてください。
プロパティ/メソッド
UserControl CreateControl()
説明
プラグイン独自のユーザーコントロールをここで生成します。
作成されたユーザーコントロールは、MMM上でプラグイン画面に表示されます。
Microsoft Visual C# 2010 Express によるプラグイン作成手順(簡易)
1. "クラスライブラリ"テンプレートにて新規にプロジェクトを作成します。
2. 以下のアセンブリ参照を追加します。
- DxMath (MikuMikuMoving付属)
- MikuMikuPlugin (MikuMikuMoving付属)
- System.Drawing
- System.Windows.Forms
その他不要なアセンブリを削除し、必要に応じてアセンブリを追加します。
3. コマンドプラグインの場合はICommandPlugin、常駐型プラグインの場合はIResidentPluginインターフェースを持つクラスを作成します。
4. 必要なプロパティとメソッドを記述します。
5. ビルドして生成されたDLLファイルを、MikuMikuMovingのPluginsフォルダに置きます。