概要
VMD(Vocaloid Morion Data)ファイルはMMDのモーションデータを定義するファイル。
以下の特徴を持つ。
- バイナリ形式
- 固定長レコード
- 左手座標系(データは左手座標系。MMDの画面表示は右手座標系。)
- 骨格情報を含まず、モーションに関する情報のみが収録されいる
- モーションデータは、ボーン・キーフレーム単位で記録している。
- ボーンの回転角はクォータニオンで記録している。
フォーマット
サイズ(バイト) |
内容 |
補足 |
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