fbx sdk 支持ios android吗
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了fbx sdk 支持ios android吗相关的知识,希望对你有一定的参考价值。
FBX是Autodesk的一个用于跨平台的免费三维数据交换的格式(最早不是由Autodesk开发,但后来被其收购),目前被 众多的标准建模软件所支持,在游戏开发领域也常用来作为各种建模工具的标准导出格式。Autodesk提供了基于C++(还有Python)的SDK来实现对FBX格式的各种读写、修改以及转换等操作,之所以如此是因为FBX的格式不是公开的,这也是FBX的诟病之一。与FBX相对的则是格式开源的Collada,它的应用也很广泛。总体来说这两种格式还是各有优劣不相上下,关于两种格式在游戏开发中使用的对比与讨论也比较多,可见GameDev中的帖子:http://www.gamedev.net/topic/467753-collada-vs-autodesk-fbx , 这里就不再论述了。大多数情况下我们是需要解析模型在程序中渲染使用,因此这里主要讨论使用FBX SDK来对FBX模型进行解析与加载(主要包括几何网格、材质、Light与Camera、Skeleton动画等),而对于在建模工具中可能涉及到的FBX写出等则没有涉及。2. FBX SDK的配置
首先,在使用前需要下载安装FBX的SDK,可以从Autodesk的网站上进行获得最新的版本http://usa.autodesk.com/adsk/servlet/index?siteID=123112&id=7478532(需要填些基本信息注册下)。安装之后在VS里边的配置就跟D3D类似。其中的Samples基本上涵盖了FBX相关的应用,可以在使用之前好好研究一下。最新的SDK版本(2012版)与之前的版本会在细节上有所不同(有些较大的改动是实现某些功能 的API接口的修改,具体细节可以用2012的Programmer's guide中找到),而且支持最新的FBX格式,因此最好就直接用最新的版本。
3. FBX模型的组织结构
FBX是以scene graph的结构来存储模型的所有信息(也可以认为是一个多叉树),类似于OSG中的组织方式,这一点可以从SDK所带的Sample里边很清楚的看出来。一个较为典型的模型的组织结构与下图所示:
整个Scene是从一个空属性的根结点开始,其中每个结点均是一个KFbxNode的对象,所有对象之间的关联均是双向的,比如从子结点可以索引到父结点,从父结点也可以索引到子结点;从单个结点可以索引到整个Scene,从Scene也可以索引到该结点。每个结点都会有一个标记属性的Enum值,比如eMesh、eLight、eCamera或eSkeleton等,分别用来标记当前结点是Mesh、Light、Camera或Skeleton。在整个结构的遍历过程中可以通过判断不同的结点属性而进行不同的处理操作。
在进行使用SDK进行FBX的处理操作之前需要先初始化两个必须的FBX对象:KFbxSdkManager和KFbxScene。前者用来对所有的FBX对象进行内在管理,所有使用SDK加载的资源均在此对象的管控之下,最终的资源释放也由其来完成。有了内存管理器之后再在其上创建一个相关的KFbxScene对象之后即可以进行模型的加截与处理了。KFbxScene其实相当于Manager提供的整个场景对象的一个入口。
附上出处链接:http://blog.csdn.net/bugrunner/article/details/7210511/ 参考技术A 目前还不支持
如何使用 FBX SDK 在 fbx 文件中加载嵌入的纹理? [关闭]
【中文标题】如何使用 FBX SDK 在 fbx 文件中加载嵌入的纹理? [关闭]【英文标题】:How can I load embedded textures within a fbx file with FBX SDK? [closed] 【发布时间】:2019-10-26 14:56:18 【问题描述】:我正在尝试使用 FBX SDK、OpenGL 3.3 (c++) 制作自己的 FBX 导入器。
我知道您可以在 fbx 文件中嵌入纹理。这样您就可以使用单个 fbx 文件而无需任何纹理图像,非常方便。
但是,假设我有一个嵌入了纹理的 fbx 文件,如何从文件中提取纹理以便将它们发送到我的片段着色器?有没有我可以查看的课程或文档?
【问题讨论】:
This 出现在“fbx importer”的前几个结果中。 或者你真的只是想说“我如何将图像上传到 GPU?”一个很好的介绍可以在open.gl上找到 你好。请分享您的 fbx 进口商代码 :_) 【参考方案1】:我假设您使用 FBX SDK 类 FbxImporter
打开并提取 FBX 文件中的数据。在这种情况下,每当您告诉 SDK 导入文件时,它都会创建一个名为 xxx.fbm 的文件夹(其中 xxx 是您的文件名)。您将在与您的文件相同的目录中找到此文件夹。这也是它自动提取所有嵌入媒体(如纹理)的地方。您所要做的就是查看该文件夹,看看是否有任何纹理文件(例如 jpg、png 等),然后将它们读取到您的应用程序中。
【讨论】:
天哪,这就是我一直在寻找的信息,非常感谢!以上是关于fbx sdk 支持ios android吗的主要内容,如果未能解决你的问题,请参考以下文章
可以使用 Xamarin 为原生 iOS 和 Android 应用程序创建客户端 sdk 吗?