BVH、FBX 文件学习

一、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小、可以使用二进制格式文本格式压缩大

  1. 数据表示:FBX文件可以使用二进制格式或ASCII文本格式来表示数据。
    • 二进制格式更紧凑,适合传输和存储;
    • ASCII格式则更易于阅读和调试。
  2. 支持的数据类型:FBX格式支持多种3D数据类型,包括但不限于
    • 几何(Geometry):顶点、边、面、法线、UV坐标等。
    • 材质(Materials):颜色、纹理、反射率等。
    • 动画(Animation):关键帧动画、骨骼动画、变形动画等。
    • 骨骼(Skeletons):骨骼结构、关节、权重等。
    • 灯光(Lights):点光源、聚光灯、环境光等。
    • 摄像机(Cameras):透视摄像机、正交摄像机等。
  3. 文件结构:FBX文件的结构相对复杂,包含多个层次的节点,每个节点可以包含不同类型的数据。以下是FBX文件的一些主要结构元素
    • Header:文件头部,包含文件版本等基本信息。
    • Objects:定义了文件中的所有对象,如几何、材质、动画等。
    • Connections:定义了对象之间的关系和连接。
    • Takes:包含动画数据。
  4. 应用领域:
    • 3D建模和动画:用于创建和编辑三维模型和动画。
    • 游戏开发:用于导入和导出游戏中的三维模型和动画。
    • 虚拟现实(VR)和增强现实(AR):用于创建虚拟和增强现实环境中的三维对象。
    • 影视制作:用于制作电影和电视中的三维特效和动画
  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Unity是一款流行的游戏引擎,支持多种文件格式的导入,其中包括bvh文件格式。bvh文件格式是一种用于记录人体骨骼动作的文件格式,通常用于动画制作。 在Unity中导入bvh文件非常简单。首先,在Unity中创建一个新项目,并导入需要的人体模型。其次,打开导入人物模型的编辑器,在编辑器中选择导入bvh文件的选项。接下来,选择需要导入的bvh文件,并按照提示完成导入过程。在导入过程中,Unity会自动将bvh文件中的骨骼动作信息应用到导入的人体模型上。 在导入完毕后,可以使用Unity的动画编辑器来查看和编辑导入的骨骼动作。除了默认的动画编辑器,还可以使用一些第三方插件来更好地控制和编辑动画。此外,如果觉得需要,还可以利用Unity"动作匹配器"和"动作融合器"的功能,来组合和混合多个动画。 总之,Unity支持bvh文件的导入,使得人物动画制作变得更加容易和高效。通过导入和编辑bvh文件,人物动画制作者可以创造出更加生动、精彩的人物动作,从而提高游戏的质量和用户体验。 ### 回答2: Unity是一款非常强大的游戏引擎,可以实现3D场景的构建和游戏物体的操作。而导入bvh文件也是其中的一个非常重要的功能,这可以非常方便地实现角色动作的导入和应用。 首先,在Unity的资源管理器中选择需要导入bvh文件的对象,在其属性面板中选择“导入”的选项。随后选择bvh文件,并进行导入操作。 接下来,在导入后的动画对象上,我们可以进行各种不同的操作,比如修改动画的播放速度、添加新的动画片段、或者对动画进行差值和编辑。 需要注意的是,在导入bvh文件时,Unity会尝试将其重新调整为匹配当前场景的大小和比例。因此,有时候可能需要手动对动画进行一些微调和编辑,以实现最佳效果。 总之,使用Unity导入bvh文件是一项非常重要且实用的功能,可以让我们更加轻松和高效地创建精美的动画效果。 \end{cn} ### 回答3: Unity是一款流行的游戏引擎,可以用于开发各种类型的游戏。导入BVH文件是Unity中常见的任务,这种文件格式通常用于描述人体运动数据。以下是关于如何在Unity中导入BVH文件的一些提示。 首先,Unity可以通过使用第三方插件来导入BVH文件。有许多免费或付费的插件可供选择,例如"BVH Importer"或"FinalIK"。在查找和选择插件之前,要确保已经下载并安装了最新的Unity版本。 安装插件后,需要准备BVH文件。可以使用3D建模软件如Maya、Blender或MotionBuilder来创建或修改此文件。通常需要确保文件符合常见的BVH标准格式,例如正确的帧速率、帧数量、层次结构和骨骼命名。 导入过程与导入其他文件类型相似: 打开Unity,创建一个新项目或打开现有项目,然后从文件选项中选择导入功能。选择正确的插件和BVH文件后,将需要进行一些设置,例如指定是否移动,旋转或缩放人物模型。 成功导入BVH文件后,Unity会生成一个包含BVH数据的动画片段。可以通过将这段动画片段附加到人物模型上,使模型运动引擎和动画数据配合工作。 总之,在Unity中导入BVH文件需要使用适当的插件,并通过创建和配置人物模型来准备文件。成功导入后,BVH数据可用于实现复杂的人体动作和其他交互式游戏元素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值