【openGL2021版】obj模型
【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模型相关推荐
- 【openGL2021版】obj格式文件
[openGL2021版]obj格式文件 大家好,我是Lampard猿奋~ 欢迎来到船新的openGL基础系列的博客,今天学习的是obj格式文件 (一)什么是obj格式文件 ...
- 【openGL2021版】阶段展示
[openGL2021版]阶段展示 大家好,我是Lampard猿奋~ 欢迎来到船新的openGL基础系列的博客,今天主要是展示这一个多月来的学习成果 (1)镜面光斑 上周我们 ...
- 仅用 480 块 GPU 跑出万亿参数!全球首个“低碳版”巨模型 M6 来了
继今年 3 月阿里达摩院发布国内首个千亿参数多模态大模型 M6(MultiModality-to-MultiModality MultitaskMega-transformer,以下简称 M6) 之后 ...
- threejs加载obj模型_Vulkan编程指南(章节31-载入模型)
章节31 载入模型 介绍 本章节我们将会渲染一个带有纹理的三维模型. 库 我们使用tinyobjloader库来从OBJ文件加载顶点数据.tinyobjloader库是一个简单易用的单文件OBJ加载器 ...
- Cesium - 转换obj模型为3D Tiles 并加载
先下一个工具:此工具要有nodejs才能用: https://github.com/PrincessGod/objTo3d-tiles: 再下一个:链接:https://blog.csdn.net/j ...
- OpenGL OBJ模型加载.
在我们前面绘制一个屋,我们可以看到,需要每个立方体一个一个的自己来推并且还要处理位置信息.代码量大并且要时间.现在我们通过加载模型文件的方法来生成模型文件,比较流行的3D模型文件有OBJ,FBX,da ...
- babyion 加载obj模型_在vue中使用babylonjs引入3d模型,打印mesh数据正常且无报错,但未在场景中显示,请问是什么环节出现了问题?...
已解决,由于项目是由vue-cli3搭建的,将obj模型放入public后需要用es6语法引入. 首先在return中定义publicPath: process.env.BASE_URL 然后在引用路 ...
- UE4之Obj模型解构解析
由于需求,必须研究obj模型的结构. 参考: Wavefront OBJ 英文文档 Warefront Object File (.obj)文档 obj + mtl 格式 三维模型obj文件的格式解析 ...
- unity导出.obj模型文件
unity导出.obj模型文件 最近使用realworldterrain生成真实地形遇到一个问题,就是该地形的坐标轴没有在中心位置,这样在旋转缩放操作时候就有各种问题,效果不好,于是想到先导出该地形为 ...
- Three.js OBJ模型的剖切
一. 由于项目需要,我进行了模型剖切功能方面的研究,如果单纯实现模型剖切效果,我相信你会从这篇文章中得到收获. 二. 我对模型剖切功能的研究主要基于three.js中的webgl_clipping_s ...
最新文章
- html 图片剪裁控件,h5图像裁剪(基于canvas)插件Image-Clip
- UC 伯克利华人一作:卷积让视觉 Transformer 性能更强,ImageNet 继续刷点!
- 「面试必备」常见Java面试题大综合 马云见了都点赞
- odu oracle 价格_Oracle数据库ODU的几种恢复场景
- qt mysql怎么选表_Qt的Mysql数据库表操作(1)
- linux docker安装_Linux上安装docker的完美教程
- Silverlight中的InkPresenter(可以保存、加载)
- oracle 11i 供应商api,Oracle EBS AP 供应商API
- 关于python+django操作数据库中的表
- 8.11 Matching Networks 匹配网络
- 6.Shell 编程从入门到精通 --- 文件和文件系统
- python获取服务器端的时间
- 语音播报收款Java_Android实现收款成功金额的语音播报功能
- 《和平精英》枪械怎么搭配最无敌?大神竟然都爱平底锅?
- 中文句法分析_句法分析StanfordParser+依存句法分析pyhanlp
- sucks倒计时插件笔记
- 大学生动物介绍网页设计作品 dreamweaver作业静态HTML网页设计模板 保护动物网页作业制作
- java一维数组求质数_Java数组中最大质数和最小质数之间的差异
- taobao.trades.sold.increment.get( 淘宝店铺订单接口,淘宝店铺订单交易数据接口,淘宝店铺订单解密接口,淘宝店铺订单解密提额接口)代码对接教程
- Redis优化及配置