OpenGL ES 3. 3D之OBJ文件详解

大家好,接下来将为大家介绍OpenGL ES 3. 3D之OBJ文件详解。

1、OBJ介绍及其特点

        OBJ文件是3D模型文件格式。由Alias|Wavefront公司为3D建模和动画软件"Advanced Visualizer"开发的一种标准,适合用于3D软件模型之间的互导,也可以通过Maya读写。

        3D 模型本质上是由一系列三角形在 3D 空间(OpenGL 坐标系)中构建而成,另外还包含了用于描述三角形表面的纹理、光照、材质等信息。

        常用的模型文件格式有 .obj、.max、.fbx .3ds 等,其中 .obj 是 Wavefront 科技开发的一种几何体图形文件格式,包含每个顶点的位置、纹理坐标、法线,以及组成面(多边形)的顶点列表等数据,应用较为广泛。

OBJ文件的特点:

(1):OBJ文件是一种3D模型文件。不包含动画、材质特性、贴图路径、动力学、粒子等信息。

(2):OBJ文件主要支持多边形(Polygons)模型。虽然也支持曲线(Curves)、表面(Surfaces)、点组材质(Point Group Materials),但Maya导出的OBJ文件并不包括这些信息。

(3):OBJ文件支持三个点以上的面,这一点很有用。很多其它的模型文件格式只支持三个点的面,所以导入Maya的模型经常被三角化了,这对于我们对模型进行再加工甚为不利。

(4):OBJ文件支持法线和贴图坐标。在其它软件中调整好贴图后,贴图坐标信息可以存入OBJ文件中,这样文件导入Maya后只需指定一下贴图文件路径就行了,不需要再调整贴图坐标。

 

2、OBJ文件格式

        OBJ文件是最简单的一种 3D 模型文件,其本质上就是文本文件,只是具有固定的格式而已。 obj文件中将顶点坐标、三角形面、纹理坐标等信息以固定格式的文本字符表示,下面给出了 一个 obj 文件的片段。

3 ......
4 v -19.990179 -34.931675 -18.201921
5 v 20.111662 -34.931675 -18.201921
6 ......
7 v 20.111662 27.748880 21.994425
8 # 8 vertices
9 vt 0.000000 0.000000 0.000000
10 vt 1.000000 0.000000 0.000000
11 ......
12 vt 1.000000 1.000000 0.000000
13 # 12 texture vertices
14 vn 0.000000 0.000000 -1.570796
15 vn 0.000000 0.000000 -1.570796
16 ......
17 vn 0.000000 0.000000 1.570796
18 # 8 vertex normals
19 g (null)
20 f 1/10/1 3/12/3 4/11/4
21 f 4/11/4 2/9/2 1/10/1
22 ......
23 f 5/4/5 7/3/7 3/1/3
24 # 12 faces
25 g

        从上述 obj 文件片段中可以看出,其内容是以行为基本单位进行组织的,每种不同前缀开头的行有不同的含义,具体情况如下所列。

“#”号开头的行为注释,在程序加载的过程中可以略过。

“v”开头的行用于存放顶点坐标,其后面的 3 个数值分别表示一个顶点的 x、y、z 坐标。

“vt”开头的行用于存放顶点纹理坐标,其后面的 3 个数值分别表示纹理坐标的 S、T、P 分量。

“vn”开头的行用于存放顶点法向量,其后面的 3 个数值分别表示一个顶点的法向量在 x 轴、y 轴、z 轴上的分量。

“g”开头的行表示一组的开始,后面的字符为此组的名称。所谓组是指由顶点组成的一些面的集合。只包含“g”的行表示一组的结束,与“g”开头的行对应。

“f”开头的行表示组中的一个面,如果是三角形(由于 OpenGL ES 在多边形方面仅支持三角形)则后面有 3 组用空格分开的数据,代表三角形的 3 个顶点。每组数据中包含 3 个数值,用“/”分开,依次表示顶点坐标数据索引、顶点纹理坐标数据索引、顶点法向量数据索引。
 

3、说明示例

        例如,有这样的一行“f 200/285/200 196/280/196 195/279/195”,其表示三角形中3 个顶点的坐标来自 200、196、195 号“v”分开的行,3 个顶点的纹理坐标来自 285、280、 279 号“vt”分开的行,3 个顶点的法向量来自 200、196、195 号“vn”分开的行。计算 行号时各种不同前缀是独立计算的,例如,前面代码的第 5 行为“v”分开的 2 号行。

 

最后,欢迎大家一起交流学习:微信:liaosy666 ; QQ:2209115372 。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值