Qt OpenGL加载OBJ模型

您所在的位置:网站首页 studio怎么导入obj文件 Qt OpenGL加载OBJ模型

Qt OpenGL加载OBJ模型

2023-09-04 04:30| 来源: 网络整理| 查看: 265

在加载OBJ模型文件之前首先要对OBJ文件的内容有所了解,在3d模型网站https://free3d.com/3d-models/3d-printable-obj

随便找了一个模型

它的OBJ文件内容为:

# File exported by ZBrush version 4.4 # www.zbrush.com #Vertex Count 20545 #UV Vertex Count 15953 #Face Count 20559 #Auto scale x=0.022208 y=0.022208 z=0.022208 #Auto offset x=-0.531189 y=-0.179415 z=0.083041 mtllib stickman2.mtl usemtl defaultMat v 14.23160078 -34.12469952 6.2026003 v 14.47159986 -34.17430379 6.32490063 v 14.4308002 -34.00520591 6.28000128 v 14.26249945 -33.91609966 6.17129972

...

vt 0.699 0.3513 vt 0.7029 0.352 vt 0.7295 0.3476

...

f 390/393 398/401 371/374 378/381 f 399/402 401/404 402/405 400/403 f 365/368 372/375 400/403 402/405

...

\n

注意:文件末尾会有一个\n字符。而3dsmax建模出的文件是\r\n..

其中最为关键的为开头为"v","vt","f"的几行数据,“v”代表了顶点数据,“vt”代表贴图坐标也及uv坐标数据,“f”代表了面数据,

其中f 1 2 3 4代表四边形顶点,f 1 2 3代表三角顶点,f 1/1 2/2 3/3 代表顶点索引/纹理索引,f 1//1 2//2 3//3 代表顶点索引//法线索引,f 1/1/1 2/2/2 3/3/3 代表顶点索引/纹理索引/法线索引.索引及代表这是第几个元素,如f 390/393 398/401 371/374 378/381

表示这个面有四个顶点分别是第390个顶点/393个uv ,第398个顶点/401个uv...。

先从最简单的读取单纯的顶点数据开始:

本文在Qt下使用OpenGL,选择使用QOpenGLExtraFunctions类采用OpenGL原生API进行编写。

读取数据部分:

bool ObjLoader::Load(QString fileName, QVector &vPoints) { if (fileName.mid(fileName.lastIndexOf('.')) != ".obj"&&fileName.mid(fileName.lastIndexOf('.')) != ".OBJ") { qDebug()


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3