【譯】BVH,Biovision hierarchy 關於BVH 檔案型別
這是一篇翻譯,因為要了解一些BVH,看到一篇文章還不錯,也不長,就邊翻譯邊記錄一下吧。
原文連結: http://www.mindfiresolutions.com/BVH-biovision-hierarchy.htm
原文作者:Manjunath
背景:
原文作者要將動畫資料匯出到 .bvh檔案中,沒有相關的SDK來寫bvh檔案,所以他就寫了一個C++來匯出animation data到bvh的程式碼。
BVH 介紹
BVH是一種動畫格式,使用ROOT,JOINTS,OFFSET等術語來儲存動畫資料。
BVH 格式
【一張鬼畜的圖,不說這個圖魔性的時候都看不出來靈魂畫手畫的是啥。】
BVH Sample File
下面給出了一個非常簡單的bvh檔案的內容
—————————————— bvh sample ————————————————————————
HIERARCHY ROOT Neck { OFFSET 0.000000 0.000000 0.000000 CHANNELS 6 Xposition Yposition Zposition Zrotation Xrotation Yrotation JOINT Head { OFFSET 0.200000 0.400000 0.500000 CHANNELS 3 Zrotation Xrotation Yrotation End Site { OFFSET 0.600000 8.000000 2.000000 } } } MOTION Frames: 1 Frame Time: 0.040000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
BVH的詳細介紹
一個bvh檔案包含兩個部分:Hierarchy 和 Motion
1. Hierarchy 骨骼層次
- BVH 檔案以 HIERARCHY 關鍵詞開始,這個部分包含了Root 根節點 和 Joints 骨骼。 以及他們的channels。(注:這個channels和Assimp中的channels是一個概念,但是我說不出來具體是啥!)
- Root 節點同時包含 Position channels 和 Rotation channels,我理解的是根骨骼是控制人體整個的運動,因此是可以有平移,也有旋轉的變換的。
- 而Joint 骨骼 只有 Rotation channels,除了Root骨骼之外的,只能有旋轉變換。
2. Motion 運動資料相關內容
- 這個部分包含了動畫相關的資料,包括了 Frames:幀數,Frame Time: 幀率, 以及最重要的運動資料。每一行運動資料代表了一個,完整的幀,有所有骨骼的當前幀的運動資料。
- 一行運動資料 = Root channels + Joint channels
so,根據上面的 bvh 檔案樣例, 我們可以將運動資料和骨骼相對映:如下:
Neck Neck Neck Neck Neck Neck Head Head Head
X pos Y pos Z pos Z rot X rot Y rot Z rot X rot Y rot
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
BVH 使用的關鍵詞(Legends,i _ i 這樣譯感覺有點怪)
- HIERARCHY : 第一部分開始的宣告
- Root: 根骨骼
- Joint: 子骨骼
- Channels: 一個 Root 或 Joint的 channel(position ,rotation)的數量
- Offset: 子骨骼到父骨骼的偏移量,包含了長度和方向資訊。
- End Site: 一個骨骼資訊的結束標識
- MOTION: motion部分的開始宣告
- FRAMES: 幀數
- Frame Time: 資料的取樣率,幀率吧
原始碼(未驗證)就不貼了,貼出來格式就亂,見原文
參考文獻