【openGL2021版】obj模型

      大家好,我是Lampard猿奋~

      欢迎来到船新的openGL基础系列的博客,今天学习的是obj模型

(一)要做什么

上周我们给制作的图形(三角形,矩形)贴上了皮肤,学习到了法线,光照,纹理坐标等知识。然后又解读了obj格式的文件

       因此本周我们只需要解码这个obj文件,然后利用openGL给我们接口,去批量的生成绘制的点,就很方便的画出我们想要的图形了

(二)解码obj数据

(1)obj文件格式

      一个obj格式的文件可能包含了顶点数据,自由形式的曲面/表面属性,绘制索引序列,自由形式的曲面/表面内容声明,关联自由形式的表面,组和渲染属性信息。我们关注的是顶点数据以及点的组成方式

      下图中v代表的是顶点的坐标,vt代表的是纹理坐标,vn代表的是法线。f后面接的是三个点,三个点组成一个三角形,如“1/1/1”代表用第一个顶点信息,第一个纹理坐标信息以及第一个法线信息构成一个点,然后由点‘1/1/1’,“2/2/2”和“3/3/3”来构成一个面

(2)读取需要的内容

在创建对象的时候需要先创建一个对象的类,我们首先需要在Init方法中读取obj格式文件的数据,然后在draw方法中去调用API绘制图形,其头文件包含以下的内容

其中VertexData是这样的一个结构,记录每个点三项属性的数据,实际去重后有多少个点

 mIndices是记录第几个点的一个数组,如上图obj格式中,就是1,2,3,3,2,4(两个三角形有6个点,但是实际我们只需要绘制4个点),具体的读取字符串的方式就不表了,打印一下存储的内容

(三)调用openGL接口生成模型

  绘制就比较简单了,我们可以利用glTexCoord2fv,glNormal3fv以及glVertex3fv来绘制我们的点,然后在main中调用这个draw方法即可。我们上图的正方形obj绘制出来的结果是这样:

使用线框模式glPolygonMode(GL_FRONT, GL_LINE);可以明显的看出每个点之间的关系

同样的我们可以把一个球模型放进去看看效果

这是线框模式下的球,可以看到一个球就是由不同的三角形面组成的,而我们就可以利用编辑器像maya这种制作模型,然后导入到引擎中,非常方便

好啦今天就到这里

点赞,关注!!!

【openGL2021版】obj模型相关推荐

  1. 【openGL2021版】obj格式文件

    [openGL2021版]obj格式文件       大家好,我是Lampard猿奋~       欢迎来到船新的openGL基础系列的博客,今天学习的是obj格式文件 (一)什么是obj格式文件  ...

  2. 【openGL2021版】阶段展示

     [openGL2021版]阶段展示       大家好,我是Lampard猿奋~       欢迎来到船新的openGL基础系列的博客,今天主要是展示这一个多月来的学习成果 (1)镜面光斑 上周我们 ...

  3. 仅用 480 块 GPU 跑出万亿参数!全球首个“低碳版”巨模型 M6 来了

    继今年 3 月阿里达摩院发布国内首个千亿参数多模态大模型 M6(MultiModality-to-MultiModality MultitaskMega-transformer,以下简称 M6) 之后 ...

  4. threejs加载obj模型_Vulkan编程指南(章节31-载入模型)

    章节31 载入模型 介绍 本章节我们将会渲染一个带有纹理的三维模型. 库 我们使用tinyobjloader库来从OBJ文件加载顶点数据.tinyobjloader库是一个简单易用的单文件OBJ加载器 ...

  5. Cesium - 转换obj模型为3D Tiles 并加载

    先下一个工具:此工具要有nodejs才能用: https://github.com/PrincessGod/objTo3d-tiles: 再下一个:链接:https://blog.csdn.net/j ...

  6. OpenGL OBJ模型加载.

    在我们前面绘制一个屋,我们可以看到,需要每个立方体一个一个的自己来推并且还要处理位置信息.代码量大并且要时间.现在我们通过加载模型文件的方法来生成模型文件,比较流行的3D模型文件有OBJ,FBX,da ...

  7. babyion 加载obj模型_在vue中使用babylonjs引入3d模型,打印mesh数据正常且无报错,但未在场景中显示,请问是什么环节出现了问题?...

    已解决,由于项目是由vue-cli3搭建的,将obj模型放入public后需要用es6语法引入. 首先在return中定义publicPath: process.env.BASE_URL 然后在引用路 ...

  8. UE4之Obj模型解构解析

    由于需求,必须研究obj模型的结构. 参考: Wavefront OBJ 英文文档 Warefront Object File (.obj)文档 obj + mtl 格式 三维模型obj文件的格式解析 ...

  9. unity导出.obj模型文件

    unity导出.obj模型文件 最近使用realworldterrain生成真实地形遇到一个问题,就是该地形的坐标轴没有在中心位置,这样在旋转缩放操作时候就有各种问题,效果不好,于是想到先导出该地形为 ...

  10. Three.js OBJ模型的剖切

    一. 由于项目需要,我进行了模型剖切功能方面的研究,如果单纯实现模型剖切效果,我相信你会从这篇文章中得到收获. 二. 我对模型剖切功能的研究主要基于three.js中的webgl_clipping_s ...

最新文章

  1. html 图片剪裁控件,h5图像裁剪(基于canvas)插件Image-Clip
  2. UC 伯克利华人一作:卷积让视觉 Transformer 性能更强,ImageNet 继续刷点!
  3. 「面试必备」常见Java面试题大综合 马云见了都点赞
  4. odu oracle 价格_Oracle数据库ODU的几种恢复场景
  5. qt mysql怎么选表_Qt的Mysql数据库表操作(1)
  6. linux docker安装_Linux上安装docker的完美教程
  7. Silverlight中的InkPresenter(可以保存、加载)
  8. oracle 11i 供应商api,Oracle EBS AP 供应商API
  9. 关于python+django操作数据库中的表
  10. 8.11 Matching Networks 匹配网络
  11. 6.Shell 编程从入门到精通 --- 文件和文件系统
  12. python获取服务器端的时间
  13. 语音播报收款Java_Android实现收款成功金额的语音播报功能
  14. 《和平精英》枪械怎么搭配最无敌?大神竟然都爱平底锅?
  15. 中文句法分析_句法分析StanfordParser+依存句法分析pyhanlp
  16. sucks倒计时插件笔记
  17. 大学生动物介绍网页设计作品 dreamweaver作业静态HTML网页设计模板 保护动物网页作业制作
  18. java一维数组求质数_Java数组中最大质数和最小质数之间的差异
  19. taobao.trades.sold.increment.get( 淘宝店铺订单接口,淘宝店铺订单交易数据接口,淘宝店铺订单解密接口,淘宝店铺订单解密提额接口)代码对接教程
  20. Redis优化及配置

热门文章

  1. Eclipse JEE Mars 2 配置 WSO2 ESB 5.0.0 环境
  2. 图解: 线程状态转换(线程生命周期这一篇够用了)
  3. 什么是网站前端框架?目前常用的网站前端框架都有哪些?
  4. mongos、nanomsg、zeroMQ简述和go-mongos使用实例
  5. Hspice中的测量语句(II)
  6. 新手小白做短视频自媒体,入门级教程分享,抓紧收藏
  7. css设置文本(上下)居中显示
  8. 超长时间序列数据可视化的6个技巧
  9. 牛顿法详解(海森矩阵如何使用)
  10. 如何写一个脚本(附送一个脚本)