基于Opencv2.4.11+OpenGL(Qt5.6.0)实现增强现实(五)

本文介绍了如何利用OpenCV2.4.11和OpenGL(Qt5.6.0)在增强现实中渲染3D物体,特别是解析obj和mtl文件来加载纹理。通过示例展示了有纹理和无纹理渲染的差别,并详细讲解了obj文件格式、mtl文件格式以及在OpenGL中加载和渲染这两个文件的方法。
摘要由CSDN通过智能技术生成
增强现实之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后边有三组数据,分别对应
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值