增强现实之openGL 3D模型渲染
之前写到可以通过增强现实在特定的标记出渲染3D的立方体,但是增强现实远不是只有这些,还可以渲染一些3D的物体甚至可以使物体运动。obj是一种常用的3D模型文件,里面只有点的信息,纹理部分一般存在于mtl文件中。首先上一张效果图,有纹理和无纹理的区别。
接下来将对openGL渲染obj三维模型及纹理渲染进行介绍。
- obj文件
首先需要看下obj文件的格式,这里只介绍需要用的参数,详细介绍可以参考百度百科。这四个量就是我们需要从obj文件中读取到内存中的数据。
v几何体顶点(Geometric vertices)
vt贴图坐标点(Texture vertices)
vn顶点法线(Vertex normals)
f 面(Face)
打开一个obj文件可以看到如下数据:
# 3ds Max Wavefront OBJ Exporter v0.97b - (c)2007 guruware
# 创建的文件:15.01.2014 20:28:29
mtllib Resources\4.mtl
v -2.2850 -4.4314 148.2468
v -2.3816 -4.3745 147.4439
…
v -100.3414 -7.2775 145.3464
# 9884 vertices
vn -0.9857 0.1115 0.1265
vn -0.7084 0.1134 -0.6967
…
vn -0.8943 -0.0453 0.4453
vn -0.9266 -0.3059 0.2189
# 14103 vertex normals
vt 0.7529 0.9965 0.9965
vt 0.7529 0.9674 0.9674
vt 0.7837 0.9965 0.9965
…
vt 0.9453 0.0864 0.0864
# 9895 texture coords
g ss_004
usemtl Face
s 1
f 1/1/1 2/2/2 3/3/1
s 2
f 3/3/3 2/2/2 4/4/4
s 3
f 2/2/2 5/5/5 4/4/4
值得注意的是vt后边的三个数据后边两个是重复的因此只需要取前两个就行了。这里的面都是三角形,每个f后边有三组数据,分别对应