最近在做计算机动画方面的研究,读取BVH动作文件,从网上找了一些资料,介绍的不全,而且只是简单的介绍了BVH文件的结构,并没有看到BVH文件中每帧数据代表的真正含义。于是乎,自己摸索了许久,终于得到了正确的运动效果。
1、首先介绍一下BVH文件的基本概念,网上这方面的资料还是很多的,我进行了一些总结:
BVH(Biovision层次模型)是Biovision Hierarchy的缩写,它是由Biovision公司开发的一种描述动作捕获的数据文件格式。这种文件描述的人体动画十分逼真,因为它通过真实的人体模特穿上带有传感器的特殊衣服捕获动画。BVH文件来源也相当广泛,且易于制作,它可以利用3DMAX,POSER等软件制作;此外,这种文件是以文本形式存储的,因此操作简单,容易开发。
从计算机编程角度看来,程序员喜欢将很多东西分开对待,从而简化,也就是分而治之。
计算机动画肯定是复杂的,但是总有办法解决,于是动画被分为 蒙皮 & 骨骼动作
bvh文件存放的就是骨骼的构成和动作数据————
BVH是在BVA格式的基础上的改进,在动作捕获后,解析出来的
BVH文件分为2个主要部分:骨架信息 和 数据块
骨架信息 按照层级关系,定义了如root hip leg等位置和旋转分量,从而形成一个完整的骨架
数据块 对应上面的骨架各部位 标出每帧的数据信息
各种类型的动作捕捉仪导出的BVH文件还是有差别的,我是用的是Xsens惯性动作捕捉仪导出的BVH文件。文件基本的结构如下所示:
HIERARCHY
ROOT Hips
{
OFFSET 0.000000 0.000000 0.000000
CHANNELS 6 Xposition Yposition Zposition Yrotation Xrotation Zrotation
JOINT Chest
{
OFFSET 0.000000 9.085309 -0.011154
CHANNELS 3 Yrotation Xrotation Zrotation
JOINT Chest2
{
OFFSET 0.000000 8.950749 0.022763
CHANNELS 3 Yrotation Xrotation Zrotation
JOINT Chest3
{
OFFSET 0.000000 8.911174 0.000000
CHANNELS 3 Yrotation Xrotation Zrotation
JOINT Chest4
{
OFFSET 0.000000 8.902070 0.000000
CHANNELS 3 Yrotation Xrotation Zrotation
JOINT Neck
{
OFFSET 0.000000 13.422772 0.000000
CHANNELS