BVH、FBX 文件学习
BVH 文件以层次结构的方式组织数据,其中包含骨骼层次关系、关节的旋转角度和动作帧的时间信息。1)bvh坐标系,每个节点都有自己的局部坐标系,它的原点是该节点的位置,它的方向是由该节点的旋转角度决定的。每个节点的局部坐标系可以通过从根节点开始,依次将父节点的旋转和平移应用到子节点上,得到其相对于世界坐标系(即根节点的局部坐标系)的变换矩阵。这些值都是相对于父节点的局部坐标系的,而不是世界坐标系的。
一、BVH
BVH(Biovision Hierarchy)是一种用于表示动作捕捉数据的文件格式。它是一种文本文件格式,用于描述人体骨骼结构和动作的层次关系。BVH 文件以层次结构的方式组织数据,其中包含骨骼层次关系、关节的旋转角度和动作帧的时间信息。每个关节在文件中被定义为一个节点,并通过层次结构的父子关系连接起来。每个节点包含关节的名称、旋转顺序和旋转角度等信息。动作帧的时间信息确定了每个动作帧的时刻。
优点:简单性和易于解析,由于是文本文件,可以轻松地阅读和编辑。
缺点:只描述了关节的旋转信息,而没有提供关节的位移和缩放等其他变换信息。
对于复杂的动作和人体运动,可能需要大量的节点和旋转数据,导致文件大小较大。
细节和精确度的描述可能有限,无法捕捉到一些细微的动作变化
1、文件内容
HIERARCHY
ROOT Hips
{
OFFSET 0.00 0.00 0.00
CHANNELS 6 Xposition Yposition Zposition Zrotation Xrotation Yrotation
JOINT Chest
{
OFFSET 0.00 5.21 0.00
CHANNELS 3 Zrotation Xrotation Yrotation
JOINT Neck
{
OFFSET 0.00 18.65 0.00
CHANNELS 3 Zrotation Xrotation Yrotation
JOINT Head
{
OFFSET 0.00 5.45 0.00
CHANNELS 3 Zrotation Xrotation Yrotation
End Site
{
OFFSET 0.00 3.87 0.00
}
}
}
JOINT LeftCollar
{
............................
}
}
MOTION
Frames: 2
Frame Time: 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
(该数据例子描述了 腰部hips一直到 头部head 的关系 和 2帧的动作数据)
1、bvh文件内容包含两大块内容,骨架信息,运动信息。
1)骨架信息(层级结构):将人体骨骼按照层级关系,形成一个带有位置和旋转分量的结构
HIERARCHY # 标记了层级结构部分的开始(定义T pose)
ROOT Hips # Root 这表示第一个节点是根节点。第一个节点总是根节点 该节点名字为 Hips (臀部)
{ # 括号 {..} 下包含该节点Hips的信息及子节点
OFFSET 0.00 0.00 0.00 # OFFSET 表示该节点相对于父节点的偏移,理解为从父节点到该节点连线所表征的向量
CHANNELS 6 Xposition Yposition Zposition Zrotation Xrotation Yrotation # CHANNELS 表示自由度的关键字,Xrotation Yrotation Zrotation表示了三个旋转自由度,Xposition Yposition Zposition 表示三个平移自由度(注意:以上信息都是 Hips 节点的信息)
JOINT Chest # JOINT 表示这是一个节点,因为它在 Hips的{}里,所以他是 Hips 的子节点,节点名为 Chest
{
OFFSET 0.00 5.21 0.00
CHANNELS 3 Zrotation Xrotation Yrotation
JOINT Neck
{
OFFSET 0.00 18.65 0.00
CHANNELS 3 Zrotation Xrotation Yrotation
JOINT Head
{
OFFSET 0.00 5.45 0.00
CHANNELS 3 Zrotation Xrotation Yrotation
End Site # End Site 无名节点,表示树形结构到这里就是叶节点啦,后面再也没有子节点了。End Site没有子节点,所有也就没有自由度信息,只有相对父节点的偏移信息。
{
OFFSET 0.00 3.87 0.00
} # } 该节点结束 ,下面再出现JOINT标记的节点时,我们回去找它在谁的括号内,它就是谁的子节点,以此类推
}
}
JOINT LeftCollar
{
............................
}
} # 根节点} 说明层级结构结束
2)运动信息:记录了人体在每帧中各个关节点的旋转信息
MOTION # MOTION 代表着运动信息的部分开始了
Frames: 2 # 表示帧数
Frame Time: 0.033333 # 0.033333 表示每一帧的持续时间,这里1/30=0.033333,也就是这个文件是30FPS
# 下面 每行为一帧。这些信息按照 HIERARCHY 部分的自由度出现的顺序一一对应。其中角度的单位是度
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
2、注意:
1)bvh坐标系,每个节点都有自己的局部坐标系,它的原点是该节点的位置,它的方向是由该节点的旋转角度决定的。每个节点的局部坐标系可以通过从根节点开始,依次将父节点的旋转和平移应用到子节点上,得到其相对于世界坐标系(即根节点的局部坐标系)的变换矩阵。
2)运动信息:通常是先平移后旋转,先z轴后x轴后y轴。这些值都是相对于父节点的局部坐标系的,而不是世界坐标系的。旋转角度的单位是度 °,平移距离的单位是长度单位(通常是厘米或米)。
3)bvh被定义为右手坐标系,Y轴为世界向上矢量。因此BVH的骨骼段是沿着Y轴或负Y轴排列的
4)解析运动数据时,根据层次信息计算每个关节的局部变换矩阵,再依次与其父关节矩阵相乘,可以得到世界坐标系下的最终变换矩阵
5)BVH使用的是YXZ欧拉角旋转顺序。可以分别计算XYZ三个轴的旋转矩阵然后乘积,或者直接计算出完整的旋转矩阵
二、FBX
FBX(Filmbox)是 Autodesk 公司开发的一种通用文件格式,被广泛应用于计算机图形和游戏开发领域。FBX 文件可以包含多个对象,包括模型、材质、动画、灯光和相机等。它支持多种数据类型,包括几何数据、纹理坐标、法线信息、骨骼动画、关键帧动画等。FBX 文件还可以存储层次结构、物理属性、约束等相关信息,以便于在不同的软件和平台之间进行数据交换和共享。FBX 文件格式适用于各种需要存储、交换和展示三维数据的应用场景,例如在游戏开发、电影动画制作中用于模型、动画和场景的导入和导出;在虚拟现实(VR)和增强现实(AR)应用中保存虚拟场景的几何数据、交互元素和动画效果等。
优势:FBX 文件能够保存包括几何数据、材质贴图、动画效果、灯光设置、复杂的三维模型和动画效果等在内的多种元素,提供了丰富的功能和特性,且具有较好的跨平台兼容性。
缺点:由于 FBX 文件格式保存了较多的元素和数据,所以文件大小通常较大,且 FBX 文件格式在使用和处理上可能需要一定的学习和熟悉。比bvh小、可以使用二进制格式文本格式压缩大
- 数据表示:FBX文件可以使用二进制格式或ASCII文本格式来表示数据。
- 二进制格式更紧凑,适合传输和存储;
- ASCII格式则更易于阅读和调试。
- 支持的数据类型:FBX格式支持多种3D数据类型,包括但不限于
- 几何(Geometry):顶点、边、面、法线、UV坐标等。
- 材质(Materials):颜色、纹理、反射率等。
- 动画(Animation):关键帧动画、骨骼动画、变形动画等。
- 骨骼(Skeletons):骨骼结构、关节、权重等。
- 灯光(Lights):点光源、聚光灯、环境光等。
- 摄像机(Cameras):透视摄像机、正交摄像机等。
- 文件结构:FBX文件的结构相对复杂,包含多个层次的节点,每个节点可以包含不同类型的数据。以下是FBX文件的一些主要结构元素
- Header:文件头部,包含文件版本等基本信息。
- Objects:定义了文件中的所有对象,如几何、材质、动画等。
- Connections:定义了对象之间的关系和连接。
- Takes:包含动画数据。
- 应用领域:
- 3D建模和动画:用于创建和编辑三维模型和动画。
- 游戏开发:用于导入和导出游戏中的三维模型和动画。
- 虚拟现实(VR)和增强现实(AR):用于创建虚拟和增强现实环境中的三维对象。
- 影视制作:用于制作电影和电视中的三维特效和动画
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)