opengl关于obj文件相关知识
首先看一下obj文件格式:
obj文件中可以有v(顶点位置)、vt(顶点纹理坐标)、vn(顶点法向量)、f(面)开头的四种类型数据。
所有的obj文件中都有v型数据。格式如下:
v 0.437500 0.164062 0.765625
v -0.437500 0.164062 0.765625
v 0.500000 0.093750 0.687500
- vt(顶点纹理坐标),格式如下:
vt 0.651583 0.342268 vt 0.652889 0.355515 vt 0.641220 0.366408 vt 0.628246 0.364052 vt 0.654194 0.368763
2. vn(顶点法向量坐标),格式如下:
vn 0.837179 -0.311379 0.449639 vn 0.878055 0.385575 0.283465 vn 0.276184 0.130417 0.952215 vn 0.287141 -0.526486 0.800227 vn 0.255366 0.316928 0.913425
3.f(面),格式如下:
f 6203/4489/4130 1062/4483/4124 6215/4510/4151 3078/4513/4154 f 5471/2749/2665 3078/4513/4154 6216/4514/4155 710/2752/2668 f 3078/4513/4154 6215/4510/4151 1067/4512/4153 6216/4514/4155 f 1006/3940/3718 6008/3937/3734 3079/4515/4156 6218/4516/4157 f 6008/3937/3734 714/2761/2677 5476/2760/2676 3079/4515/4156
现一一分析介绍:
VN[0] = (vnSets[firstVertexIndexf])[0];//第一个点的法向量的x
VN[1] = (vnSets[firstVertexIndexf])[1];//第一个点的法向量的y
VN[2] = (vnSets[firstVertexIndexf])[2];//第一个点的法向量的z
glNormal3f(VN[0], VN[1], VN[2]);
glVertex3f(V1[0], V1[1], V1[2]);VN[0] = (vnSets[secondVertexIndexf])[0];//第二个点的法向量的x
VN[1] = (vnSets[secondVertexIndexf])[1];//第二个点的法向量的y
VN[2] = (vnSets[secondVertexIndexf])[2];//第二个点的法向量的z
glNormal3f(VN[0], VN[1], VN[2]);
glVertex3f(V2[0], V2[1], V2[2]);VN[0] = (vnSets[thirdVertexIndexf])[0];//第三个点的法向量的x
VN[1] = (vnSets[thirdVertexIndexf])[1];//第三个点的法向量的y
VN[2] = (vnSets[thirdVertexIndexf])[2];//第三个点的法向量的z
glNormal3f(VN[0], VN[1], VN[2]);
glVertex3f(V3[0], V3[1], V3[2]);VN[0] = (vnSets[fourthVertexIndexf])[0];//第四个点的法向量的x
VN[1] = (vnSets[fourthVertexIndexf])[1];//第四个点的法向量的y
VN[2] = (vnSets[fourthVertexIndexf])[2];//第四个点的法向量的z
glNormal3f(VN[0], VN[1], VN[2]);
glVertex3f(V4[0], V4[1], V4[2]);
这样就可以绘制出四边形了。
f 47 1 3
f 4 2 48
f 45 3 5
f 6 4 46
复杂的可以为:
f 3643/6900/6406 7305/6826/6332 1602/6797/6303 7332/6880/6386
f 1592/6749/6259 7343/6901/6407 3644/6902/6408 7269/6750/6260
f 7343/6901/6407 1631/6903/6409 7344/6904/6410 3644/6902/6408
f 7269/6750/6260 3644/6902/6408 7345/6905/6411 1595/6753/6263
面是由点构成的。一行有几个空格(n)区分,就有n+1个点。opengl允许绘制多边形,所以一行可以有多个点构成。
opengl关于obj文件相关知识相关推荐
- unity动态加载.obj文件相关
.obj文件加载相关 QA: 要点 .obj文件结构 .mtl文件结构 材质匹配问题 动态加载obj文件 unity资源商城插件:Runtime Obj Importer QA: q: 如何动态加载o ...
- Qt|OpenGL对obj文件的认识以及如何去解析(opengl+qt构造地球模型)
首先来个简单点的.obj文件(如下图所示): 总体处理伪代码如下: void GraphicsModel::init(const QString filePath) {QFile file(fileP ...
- [OpenGL]导入obj文件
通常来说我们构建一个模型是比较复杂的工作,那么我们还有什么途径获得模型呢.其中一种方法就是导入obj模型,不要被这个名词给吓到了,其实就是把一个制作好的模型保存到一个文件中,我们称为obj文件. 先上 ...
- SQLServer数据库文件相关知识笔记
1.数据库文件概念 数据库文件是SQLServer数据库的物理体现,和计算机的普通文件一样存储在计算机的磁盘空间当中.作为数据库记录和日志等其他信息的存储载体. 2.数据库文件分类 数据库文件主要包括 ...
- linux C语言 文件相关知识01
ps:文件描述符表,与文件指针 有什么联系??? 1. linux 系统,一般一个进程 允许打开的最大文件数量是 1024, 对应内核区的进程控制块(pcb)中的文件描述符表的范围, 在shell输入 ...
- .podSpec文件相关知识整理
文章目录 前言 一. .podspec文件的创建 二. .podspec文件的常用配置字段介绍 三方 .framework和.a Library pch xib和storyboard 资源设置 BIT ...
- C语言文件重点知识总结(冲冲冲)
函数库查找链接:C 标准库 – 参考手册 | 菜鸟教程 文章目录 文件类型 C语言有关文件函数 文件缓冲区 总结 前言 文件是硬盘储存数据内容必不可少的一部分,所以文件相关知识我们应当有所认知并熟练使 ...
- 3D中obj文件操作
3D中的OBJ文件格式详解:https://blog.csdn.net/shenshen211/article/details/51740988 三维模型obj文件的格式解析与读取 :https:// ...
- 【我的OpenGL学习进阶之旅】关于3D模型知识之:什么是obj文件和mtl文件
文章目录 一.学习3D模型的背景 二.3D模型效果展示 三.好奇3D模型文件是啥内容? 3.1 打开.obj文件 3.2 打开.obj文件 3.3 在外部使用查看3D模型的软件打开.obj文件 3.3 ...
最新文章
- CSP 201912-1 报数 python实现
- poj 2352 Stars(线段树)
- 关于mtl_transactions_interface表序列
- linux字符cdev和Inode的关系
- 分布式环境下的session共享
- 基于单片机的自动追日系统设计_基于单片机的自动浇花系统的设计
- Linux服务部署之NTP时间服务器
- java c 客户端_java基于C/S模式实现聊天程序(客户端)
- 5G远程驾驶亮相进博会 网友:以后考个远程驾照?
- python创建虚拟环境打包_用虚拟环境保存库文件--Python打包-阿里云开发者社区
- 高分辨率:遥感卫星影像
- pip卸载安装的所有python包
- 门宝——门厂快速录单系统|木门录单软件
- 【数据挖掘概念与技术】学习笔记5-数据立方体技术
- 使用gb2312乱码,utf-8正常
- druid连接池监控
- Matlab中如何使函数作为参数传递
- 【算法•日更•第九期】树型动态规划详解:二叉苹果树
- 三方账号授权登录系统设计思路
- 【Python搞搞轻量Blog】第一发 Flask入门