OpenGL环境下模型文件的加载(3DS\OBJ)

open3d学习系列之1读取深度图和彩色图生成点云数据 【代码】open3d学习系列之1读取深度图和彩色图生成点云数据。 阅读详情

        网上目前有很多opengl环境下3DS模型加载的例子,但是OBJ模型文件的加载相对来说要匮乏一些。大部分OBJ读取的教程都是简单的显示出模型,而且一般模型还都是只有一个对象(OBJ)。而我在学习3DS和OBJ模型读取的时候也在网上参考了大量的资料和源码,在此也向原作者表示感谢。因为我的代码汲取了别人的成果,也为了给学习加载模型的童鞋一点借鉴,估本人也会将代码公布。由于目前CSDN也提供代码库了,所以我的代码就放在上面,供需要的童鞋自由下载。

代码库地址:https://code.csdn.net/ourlab/qtglmodel

        本教程主要是基于Qt5.2开发而来,主要用到了着色器(很简单的部分),VBO(这里没有详细解释)。代码应该比较好理解,只是代码写的不是很规范,仅供大家参考。关于3DS和OBJ模型文件的解析,网上的资料实在太多了,我就不复制粘贴了,也免得在学习的过程中找不到重点,这里主要把我参考的给大家分享。

        3DS:

一个读取3DS

基于Opencv2.4.11+OpenGL(Qt5.6.0)实现增强现实(五) 增强现实之openGL 3D模型渲染 之前写到可以通过增强现实在特定的标记出渲染3D的立方体,但是增强现实远不是只有这些,还可以渲染一些3D的物体甚至可以使物体运动。首先上几张效果图。 接下来将对openGL渲染obj三维模型及纹理渲染进行介绍。 obj文件 首先需要看下obj文件的格式,这里只介绍需要用的参数,详细介绍可以参考百度百科。这四个量就是我们需要从o 阅读详情

相关推荐

opengl导入3DS文件(带纹理)之填坑

一、3ds导入工具 CLoad3DS.h和CLoad3DS.cpp " target="_blank">CLoad3DS.h和CLoad3DS.cpp 二、使用方法 1、在你工程中加入头文件       #include "CLoad3DS.h"   2、在定义全局变量的地方加入以下代码 CLoad3DS *gothicLoader=new(CLoad3DS);   t3DMod

qq_28088659的博客 5107

opengl加载显示3D模型3d类型文件

opengl加载显示3d模型UC类型文件前置条件项目展示项目完整C++源代码 前置条件 opengl三方库freeglut,显示3d格式的三维模型文件, 项目展示 项目完整C++源代码 #include <stdlib.h> #include <stdio.h> #ifdef __APPLE__ #include <freeglut.h> #else #include <GL/freeglut.h> #endif #define COMMAND_USAGE

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1726

OpenGL之纹理贴图(2):Texture Objects

在《OpenGL之纹理贴图(2):Basic》中我们了解了一些关于纹理贴图的基础知识。在随后的学习中,我又意识到这样的问题:如何在不同纹理之间自由的切换,即如何给不同的物体映射不同的纹理。在OpenGL 1.1中引入的新特性Texture Objects可以很好的解决这个问题。Texture Object的主要思想是用Texture Object来维护某些纹理状态,在渲染阶段将Texture Ob

Computer Graphics Changes Your Life 5369

opengl颜色模型

效果图: #include <GL/glut.h> void init(void) { glClearColor(1.0, 1.0, 1.0, 0.0); glShadeModel(GL_SMOOTH); } void triangle(void) { glBegin(GL_TRIANGLES); glColor3f(1.0f, 0.0f, 0.0f); glVertex2f(5.0f, 5.0f); glColor3f(0.0f, 1.0f, 0.

qq_45228525的博客 348

python的open3d来读取 Regard3D 导出的ply文件,无法读取颜色的解决方案

本来认为,也许是因为Regard3D无法导出颜色信息,但利用ply文件在线读取网站打开ply文件时,却能读取正确的信息,所以可能是Regard3D导出的ply文件格式与open3d能读取的文件格式不同。由于VScode能直接打开ply文件,阅读里面的点云数据,通过反复确认,Regard3D导出的ply文件确实是有颜色信息的,并且颜色信息在最后三列。一开始是直接使用open3d来读取Regard3D导出的ply文件。因为没办法直接使用open3d来读取颜色信息,所以只能自己定义一个函数来读取。

weixin_65046272的博客 577

Windows下Qt开发环境:OpenGL导入3DMax模型(.3DS)

参考:http://blog.csdn.net/cq361106306/article/details/41876541 效果: 源代码: 解释: CLoad3DS.h为加载3DMax模型的头文件,CLoad3DS.cpp为加载3DMax模型的实现文件, nehewidget.h为Qt下使用OpenGL文件,nehewidget.cpp为Qt下使用OpenGL实现文件。 注意: ...

weixin_30580943的博客 1606

openGL中导入3Dmax模型(转)

前些天在网上搜这个问题时几乎没找到肯定的明确的方法,偶尔在space里看到一篇解决方法,没试过验证一下,放到网上先,共享一下。 opengl----使用3dmax建模后怎样把模型导入 ////////// importmodel.h///////////////////////////////////////////// #include #include #include /

u010351567的专栏 4752

C++ 3D模型加载入门:tinyobjloader轻量级OBJ解析库实战指南

3D模型加载是计算机图形学与可视化应用的基础环节,其核心原理是将模型文件中的几何与材质数据解析为程序可操作的内存结构。OBJ作为一种广泛支持的纯文本格式,因其结构简单、兼容性强,成为入门和轻量级项目的理想选择。tinyobjloader正是针对这一需求而生的C++单头文件库,它专注于OBJ格式解析,不依赖任何图形API,将顶点、法线、纹理坐标等数据高效提取,为后续的GPU渲染或网格处理提供纯净的输入。在快速原型开发、嵌入式环境或工具链构建等场景中,这种轻量、专注的设计哲学极具技术价值。本文以tinyobjl

weixin_34327223的博客 411

OBJ + MTL 模型格式完全指南:从入门到精通

只有顶点索引(几何体)f 1 2 3# 顶点 + 纹理坐标(v/vt)# 顶点 + 法线(v//vn)# 完整形式(v/vt/vn)在一个面中,所有顶点的格式必须一致OBJ支持多边形(不限于三角形),但现代图形API通常需要先三角化索引从1开始,这是最容易犯的错误。

a181001_的博客 174

Unity导入OBJ模型变白模?全链路排查与解决指南

在3D图形开发中,模型、材质与纹理的协同工作是实现视觉表现的基础。其核心原理在于,建模软件生成的几何数据(如.obj文件)需与材质定义(.mtl文件)及纹理贴图正确关联,引擎通过着色器(Shader)和渲染管线(Render Pipeline)解析这些数据并最终渲染出画面。这一流程的技术价值在于确保了资源在不同平台和工具间的可移植性与一致性,是游戏开发、数字孪生等应用场景的基石。当数据链路在材质球生成或纹理引用环节中断时,就会出现模型显示异常,例如在Unity中表现为纯白色的“白模”问题。本文聚焦于这一典型

weixin_34414196的博客 390

Unity导入OBJ模型变白模?Blender导出设置与材质修复全攻略

在3D图形渲染流程中,材质与贴图是赋予模型视觉细节的核心资源。其原理是通过着色器程序,将纹理图像映射到模型表面的UV坐标上,从而模拟颜色、凹凸、光泽等物理属性。这一技术的价值在于能以极低的几何成本实现丰富的视觉表现,是游戏开发、影视制作和数字孪生的基础。在实际的跨软件工作流中,例如从Blender导出模型至Unity引擎时,常见的挑战是材质信息丢失导致的模型显示为纯白色,即“白模”现象。这通常源于OBJ格式的局限性及贴图路径的断裂。本文将深入解析Blender中正确的OBJ导出参数配置,特别是“路径模式”和

weixin_30617797的博客 483

soildworks模型导入MFC对话框

基于openGL 导入OBJ模型到MFC对话框,可以显示纹理,缩放

超超吵吵的专栏 1615

Min3D测试-在Android里面载入MMD模型-快速3D模型显示测试-By黑月君

快速在Android里面实现3D人物显示 一直在研究Android上实现女仆美豆酱(个人助理)的研究,在制作完毕短信和电话提醒功能后,希望可以实现3D人物的快速显示 至少可以独立显示模型及其动作,主要是因为前面两个功能制作的过程中发现图片太难获取了,没有美工没办法,故试试3D 1.查看一...

chezheng2450的博客 809

基于OpenCASCADE自制三维建模软件(十)编译ASSIMP库

文章目录一、ASSIMP介绍二、生成ASSIMP工程三、编译工程四、导入ASSIMP库项目仓库 一、ASSIMP介绍 Assimp是Open Asset Import Library(开放的资产导入库)的缩写。Assimp能够导入很多种不同的模型文件格式(并也能够导出部分的格式),它会将所有的模型数据加载至Assimp的通用数据结构中。当Assimp加载模型之后,我们就能够从Assimp的数据结...

jelatine的博客 4233

OpenGL导入3DS专题

最近一直在研究如何将3D模型导入OpenGL,略微有些进展,在附录部分把它记录下,希望能起到抛砖引玉的作用,有不足的地方,请大家指出

You can you up 7456

使用C/C++加载和显示3DS模型文件OpenGL实现

请注意,这只是一个简化的示例,并没有包含完整的3DS文件解析和渲染过程。实际上,解析3DS文件并提取顶点数据是一个相当复杂的任务,涉及到解析块的结构、读取顶点坐标、法线和纹理坐标等信息。如果你需要完整的3DS文件加载和渲染功能,建议使用现有的第三方库,如lib3ds或Assimp。然后,我们可以按照3DS文件的格式读取文件内容,并提取顶点数据。在这里,我们将使用自己编写的代码来加载3DS文件。在本文中,我们将探讨如何使用C/C++编写代码,以加载和显示3DS模型文件3DS格式)。,以及绘制模型的函数。

HackNebulaZ的博客 364

【深圳大学计算机图形学】实验四 带纹理的OBJ文件读取和显示

这一行代码说明了纹理坐标是一个包含两个浮点数的向量,数据类型是GL_FLOAT,步长为0(因为纹理坐标是紧密排列的),偏移量根据之前顶点、颜色和法向量数组的大小计算而来。循环中,通过极坐标系的转换,计算每个切片上的顶点坐标 (x, y, z),其中 x 和 y 分别为极坐标的变换,而 z 为 0,表示圆盘在 xy 平面上。存储纹理坐标和法向量索引: 将每个侧面三角面片的纹理坐标的下标存储在 texture_index 中,法向量的下标与顶点坐标的下标相同,存储在 normal_index 中。

归忆_AC的博客 3644
上一篇: Qt Creator中.pro跨平台(Win32\Linux)的写法
下一篇: WPS下EndNote文献管理软件的使用
Jianguo_pro
博客等级 码龄12年 3粉丝 5原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值