メインコンテンツまでスキップ

アニメーション

このセクションでは、MMDアニメーションデータの再生と評価方法について説明します。

MMDアニメーションストレージフォームと評価/バインディングコンポーネント

MMDアニメーションデータは主にMmdAnimationオブジェクトとして表現されます。

しかし、さまざまなフォームに変換して保存することができ、フォームに応じて評価とバインディングのメソッドが異なります。

MMDアニメーションデータを保存するさまざまなフォームは以下の通りです:

ストレージフォーム説明
MmdAnimationMMDアニメーションデータをそのまま保存する基本フォーム
MmdWasmAnimationMmdWasmRuntimeでの高速化のためのMMDアニメーションデータのフォーム
MmdAnimationCameraContainerMMDアニメーションデータをBabylon.jsのAnimationオブジェクト**(カメラ用)**に変換したフォーム
MmdAnimationModelContainerMMDアニメーションデータをBabylon.jsのAnimationオブジェクト**(モデル用)**に変換したフォーム
AnimationGroupMMDアニメーションデータをBabylon.jsのAnimationGroupオブジェクトに変換したフォーム
MmdCompositeAnimation複数のMMDアニメーションデータを組み合わせたフォーム

保存されたMMDアニメーションデータをモデルやカメラに適用するには、評価とバインディングプロセスが必要です。

アニメーション適用プロセスは2つの主要なステップに分けることができます:評価とバインディングです。

  1. 評価:特定の時間tに対してMMDアニメーションデータを評価し、各ボーンとモーフターゲットの変換と重みの値を計算します。
  2. バインディング:評価された値をモデルのボーンとモーフターゲットに適用します。
    • 評価されたアニメーション状態は2つの要素に反映されます:
      • モデルのBonepositionrotationQuaternionプロパティを評価された値に設定
      • モデルのMmdMorphControllersetMorphWeightFromIndexメソッドを適切に呼び出してモーフターゲットの重みを設定

これらの評価とバインディングプロセスを実行するコンポーネントは、アニメーションのストレージフォームによって異なります

評価とバインディングのコンポーネントは以下の通りです:

ストレージフォーム評価コンポーネントバインディングコンポーネント
MmdAnimationMmdRuntimeCameraAnimation

MmdRuntimeModelAnimation
MmdRuntimeCameraAnimation

MmdRuntimeModelAnimation
MmdWasmAnimationMmdRuntimeCameraAnimation

MmdWasmRuntimeModelAnimation または MmdRuntimeModelAnimation
MmdRuntimeCameraAnimation

MmdWasmRuntimeModelAnimation または MmdRuntimeModelAnimation
MmdAnimationCameraContainer

MmdAnimationModelContainer
MmdAnimationCameraContainer

MmdAnimationModelContainer
MmdRuntimeCameraAnimationContainer

MmdRuntimeModelAnimationContainer
AnimationGroupAnimationGroupAnimationGroup
MmdCompositeAnimationMmdCompositeRuntimeCameraAnimation

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アニメーションを評価し、モデルとカメラにバインディングする機能を提供します。

バインディングを可能にするために、MmdCameraAnimationContainerMmdModelAnimationContainerクラスのランタイムが提供されます:

  • MmdRuntimeModelAnimationContainer:MMDモデルにアニメーションを適用するクラス
  • MmdRuntimeCameraAnimationContainer:MMDカメラにアニメーションを適用するクラス

このメソッドの利点は、Babylon.jsのアニメーションコンテナシステムを活用できることです。

詳細については、Use Babylon.js Animation Runtimeドキュメントを参照してください。

Babylon.js AnimationGroup

Babylon.jsのAnimationGroupを使用して、MMDアニメーションのすべての評価とバインディングを処理できます。

この目的のために、babylon-mmdはMmdAnimationAnimationGroup変換するMmdModelAnimationContainer.createAnimationGroupメソッドを提供します。

このメソッドの利点は、Babylon.jsのアニメーションシステムを完全に活用できることです。

詳細については、Use Babylon.js Animation Runtimeドキュメントを参照してください。

アニメーションブレンディング

babylon-mmdは、フレーム完璧なMMDアニメーションブレンディングをサポートするアニメーションランタイムを提供します。

この目的のために、MmdCompositeAnimationアニメーションコンテナクラスが提供され、それを評価とバインディングするためにMmdCompositeRuntimeCameraAnimationMmdCompositeRuntimeModelAnimationクラスが提供されます。

詳細については、Animation Blendingドキュメントを参照してください。