アニメーション
このセクションでは、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ドキュメントを参照してください。