3Dモーションの再利用性はもっと高まるべき
3DCGのモーションは、基本的にボーンの回転・移動によって構成されている
それらのトランスフォーム情報をキーフレームに書き込み、ランタイムに曲線で補完している
リグが複雑に作られていても、プライマリリグのボーンが、あるキーフレームでワールド空間でどういうトランスフォームにあるかが書いてあればいい
IKもFKとして書き出せばいい
要するにアプリケーションに依存するデータはほぼ無い
モーションは基本的に脊椎動物の骨格で作る
種によって骨格は多少違うが、人間であればプライマリなリグは全く同じと言っていい
こういうのをHumanoidという
Humanoid向けに作られたモーションはスケールがあっていれば、かなり高精度で再利用ができる
MMDでは、モーションデータをvmdという形式でモデルから分離できる
これはとてもシンプルで美しいファイルフォーマットになっている
キーフレームを構成するデータは
ボーン名
XYZ座標(どの空間だろう?ワールド?)
クォータニオン
↑の4要素の補完パラメタ
これは2つのコントロールポイントの三次ベジェ曲線
これだけ
これ以外の仕様がない
驚くべきは、リグに関する情報をまったくもっていないのだ
つまり、データを読み込んでも、自分のモデルのボーン名が違えば動かない
これは一見再利用性を考慮していないように思える
しかし、この開き直りが標準ボーンという概念を生み出し、逆に再利用性が高まった
MMDモデルは基本的に標準ボーンの構成と命名規則によって作られている
実際は厳密な仕様はないのだが、当初から使われていた命名規則が今でも使われている
準標準ボーンというものも存在する
標準ボーン(準標準ボーン)以外のボーンのフレームデータも書き出されるのだが、それらのボーン構成はたいてい完全に一致しないので無視される
それでも標準ボーン(体のプライマリリグ)の命名規則を共有しているおかげで、モーションデータを数多くのモデルで使いまわすことが出来ている
これは、本当にすごいことkeroxp.icon
ダンスモーションを始め、待機モーションや日常動作、戦闘モーションも、配布されていれば自分で作らなくていい
それまでモーションデータはモデルデータに埋め込むものだった
というか今も
Unityのmechanimも、これと全く同じアプローチでHumanoidのモーションデータの再利用性を高めている
AnimatorControllerというステートマシン, アニメーションブレンドなどのゲームに特化した独自のデータも併せ持っているが、モーションデータ自体は個別になっている
ボーン名が違ってもHumanoidとしてセットアップすればちゃんと動くのでディクショナリを作っているだけだろう
まとめ
モーションデータは全部vmdにして公開しよう