解析 FBX 模型文件作为 Direct3D 的渲染模型

一般自己写一些D3D的程序时比较头疼的就是缺少资源,毕竟不是学习如何使用3Dmax不是一天两天的事,而且使用Max制作的模型还不能直接使用,除非你能解析.max文件,或者给Max写导出插件,这又是另一码事了。然而互联网上免费的FBX模型很多而且有些都是真实游戏导出的模型,这给我们在资源的提供上帮了大忙。由于资源的缺少这些日子写了一个FBX的解析器,用来丰富自己程序的场景。再开发过程中我也参阅了很多网上写过FBX解析器的文章,这些文章让我再开发的过程中少走了不少弯路,但是这些文章基本上都是讲述FBX的文件结构和如何读取,然而从FBX读取出来的数据和真正要使用D3D渲染的数据还是有差距的,今天我就结合游戏开发(D3D)分享一下开发FBX经历。

在开始之前首先要说明一点,这次做的FBX解析器并不通用,它非常针对地面向游戏开发,原因会再后面一点点说明。下面开始正文。

一. FBX SDK:

1. 使用SDK:

由于FBX的文件格式是非公开的,所以要读取FBX文件必须使用FBX SDK才可以。说到这里插一句,网上可以搜到很多关于FBX文件格式的文章,在知道格式的情况下可以不使用SDK自己去解析,但是这有一个问题,由于FBX的格式是非公开的,所以Autodesk不会保证FBX的文件格式是固定的,它很可能会跟随3DMax导出器的版本变化而变化(据我所知确实有很多版本的FBX文件)。这就好像Windows API一样,虽然接口没有变化但是里面的实现是完全不一样,要想自己去兼容各个版本实在太困难了,还不如使用FBX SDK。

2. SDK版本:

我使用的FBX SDK的版本是2016.1.2,在Autodesk的官网上免费下载。这个版本支持VS2015。

3. SDK的使用:

SDK提供了dll和lib两种加载模式,支持x86/x64/Windows Store。SDK有文档,但是这文档写的跟没有也差不多,基本就是程序里面的注释。幸亏它还有比较丰富的例子,否则使用基本靠猜了。

二. 基本概念:

1. 顶点:

(1)首先从游戏开发方面来说,用过D3D/OGL渲染的都知道Draw需要的最基本资源就是顶点,最终使用它的是Vertex Shader,不管你在创建顶点缓冲的时候采取单流多属性还是多流单属性,所有属性的个数必须一致,也就是有多少个Position就得有多少个UV(Normal/Tangent/Binormal…),顶点属性的个数不一致是无法渲染的。

(2)然后再看FBX。FBX的顶点概念和游戏开发中的概念有区别,它的顶点各属性的数量是不一致的(这点继承自Max),顶点的每个属性有可能都有自己的索引,这样它就能保证数据不会

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值