读取fbx文件中的信息

读取fbx文件中的信息

ID:33058654

大小:158.72 KB

页数:14页

时间:2019-02-19

读取fbx文件中的信息_第1页
读取fbx文件中的信息_第2页
读取fbx文件中的信息_第3页
读取fbx文件中的信息_第4页
读取fbx文件中的信息_第5页
资源描述:

《读取fbx文件中的信息》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、如何将Fbx格式转换成VVO格式Fbx文件格式简介1.1KFbxSdkManage和KFbxSceneFbx文件是Autodesk开发的文件格式,其开发目的就是为了实现Autodesk旗下软件之间的数据交换。Fbx文件格式木身是不公开的,而是通过FBXSDK实现对Fbx文件的读取以及写入。使用FBXSDK时,最先遇到的两个对象就是KFbxSdkManage和KFbxScene。KFbxSdkManage是sdk中的中心类,负责了整个sdk内部状态的管理,很多其他对象创建也依赖于KFbxSdkManage

2、,程序中只需要有一个KFbxSdkManage类的实例即可。KFbxScene如其名所示,代表了一个场景,而这里的场景就是fbx文件中包含的所有信息,fbx文件导入以后,在程序中就是一个KFbxScene对象,所以一个fbx文件只需要一个KFbxScene类的实例。1.2Fbx的数据组织方式Fbx的数据组织方式是scenetree,即场景树。由KFbxScene所声明的对象可以得到该场景树的根节点,根节点包含了一系列子节点KFbxNode,每个KFbxNode又有其自己的子节点,以此往下类推。这样通过递

3、归循环就可以遍历到每一个节点,然后获取该节点的信息。RootNode是该Fbx文件所对应的根节点,由以下语句得到:KFbxNode*pNode=pScene->GetRootNode();//获得根节点图1是一个圆柱体的例子。该圆柱体总共有四个节点,Patch.SkeletonRoot.SkeletonLimbNodel>SkeletonLimbNode2是这四个节点的名称。其中Patch>SkeletonRoot是RootNode的孩子,SkeletonLimbNodel是SkeletonRoot的孩

4、子,SkeletonLimbNode2是SkeletonLimbNodel的孩子。图i1.3Fbx中节点KFbxNode说明1.3.1节点坐标场景树中每个节点都是KFbxNode,KFbxNode类本身包含了坐标变换信息,例如可以用函数EvaluateGlobalTransform(KTimepTimc)获得在pTimc时刻该节点的全球变换矩阵。获得全球变换矩阵后,我们可以得到节点在该时刻的世界坐标系下的平移、旋转和缩放。同理由EvaluateLocalTransform(KTimepTime)获得在p

5、Time时刻该节点的本地变换矩阵,进而获得该时刻本地坐标系下节点的平移、旋转和缩放。1.3.2节点类型一个节点KFbxNode包含其他数据作为KFbxNodeAttribute对象,包含在其内部,这里的其他数据是指mesh,Nurbs,skeleton,camara,light等定义在KFbxNodeAttribute::EAttributeType中的枚举类型。获得一个节点的类型可用以下函数语句来实现:KFbxNodeAttribute::EAttributeTypelAttributeType;lA

6、ttributeType=pNode->GetNodeAttribute()->GetAttributeType();1.3.3节点中层次Layer层次Layer:法线、纹理坐标等是存储在层次Layer中的,每个节点可以有多个层次,然后在每个层次中包含一套纹理,法线等。但是,通常我们只会用到一个层次,很多建模软件也只支持一个层次。比如在一个节点类型为cMESII的结点中层次概念如下所示:meshlayer0{KFbxLayerElementNormal,KFbxLayerElementUV}IIlaye

7、r1{KFbxLayerElementNormal,KFbxLayerElementUV}Ilayern{KFbxLayerElementNormal,KFbxLayerElementUV}关于层次的常用函数:〃求pMesh屮包含UV的层次数pMesh->GetElementUVCount();〃获得第i层中的UV对象KFbxGeometryElementUV*leUV=pMesh->GetElementUV(i);每种保存在Layer中的元素(如上面提到的UV)都继承于KFbxLayerElement

8、,比女口KFbxLayerElementNormal对应normal数据,KFbxLayerElementUV对应的UV数据,可以通过KFbxLayer中定义的各种Get函数得到,如GetElementNormal()^nGetElementUV,返回需要的KFbxLayerElement,如果为空,则说明当前layer中没有这种元素。下面是关于KFbxLayerElement的类的大概的继承图。KFbxLayerElementTempla

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。