※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

ファイルフォーマット

VMDファイルとBVHファイルの差異については各ページを参照。
VMDファイルフォーマット
BVH(SL用)ファイルフォーマット

セカンドライフのアニメーションとして使用する場合、ファイルに収録するフレームに制約がある。
  • 先頭フレームにモーションを登録しても再生されない。
    • 先頭フレームはブランクデータを挿入し、実際のモーションは第2フレームから記述する。
  • 1ファイルに収録できるフレームは900が上限
    • 先頭フレームがブランクであるため、実際には899フレームまでしか保存できない。
    • ファイルを分割する場合は899フレーム毎に分割し、それぞれの先頭にブランクフレームを挿入する。

角度

BVHファイルでは度を単位としたオイラー角で角度を扱うが、MMDではクォータニオンで回転角を保持している。
クォータニオン→変換行列→オイラー角の順に変換を行う。
クォータニオンから変換行列を生成する
変換行列からオイラー角を取り出す

この時点で得られる角度はラジアンであるため、180 / PI を掛けて、度に変換する。
double degree = radian * 180.0 / Math.PI;

座標系

画面上ではセカンドライフもMMDも右手座標系だが、MMDのデータは左手座標系になっている。
このため最終的にBVHへ出力する前に、左手系から右手系への変換を行う必要がある。
右⇔左手座標系変換

骨格

セカンドライフのアバターの骨格を基準に、ボーンの対応をまとめる。
セカンドライフ PMD(初音ミクの場合) 補足
Hip センター・下半身 センターボーンの回転に下半身の回転を掛ける。
Abdomen 上半身
Chest (なし) MMDでは該当するボーンがないので、(0, 0, 0)とする。
Neck
Head
LCallar 左肩
LShldr 左腕 MMDでは回転しない状態で約30度、腕が下がっている。
LForeArm 左ひじ
LHand 左手首
RCallar 右型
RShldr 右腕 MMDでは回転しない状態で約30度、腕が下がっている。
RForeArm 右ひじ
RHand 右手首
LThigh 左足
LShin 左ひざ
LFoot 左足首
RThigh 右足
RShin 右ひざ
RFoot 右手首