アニメーション
このセクションでは、MMDアニメーションデータの再生と評価方法について説明します。
MMDアニメーションストレージフォームと評価/バインディングコンポーネント
MMDアニメーションデータは主にMmdAnimationオブジェクトとして表現されます。
しかし、さまざまなフォームに変換して保存することができ、フォームに応じて評価とバインディングのメソッドが異なります。
MMDアニメーションデータを保存するさまざまなフォームは以下の通りです:
| ストレージフォーム | 説明 |
|---|---|
MmdAnimation | MMDアニメーションデータをそのまま保存する基本フォーム |
MmdWasmAnimation | MmdWasmRuntimeでの高速化のためのMMDアニメーションデータのフォーム |
MmdAnimationCameraContainer | MMDアニメーションデータをBabylon.jsのAnimationオブジェクト**(カメラ用)**に変換したフォーム |
MmdAnimationModelContainer | MMDアニメーションデータをBabylon.jsのAnimationオブジェクト**(モデル用)**に変換したフォーム |
AnimationGroup | MMDアニメーションデータをBabylon.jsのAnimationGroupオブジェクトに変換したフォーム |
MmdCompositeAnimation | 複数のMMDアニメーションデータを組み合わせたフォーム |
保存されたMMDアニメーションデータをモデルやカメラに適用するには、評価とバインディングプロセスが必要です。
アニメーション適用プロセスは2つの主要なステップに分けることができます:評価とバインディングです。
- 評価:特定の時間tに対してMMDアニメーションデータを評価し、各ボーンとモーフターゲットの変換と重みの値を計算します。
- バインディング:評価された値をモデルのボーンとモーフターゲットに適用します。
- 評価されたアニメーション状態は2つの要素に反映されます:
- モデルの
BoneのpositionとrotationQuaternionプロパティを評価された値に設定 - モデルの
MmdMorphControllerのsetMorphWeightFromIndexメソッドを適切に呼び出してモーフターゲットの重みを設定
- モデルの
- 評価されたアニメーション状態は2つの要素に反映されます:
これらの評価とバインディングプロセスを実行するコンポーネントは、アニメーションのストレージフォームによって異なります。
評価とバインディングのコンポーネントは以下の通りです:
| ストレージフォーム | 評価コンポーネント | バインディングコンポーネント |
|---|---|---|
MmdAnimation | MmdRuntimeCameraAnimation MmdRuntimeModelAnimation | MmdRuntimeCameraAnimation MmdRuntimeModelAnimation |
MmdWasmAnimation | MmdRuntimeCameraAnimation MmdWasmRuntimeModelAnimation または MmdRuntimeModelAnimation | MmdRuntimeCameraAnimation MmdWasmRuntimeModelAnimation または MmdRuntimeModelAnimation |
MmdAnimationCameraContainer MmdAnimationModelContainer | MmdAnimationCameraContainer MmdAnimationModelContainer | MmdRuntimeCameraAnimationContainer MmdRuntimeModelAnimationContainer |
AnimationGroup | AnimationGroup | AnimationGroup |
MmdCompositeAnimation | MmdCompositeRuntimeCameraAnimation MmdCompositeRuntimeModelAnimation | MmdCompositeRuntimeCameraAnimation MmdCompositeRuntimeModelAnimation |
MMDアニメーション & MMDランタイムアニメーション
MMDランタイムアニメーションは、babylon-mmdが提供するMMDアニメーション評価とバインディングの基本機能です。
このクラスは、MmdAnimationを評価し、モデルとカメラにバインディングする機能を提供します。
この目的のために以下の2つのクラスを提供します:
MmdRuntimeModelAnimation:MMDモデルにアニメーションを適用するクラスMmdRuntimeCameraAnimation:MMDカメラにアニメーションを適用するクラス
このメソッドは、MMDアニメーションを再生する最も基本的な方法であり、優れたパフォーマンスを提供します。
詳細については、MMD Animationドキュメントを参照してください。
MMD WASMアニメーション & MMD WASMランタイムアニメーション
MMD WASMランタイムアニメーションは、WebAssemblyで実装されたMMDアニメーション評価とバインディング機能です。
このクラスは、MmdWasmAnimationを評価し、モデルにバインディングする機能を提供します。
このメソッドは、MMDアニメーションを再生する方法の中で最高のパフォーマンスを提供します。
詳細については、MMD Animationドキュメントを参照してください。
MMD AnimationContainer & MMD Runtime AnimationContainer
MMD AnimationContainerは、Babylon.jsのAnimationを使用してMMDアニメーションを評価し、モデルとカメラにバインディングする機能を提供します。
バインディングを可能にするために、MmdCameraAnimationContainerとMmdModelAnimationContainerクラスのランタイムが提供されます:
MmdRuntimeModelAnimationContainer:MMDモデルにアニメーションを適用するクラスMmdRuntimeCameraAnimationContainer:MMDカメラにアニメーションを適用するクラス
このメソッドの利点は、Babylon.jsのアニメーションコンテナシステムを活用できることです。
詳細については、Use Babylon.js Animation Runtimeドキュメントを参照してください。
Babylon.js AnimationGroup
Babylon.jsのAnimationGroupを使用して、MMDアニメーションのすべての評価とバインディングを処理できます。
この目的のために、babylon-mmdはMmdAnimationをAnimationGroupに変換するMmdModelAnimationContainer.createAnimationGroupメソッドを提供します。
このメソッドの利点は、Babylon.jsのアニメーションシステムを完全に活用できることです。
詳細については、Use Babylon.js Animation Runtimeドキュメントを参照してください。
アニメーションブレンディング
babylon-mmdは、フレーム完璧なMMDアニメーションブレンディングをサポートするアニメーションランタイムを提供します。
この目的のために、MmdCompositeAnimationアニメーションコンテナクラスが提供され、それを評価とバインディングするためにMmdCompositeRuntimeCameraAnimationとMmdCompositeRuntimeModelAnimationクラスが提供されます。
詳細については、Animation Blendingドキュメントを参照してください。