2024年6月6日发(作者:)

如何将Fbx格式转换成VVO格式

一、 Fbx文件格式简介

1.1 KFbxSdkManage和KFbxScene

Fbx文件是Autodesk开发的文件格式,其开发目的就是为了实现

Autodesk旗下软件之间的数据交换。Fbx文件格式本身是不公开的,而是通过

FBX SDK实现对Fbx文件的读取以及写入。

使用FBX SDK时,最先遇到的两个对象就是KFbxSdkManage和

KFbxScene。

KFbxSdkManage是sdk中的中心类,负责了整个sdk内部状态的管理,

很多其他对象创建也依赖于KFbxSdkManage,程序中只需要有一个

KFbxSdkManage类的实例即可。

KFbxScene如其名所示,代表了一个场景,而这里的场景就是fbx文件中

包含的所有信息,fbx文件导入以后,在程序中就是一个KFbxScene对象,所

以一个fbx文件只需要一个KFbxScene类的实例。

1.2 Fbx的数据组织方式

Fbx的数据组织方式是scene tree,即场景树。由KFbxScene所声明的

对象可以得到该场景树的根节点,根节点包含了一系列子节点KFbxNode,每

个KFbxNode又有其自己的子节点,以此往下类推。这样通过递归循环就可以

遍历到每一个节点,然后获取该节点的信息。

RootNode是该Fbx文件所对应的根节点,由以下语句得到:

KFbxNode* pNode = pScene->GetRootNode();//获得根节点

图1是一个圆柱体的例子。该圆柱体总共有四个节点,Patch、SkeletonRoot、

SkeletonLimbNode1、SkeletonLimbNode2是这四个节点的名称。其中

Patch、SkeletonRoot是RootNode的孩子,SkeletonLimbNode1是

SkeletonRoot的孩子,SkeletonLimbNode2是SkeletonLimbNode1的孩

子。

RootNode

Patch

KFbxNode

SkeletonRoot

KFbxNode

SkeletonLimbNode1

KFbxNode

SkeletonLimbNode2

KFbxNode

图 1

kFbxObject

KFbxCollectionKFbxNode

KFbxNodeAttribute

KFbxDocument

KFbxSkeleton

KFbxLightKFbxLayerContainer

KFbxScene

KFbxGeometryBase

KFbxGeometry

KFbxMesh

KFbxNurb

KFbxPatch