VMDモーションファイルの仕様変更について

x64版の MikuMikuDance.exe、「Ver7.39.x64」のリリースと同時に、VMD モーションファイルの出力フォーマットに変更があったようなので、いまさらですが現時点での調査結果をさくっと報告。

→(2013-06-01追記) MikuMikuDance Ver7.39m もx64版と同様、出力するVMDモーションファイル仕様に変更があることを確認しました。
→(2013-06-09追記) MikuMikuDance Ver7.40 のリリースと共に、モデル表示とIK追従のオンオフを記録する仕様が新たにVMDに追加されました。(参考URL: 「とある工房」http://kkhk22.seesaa.net/article/365566628.html)

調査対象:

MMD配布元:VPVP http://www.geocities.jp/higuchuu4/

  • MikuMikuDance Ver7.39dot (配布ZIPのサイズ:5,367,048)
  • MikuMikuDance Ver7.39.x64 (配布ZIPのサイズ:5,423,541)

過去に配布されていたx64版バイナリ(2012年11月頃)

  • MikuMikuDance Ver7.39.x64 (配布ZIPのサイズ:5,443,071)

旧仕様

Ver7.39dot までの MikuMikuDance.exe では、VMD モーションファイルの出力に際して、ボーンモーションのベジェ補間パラメータ16byte が格納された後、先頭数バイトが欠損したベジェ補間パラメータのコピーが3回繰り返され(16×3byte)、欠損した箇所と反対側末尾には 0x01, 0x0100, 0x010000 が詰めパッドとして埋められていました。

参考資料:

新仕様

Ver7.39.×64 では、各所に埋められる詰めパッドの先頭が 0x01 でなく 0x00 になった模様です。

サンプル

Ver7.39.×64を 用いて、ダミーボーンモデル読み込み直後にボーン01を初期状態のままフレーム10でフレーム登録したデータをモーション保存。

アドレス 0x00000065 の 0x14 で始まる 64byte が、ベジェ補間パラメータ格納部です。Ver7.39dot までは赤字の箇所が 0x01 でした。

(↓クリックで拡大)

mmdbin

提言:

VMD モーションファイルを読み込むツールは、ボーンモーションの補間パラメータ 64byte を読む際、先頭 16Byte だけ読み込み、後の 48Byte は無条件に読み飛ばしてしまっていいんじゃないでしょうか。

Vmd2XML 1.101.2 はまだ対応できていませんね、はい、神経質な実装ですみません。

VMD モーションファイルを書き出すツールは、もうしばらくの間、旧仕様通りに欠損パラメータのコピーと 0x01 で始まる詰めパッドを出力しておいたほうがよいのではと思います。が、どうなんでしょう、各モーションツールでの読み込み時の対応具合は。


広告

タグ: ,