本人Mocap小白。文中如有错误之处,请大佬们监督指正。
1.BVH格式
BVH文件格式最初是由运动捕捉服务公司Biovision开发的,是一种向其客户提供运动捕捉数据的方法。BVH格式是一种出色的全能格式,唯一的缺点:是缺乏基本姿势的完整定义(此格式仅具有子片段与其父片段的平移偏移量,没有定义旋转偏移量),也缺少明确的信息如何绘制线段,但与运动的定义无关。
1.1解析文件
BVH由两部分组成。
1.标题部分
这一部分主要包含的是骨骼的层次结构和初始姿势。
简单示例如下:
'''这是从一个BVH文件的标题部分截选的右下腿数据'''
HIERARCHY #标题部分的开头以关键字“ HIERARCHY”开头
ROOT Hips #ROOT为关键字
{
#OFFSET代表偏移量,根结点的偏移量为0
OFFSET 0.00 0.00 0.00
#CHANNELS 代表着是通道的个数,以及通道类型的标签。
CHANNELS 6 Xposition Yposition Zposition Zrotation Xrotation Yrotation
#这是一种层次结构的定义方法
JOINT RightUpLeg
{
OFFSET -3.91 0.00 0.00
CHANNELS 3 Zrotation Xrotation Yrotation
JOINT RightLowLeg
{
OFFSET 0.00 -17.63 0.00
CHANNELS 3 Zrotation Xrotation Yrotation
JOINT RightFoot
{
OFFSET 0.00 -17.14 0.00
CHANNELS 3 Zrotation Xrotation Yrotation
End Site #End Site 指示当前片段是最终执行器(无子级)
{
OFFSET 0.00 -3.75 0.00
}
}
}
}
}
注解1:OFFSET偏移量的作用?
OFFSET是该片段与其父片段的X,Y和Z偏移量。偏移信息还指示用于绘制父段的长度和方向。在BVH格式中,没有关于应该如何绘制线段的任何明确信息。这通常是从为父级定义的第一个子级的偏移量推断出来的。
注解2:在CHANNELS那一行有一点很奇怪,为什么rotation的顺序是Z->X->Y?
因为BVH格式使用了某种不同寻常的旋转顺序。按此顺序将数据元素放入数据结构。
2.数据部分
这一部分主要包含的就是运动的数据了。
示例如下:
MOTION
Frames: 2 #表示帧数
Frame Time: 0.033333 #表示数据的采样率。在示例BVH文件中,采样率为0.033333。
8.03 35.01 88.36 -3.41 14.78 -164.35 13.09 40.30 -24.60 7.88 43.80 0.00 -3.61 -41.45 5.82 10.08 0.00 10.21 97.95 -23.53 -2.14 -101.86 -80.77 -98.91 0.69 0.03 0.00 -14.04 0.00 -10.50 -85.52 -13.72 -102.93 61.91 -61.18 65.18 -1.57 0.69 0.02 15.00 22.78 -5.92 14.93 49.99 6.60 0.00 -1.14 0.00 -16.58 -10.51 -3.11 15.38 52.66 -21.80 0.00 -23.95 0.00
7.81 35.10 86.47 -3.78 12.94 -166.97 12.64 42.57 -22.34 7.67 43.61 0.00 -4.23 -41.41 4.89 19.10 0.00 4.16 93.12 -9.69 -9.43 132.67 -81.86 136.80 0.70 0.37 0.00 -8.62 0.00 -21.82 -87.31 -27.57 -100.09 56.17 -61.56 58.72 -1.63 0.95 0.03 13.16 15.44 -3.56 7.97 59.29 4.97 0.00 1.64 0.00 -17.18 -10.02 -3.08 13.56 53.38 -18.07 0.00 -25.93 0.00
剩下的部分是实际的运动数据。每个line是运动数据的一个样本。(这里显示两行,是由于格式显示问题。详细可查看 完整的数据).在解析框架层次结构时,数字按通道规范的顺序显示。