FBX文件简述

来源:互联网 发布:ai for mac dmg格式 编辑:程序博客网 时间:2024/05/16 14:46

1.  关于FBX

Autodesk FBX是Autodesk公司出品的一款用于跨平台的免费三维创作与交换格式的软件,通过FBX用户能访问大多数三维供应商的三维文件。FBX 文件格式支持所有主要的三维数据元素以及二维、音频和视频媒体元素。

FBX由Kaydara开发并于2006年被AUTODESK收购。

参考 https://en.wikipedia.org/wiki/FBX

2.  关于FBX SDK

Autodesk为FBX文件提供了一套C++ SDK,可以使用户拥有读取、写入FBX文件的能力。SDK下载地址:http://usa.autodesk.com/adsk/servlet/pc/item?siteID=123112&id=24535361

SDK文档地址: http://help.autodesk.com/view/FBX/2016/ENU/

        FBX SDK论坛地址:http://forums.autodesk.com/t5/fbx/ct-p/area-c7

3.  FBX文件格式简介:

FBX数据以树状结构存储在文件中,每个FBX文件中有一个“场景”,其子节点有一些全局设置数据,以及使用最为频繁的模型节点,模型节点以及树状结构存放于场景的“根节点”中。

4.  FBX模型节点:

FBX模型节点(FBXNode)可以视作几何模型的一个包装(Wrapper),节点本身并不包含太多的几何信息,其几何信息主要保存在其所持有的节点属性(FBXNodeAttribute)中。​​

模型节点最主要的作用是在模型树上维护树状结构,除此之外,FbxNode还保存了一些矩阵变换信息以及材质信息。

5.  FBX模型属性:

FBX模型属性(FbxNodeAttribute)作为FbxNode中的成员,它定义了该节点所表示的元素,如光源、相机或几何元素等。

6.  FBX网格:

FBX网格(FbxMexh)继承于FbxNodeAttribute,用来表示FBX节点中的网格图元,其基本信息有:

a.      控制点列表control Points/ vertices;

b.      多边形列表polygons;

c.       一系列的层(FbxLayer),用来保存网格的法向、贴图以及材质信息。

7.  FBX矩阵变换:

FBX文件中的矩阵变换比较复杂,每个FbxNode中有3个转换矩阵,分别是

a.      LocalTransform 本地转换矩阵,这个转换矩阵是指节点相对于父节点的变换,局部变换可以通过FbxNode::EvaluateLocalTransform()函数获得;

b.      GlobalTransform 全局变换,这个转换矩阵是指节点相对于世界坐标的变换,全局变换可以通过FbxNode::EvaluateGlobalTransform()函数获得,也可以由节点本身开始,获得上层所有节点的转换进行叠加获得。

c.      GeometricTransform 物理变换,这个变换矩阵与其他节点无关,可以视作节点的几何数据相对于节点自身的坐标系的一个转换,获得物理变换的方法是

FbxAMatrix matrixGeo;

  matrixGeo.SetIdentity();

  if (node->GetNodeAttribute())

  {

            const FbxVector4 lT = node->GetGeometricTranslation(FbxNode::eSourcePivot);

            const FbxVector4 lR =node->GetGeometricRotation(FbxNode::eSourcePivot);

            const FbxVector4 lS =node->GetGeometricScaling(FbxNode::eSourcePivot);

            matrixGeo.SetT(lT);

            matrixGeo.SetR(lR);

            matrixGeo.SetS(lS);

  }

终上所述,要获得一个网格数据相对于全局的变换可以使用GlobalTranform * GeometricTransform获得。另外需要注意的是FBX的矩阵是基于列的,转为Hidas矩阵时需要做转置

0 0
原创粉丝点击