表示三维运动的BVH文件格式解析

 
首先来看看什么叫BVH:Biovision hierarchical data,它是在BVA格式的基础上的改进,在动作捕获后,解析出来的。
BVH文件分为2个主要部分:骨架信息和数据块。
骨架信息 按照层级关系,定义了root hip leg等位置和旋转分量,从而形成一个完整的骨架
数据块    对应上面的骨架各部位,标出每帧的数据信息.
 
BVH的骨架信息是以关键字‘HIERARCHY’开头的,紧跟着'ROOT'表示一个根结点,然后是根结点以下的关节'JOINT',然后逐级向下,递归定义父关节以下的子关节。'OFFSET'表示的是子关节相对于父关节的偏移,也可表示对应父关节的长度和方向;当子关节不止一个时,采用第一个子关节的数据。接下来是'CHANNELS',给出了关于channel的个数和名称。很容易发现ROOT总是拥有6个channels,而一般的JOINT只有3个,较之ROOT缺少了XYZ的position信息。这很好解释,因为子关节只需要根据它相对于父关节的偏移就可以算出它在坐标系中的具体位置了。
需要注意的是,rotation channel的顺序是:Zrotation  Xrotation  Yrotation。BVH格式的运动采取的旋转方式比较特别,在解析的过程中要小心。'End Site'表示终结递归,该关节的定义到此为止,可看作一个终端效应器。
数据块以'MOTION'关键字开始,'Frames:' 定义帧数,'Frame Time:'定义数据采样速率-每帧的时间长度,如0.033333则表示BVH文件的一般采样速率,每秒30帧。接下来就是实际的运动数据了,对应骨架信息的层次结构。对于子关节来说,平移信息存储在骨架信息的OFFSET中,旋转信息则来自于MOTION部分;对于根结点来说,平移量是OFFSET和Motion section中定义的平移量之和。BVH不考虑Scale变换。
vR = vYXZ
vM = vMchildMparentMgrandpare nt...?
 
 
下面给出一个具体的BVH文件例子
HIERARCHY
表示三维运动的BVH文件格式解析ROOT  Hips
表示三维运动的BVH文件格式解析{
表示三维运动的BVH文件格式解析  OFFSET  0.00  0.00  0.00
表示三维运动的BVH文件格式解析  CHANNELS  6  Xposition  Yposition  Zposition  Zrotation  Xrotation  Yrotation
表示三维运动的BVH文件格式解析  JOINT  Chest
表示三维运动的BVH文件格式解析  {
表示三维运动的BVH文件格式解析    OFFSET  0.000000  6.275751  0.000000
表示三维运动的BVH文件格式解析    CHANNELS  3  Zrotation  Xrotation  Yrotation
表示三维运动的BVH文件格式解析    JOINT  Neck
表示三维运动的BVH文件格式解析    {
表示三维运动的BVH文件格式解析      OFFSET  0.000000  14.296947  0.000000
表示三维运动的BVH文件格式解析      CHANNELS  3  Zrotation  Xrotation  Yrotation
表示三维运动的BVH文件格式解析      JOINT  Head
表示三维运动的BVH文件格式解析      {
表示三维运动的BVH文件格式解析        OFFSET  0.000000  2.637461  0.000000
表示三维运动的BVH文件格式解析        CHANNELS  3  Zrotation  Xrotation  Yrotation
表示三维运动的BVH文件格式解析        End  Site
表示三维运动的BVH文件格式解析        {
表示三维运动的BVH文件格式解析          OFFSET  0.000000  4.499004  0.000000
表示三维运动的BVH文件格式解析        }
表示三维运动的BVH文件格式解析      }
表示三维运动的BVH文件格式解析    }
表示三维运动的BVH文件格式解析    JOINT  LeftCollar
表示三维运动的BVH文件格式解析    {
表示三维运动的BVH文件格式解析      OFFSET  1.120000  11.362855  1.870000
表示三维运动的BVH文件格式解析      CHANNELS  3  Zrotation  Xrotation  Yrotation
表示三维运动的BVH文件格式解析      JOINT  LeftUpArm
表示三维运动的BVH文件格式解析      {
表示三维运动的BVH文件格式解析        OFFSET  4.565688  2.019026  -1.821179
表示三维运动的BVH文件格式解析        CHANNELS  3  Zrotation  Xrotation  Yrotation
表示三维运动的BVH文件格式解析        JOINT  LeftLowArm
表示三维运动的BVH文件格式解析        {
表示三维运动的BVH文件格式解析          OFFSET  0.219729  -10.348825  -0.061708
表示三维运动的BVH文件格式解析          CHANNELS  3  Zrotation  Xrotation  Yrotation
表示三维运动的BVH文件格式解析          JOINT  LeftHand
表示三维运动的BVH文件格式解析          {
表示三维运动的BVH文件格式解析            OFFSET  0.087892  -10.352228  2.178217
表示三维运动的BVH文件格式解析            CHANNELS  3  Zrotation  Xrotation  Yrotation
表示三维运动的BVH文件格式解析            End  Site
表示三维运动的BVH文件格式解析            {
表示三维运动的BVH文件格式解析              OFFSET  0.131837  -6.692379  1.711456
表示三维运动的BVH文件格式解析            }
表示三维运动的BVH文件格式解析          }
表示三维运动的BVH文件格式解析        }
表示三维运动的BVH文件格式解析      }
表示三维运动的BVH文件格式解析    }
表示三维运动的BVH文件格式解析    JOINT  RightCollar
表示三维运动的BVH文件格式解析    {
表示三维运动的BVH文件格式解析      OFFSET  -1.120000  11.362855  1.870000
表示三维运动的BVH文件格式解析      CHANNELS  3  Zrotation  Xrotation  Yrotation
表示三维运动的BVH文件格式解析      JOINT  RightUpArm
表示三维运动的BVH文件格式解析      {
表示三维运动的BVH文件格式解析        OFFSET  -4.708080  2.034554  -1.821179
表示三维运动的BVH文件格式解析        CHANNELS  3  Zrotation  Xrotation  Yrotation
表示三维运动的BVH文件格式解析        JOINT  RightLowArm
表示三维运动的BVH文件格式解析        {
表示三维运动的BVH文件格式解析          OFFSET  -0.263676  -10.428555  -0.061708
表示三维运动的BVH文件格式解析          CHANNELS  3  Zrotation  Xrotation  Yrotation
表示三维运动的BVH文件格式解析          JOINT  RightHand
表示三维运动的BVH文件格式解析          {
表示三维运动的BVH文件格式解析            OFFSET  0.000000  -10.255345  2.178217
表示三维运动的BVH文件格式解析            CHANNELS  3  Zrotation  Xrotation  Yrotation
表示三维运动的BVH文件格式解析            End  Site
表示三维运动的BVH文件格式解析            {
表示三维运动的BVH文件格式解析              OFFSET  -0.140882  -6.671274  1.711456
表示三维运动的BVH文件格式解析            }
表示三维运动的BVH文件格式解析          }
表示三维运动的BVH文件格式解析        }
表示三维运动的BVH文件格式解析      }
表示三维运动的BVH文件格式解析    }
表示三维运动的BVH文件格式解析  }
表示三维运动的BVH文件格式解析  JOINT  LeftUpLeg
表示三维运动的BVH文件格式解析  {
表示三维运动的BVH文件格式解析    OFFSET  3.910000  0.000000  0.000000
表示三维运动的BVH文件格式解析    CHANNELS  3  Zrotation  Xrotation  Yrotation
表示三维运动的BVH文件格式解析    JOINT  LeftLowLeg
表示三维运动的BVH文件格式解析    {
表示三维运动的BVH文件格式解析      OFFSET  -0.441177  -17.569450  1.695613
表示三维运动的BVH文件格式解析      CHANNELS  3  Zrotation  Xrotation  Yrotation
表示三维运动的BVH文件格式解析      JOINT  LeftFoot
表示三维运动的BVH文件格式解析      {
表示三维运动的BVH文件格式解析        OFFSET  -0.043946  -17.197315  -1.478076
表示三维运动的BVH文件格式解析        CHANNELS  3  Zrotation  Xrotation  Yrotation
表示三维运动的BVH文件格式解析        End  Site
表示三维运动的BVH文件格式解析        {
表示三维运动的BVH文件格式解析          OFFSET  0.000000  -3.933155  5.233925
表示三维运动的BVH文件格式解析        }
表示三维运动的BVH文件格式解析      }
表示三维运动的BVH文件格式解析    }
表示三维运动的BVH文件格式解析  }
表示三维运动的BVH文件格式解析  JOINT  RightUpLeg
表示三维运动的BVH文件格式解析  {
表示三维运动的BVH文件格式解析    OFFSET  -3.910000  0.000000  0.000000
表示三维运动的BVH文件格式解析    CHANNELS  3  Zrotation  Xrotation  Yrotation
表示三维运动的BVH文件格式解析    JOINT  RightLowLeg
表示三维运动的BVH文件格式解析    {
表示三维运动的BVH文件格式解析      OFFSET  0.437741  -17.622387  1.695613
表示三维运动的BVH文件格式解析      CHANNELS  3  Zrotation  Xrotation  Yrotation
表示三维运动的BVH文件格式解析      JOINT  RightFoot
表示三维运动的BVH文件格式解析      {
表示三维运动的BVH文件格式解析        OFFSET  0.000000  -17.140001  -1.478076
表示三维运动的BVH文件格式解析        CHANNELS  3  Zrotation  Xrotation  Yrotation
表示三维运动的BVH文件格式解析        End  Site
表示三维运动的BVH文件格式解析        {
表示三维运动的BVH文件格式解析          OFFSET  0.000000  -4.038528  5.233925
表示三维运动的BVH文件格式解析        }
表示三维运动的BVH文件格式解析      }
表示三维运动的BVH文件格式解析    }
表示三维运动的BVH文件格式解析  }
表示三维运动的BVH文件格式解析}
表示三维运动的BVH文件格式解析MOTION
表示三维运动的BVH文件格式解析Frames:  768
表示三维运动的BVH文件格式解析Frame  Time:  0.04166667
表示三维运动的BVH文件格式解析-0.690203  6.425720  -10.584737  52.229530  -74.102905  54.238834  179.649963  -17.666151  -167.372177  129.716003  46.167301  78.632637  -139.149429  -18.268711  28.597200  13.089351  32.271912  -108.242935  -66.612633  -14.377330  172.605774  127.224365  7.939627  -35.629566  -77.307808  -16.582474  -16.542961  -34.179745  26.302034  121.727943  71.693901  -24.250698  36.331078  122.765602  -3.186730  -170.904297  -118.339615  -23.554710  168.573349  -62.883366  59.182331  0.000000  178.561584  5.510769  -166.239227  156.483154  28.179045  13.528916  -36.220818  -17.497885  15.374095  -136.325714  4.534697  -96.979958  -65.439178  -27.717817  -32.005501  ………………………………………………
****************************************************

参考资料:
http://www.cs.wisc.edu/graphics/Courses/cs-838-1999/Jeff/BVH.html
Motion Capture File Formats Explained.doc
http://www.biovision.com/bvh. html
 
 
摘自: http://blog.sina.com.cn/s/blog_4ae49c20010007ih.html

你可能感兴趣的:(c,File,存储,hierarchy,终端)