スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

BVHの仕様について

せっかくボーン姿勢をXYZ座標にできたところでほかのモーションソフトで弄れないと意味がない。
フォーマットを何にするか考えてみたがエルフレイナでモーション作成する予定だったので読み込めるBVHにすることにした。
BlenderはBVHの読み込みも書き込みもあるし、丁度いいかもしれない。

さっそくフォーマット仕様を調べることにした。


~BVHフォーマットの仕様のまとめ~

・テキスト形式である
・右手系座標で軸は任意
・関節ノードに関する情報を記述
・関節回転はオイラー角で記述
・角度の単位はDegree
・HIERARCHY部=キャラクタのスケルトン断層構造を記述
・MOTION部=動きのデータを記述
・#や//や/**/でのコメントの書き込みは不可能



HIERARCHYをちょっと掘り下げる


・JOINT(必ず子を持つ)要素はOFFSETとCHANNELS

・ROOT(始点となる特殊なJOINT)要素はOFFSETとCHANNELS

・END(終点になり子を持たない特殊なJOINT)要素はOFFSET

・OFFSET(親ノードからJOINTへの3次元オフセット成分)XYZの順で記述
ROOTノードの場合は初期位置を指す

・CHANNELS(関節の自由度、位置の自由度、回転の自由度の順で定義)


例) コメントは本来NG

HIERARCHY//今からスケルトン構造を書き出すよ~
ROOT root_name//ROOTノードの名前は「root_name」です
{
//このROOTノードの位置は(0,0,0)です
OFFSET 0 0 0
//XYZ軸に関する位置、X-Y-Z順で合成されるのオイラー角回転の計6つの自由度を持つ
CHANNELS 6 Xposition Yposition Zposition Xrotation Yrotation Zrotation

End Site//子のJOINTはEND1個だけ 名前は「Site」
{
OFFSET 0 10 0//Siteの位置
}
}


予想できると思うがJOINTの親と子の記述は以下
1-2-3
の場合は
ROOT 1
{
     JOINT 2
     {
          END 3
          {
          }
     }
}
となり

  2
1<
  3
の場合は
ROOT1
{
     END 2
     {
     }
     END 3
     {
     }
}
のように記述すればOK

続いてMOTION部分の記述について触れてみる
・Frames: N(記述する総フレーム数)
・Frame Time: SPF(フレームあたりの時間長 FPSの逆数)

例)
MOTION//ここから動作の記述がはじまりますよっと
Frames: 100//モーションは100フレームあります
Frame Time: 0.033//1フレーム0.033second/sec
0 0 0 0 0 0 0 0 0 // フレーム1のスケルトンの姿勢
0 0 0 0 0 0 0 0 0 // フレーム2のスケルトンの姿勢

0 0 0 0 0 0 0 0 0 // フレーム100のスケルトンの姿勢


姿勢情報の見方は次の通りになる
左から順にファイル冒頭からでてくるCHANNELSに割り当てられた要素とリンクする
ROOT root_name
 {
     OFFSET 0 0 0
     CHANNELS 3 ここA ここB ここC
     JOINT joint1
     {
          OFFSET 0 10 0
          CHANNELS 1 ここD
          End Site
          {
               OFFSET 0 10 0
          }
     }
}

だとすると姿勢情報は
A B C Dの順になる

(注意)この後日に書いた記事でこの順に関しての訂正があります
流用を考えている方は必ずその記事をチェックしてください


BVH自体はテキスト形式でOKらしいので仕様が理解できてしまえば扱うのは楽そうなイメージだ。
適当なBVHソースをコピーして自前でC#から作ったものをエルフレイナに読ませたらあっさり読み込めた。
いい感じだ。

角度がオイラー角というもので扱うらしいのだが何のことをいっているのかわからない。
また数学しなきゃいけないかもしれない・・・

ねよっと。

コメントの投稿

非公開コメント

プロフィール

あしゅ

Author:あしゅ
ぷぃぷぃ日常。
いつのまにか雑記ブログに。

カテゴリ
最新記事
検索フォーム
最新コメント
リンク
このブログをリンクに追加する
ブロとも申請フォーム

この人とブロともになる

カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。