引言:
最近开始用DirectX 10了,感觉和Dx9还是有一些变化的。虽然还不能完全理解这些变化所带来的优势,但是基本还是适应了。
唯一觉得不适应的就是在Dx10的接口里面,D3DX库里面已经没有对于.x模型文件的直接支持了。就是说不能通过D3DX来读取.x模型文件了,Dx10提供了一种新的模型格式sdkmesh。但是为了读取这种模型,或者自己写解析器,可能会很复杂,或者用DXUT的接口,但是如果仅仅为了读取模型文件就用了这个庞大的接口多少显得有些累赘。所以我自己也弄了一个读取Obj格式的模型文件的Demo,对于想读取自己自定义格式的模型文件的朋友,可以看看。希望能有一点帮助。
正文:
Obj是一种应用广泛的模型格式。在很多三维建模软件里面,都可以找到Obj格式的导出插件。本文简单解析了Obj的最基本的格式,可以读取由三角形组成的模型。
为了简单起见,这里分析的Obj是ASCII码格式的,这样用户可以用wordpad查看obj文件里面的内容,配合程序的调试,可以更好的理解文件解析的过程。其实这个模型格式可以很简单的描述一个Mesh。下面我们简单看看一些关键字:
# 这个就相当于C++代码里面的//,如果一行开始时#,那么就可以理解为这一行完全是注释,解析的时候可以无视
g 这个应该是geometry的缩写,代表一个网格,后面的是网格的名字。
v v是Vertex的缩写,很简单,代表一个顶点的局部坐标系中的坐标,可以有三个到四个分量。我之分析了三个分量,因为对于正常的三角形的网格来说&#