概要

VMD(Vocaloid Morion Data)ファイルはMMDのモーションデータを定義するファイル。
以下の特徴を持つ。
  • バイナリ形式
  • 固定長レコード
  • 左手座標系(データは左手座標系。MMDの画面表示は右手座標系。)
  • 骨格情報を含まず、モーションに関する情報のみが収録されいる
    • 骨格情報はPMDファイルから取得する必要がある。
  • モーションデータは、ボーン・キーフレーム単位で記録している。
  • ボーンの回転角はクォータニオンで記録している。

フォーマット

サイズ(バイト) 内容 補足
50 ヘッダ
4 モーションレコード数 以降に続くモーションデータの件数
111 × レコード数 モーションデータ ボーンとフレーム毎に記録
4 スキンレコード数 以降に続くスキンデータの件数
23 × レコード数 スキンデータ フレーム毎に記録
4 カメラレコード数 以降に続くカメラデータの件数
61 × レコード数 カメラデータ フレーム毎に記録
4 照明レコード数 以降に続く照明データの件数
28 × レコード数 照明データ フレーム毎に記録
4 シャドウレコード数 以降に続くシャドウデータの件数
9 × レコード数 シャドウデータ フレーム毎に記録

ヘッダ

サイズ(バイト) 内容 補足
30 char ファイルシグネチャ "Vocaloid Motion Data 0002"
20 char モデル名 "初音ミク"など

モーションデータ

  • 1レコード=111バイト
  • VMDに含まれるキーフレーム数だけ繰り返し記録される。

サイズ(バイト) 内容 補足
15 char ボーン名 "センター"、"左肩"など
4 int フレームNo.
4 float Position X ボーンの位置座標 X
4 float Position Y ボーンの位置座標 Y
4 float Position Z ボーンの位置座標 Z
4 float Rotation X ボーンの回転クォータニオン X
4 float Rotation Y ボーンの回転クォータニオン Y
4 float Rotation Z ボーンの回転クォータニオン Z
4 float Rotation W ボーンの回転クォータニオン W
64 byte 補間データ キーフレーム間のモーションを算出するためのパラメタ

モーションデータ・補間パラメタについて

(0, 0) - (ax, ay) - (bx, by) - (127, 127)でベジェ曲線を表す。
  • X軸の補間パラメタ (X_ax, X_ay), (X_bx, X_by)
  • Y軸の補間パラメタ (Y_ax, Y_ay), (Y_bx, Y_by)
  • Z軸の補間パラメタ (Z_ax, Z_ay), (Z_bx, Z_by)
  • 回転の補間パラメタ (R_ax, R_ay), (R_bx, R_by)

この時の補間パラメタを次の順で記録する。
X_ax, Y_ax, Z_ax, R_ax, X_ay, Y_ay, Z_ay, R_ay, X_bx, Y_bx, Z_bx, R_bx, X_by, Y_by, Z_by, R_by,
Y_ax, Z_ax, R_ax, X_ay, Y_ay, Z_ay, R_ay, X_bx, Y_bx, Z_bx, R_bx, X_by, Y_by, Z_by, R_by, 01,
Z_ax, R_ax, X_ay, Y_ay, Z_ay, R_ay, X_bx, Y_bx, Z_bx, R_bx, X_by, Y_by, Z_by, R_by, 01,   00,
R_ax, X_ay, Y_ay, Z_ay, R_ay, X_bx, Y_bx, Z_bx, R_bx, X_by, Y_by, Z_by, R_by, 01,   00,   00

スキンデータ

セカンドライフでは利用しないので割愛。

カメラデータ

セカンドライフでは利用しないので割愛。

照明データ

セカンドライフでは利用しないので割愛。

シャドウデータ

セカンドライフでは利用しないので割愛。
最終更新:2013年07月30日 13:48