【openGL2021版】obj格式文件
大家好,我是Lampard猿奋~
欢迎来到船新的openGL基础系列的博客,今天学习的是obj格式文件
(一)什么是obj格式文件
obj文件是3D模型文件格式。由Alias|Wavefront公司为3D建模和动画软件"Advanced Visualizer"开发的一种标准,适合用于3D软件模型之间的互导,也可以通过Maya读写,下图是百科给它的定义:
上周我们已经学会了给图形贴上皮肤,然后进一步我们就可以制作一个立体的模型。而在3D模型中,obj就是一个很通用的文件,其里面记录了我们所需要的顶点,法线,纹理坐标等信息
1.OBJ文件是一种3D模型文件。不包含动画、材质特性、贴图路径、动力学、粒子等信息
2.)OBJ文件主要支持多边形(Polygons)模型。虽然也支持曲线(Curves)、表面(Surfaces)、点组材质(Point Group Materials),但Maya导出的OBJ文件并不包括这些信息
3.OBJ文件支持三个点以上的面
4.OBJ文件支持法线和贴图坐标。在其它软件中调整好贴图后,贴图坐标信息可以存入OBJ文件中
(二)obj文件基本结构
一个obj格式的文件可能包含了顶点数据,自由形式的曲面/表面属性,绘制索引序列,自由形式的曲面/表面内容声明,关联自由形式的表面,组和渲染属性信息。现在主要关注顶点数据(Vertex data)以及元素(Elements)
(1)顶点数据(Vertex data)
v 几何体顶点 (Geometric vertices),格式:(x,y,z轴坐标)
t 贴图坐标点 (Texture vertices),格式:(纹理X轴坐标,纹理Y轴坐标)
vn 顶点法线 (Vertex normals),格式:(x,y,z轴)
vp 参数空格顶点 (Parameter space vertices)
(2)元素(Elements)
p 点 (Point)
l 线 (Line)
f 面 (Face):格式为第几个顶点/第几个纹理坐标/第条个法线
curv 曲线 (Curve)
如上图,就是(点1,2,3)组成一个面,(点3,2,4)组成一个面,两个三角形就凑成了一个正方形
(三)obj模型实例
接下来是看一个立方体的实例,首先一个立方体是由六个面组建起来的,上文已经制作出一个正方型,之后就是制作6个正方形并进行连接
我们拿到这个obj文件之后进行解码,就可以得到下面的图形,每个正方形由两个三角形组成,由6个正方形组成一个立方体(具体解码的文章放在下一篇里面讲)