如何用opengl将obj数据呈现出3d模型

作者&投稿:召蝶 (若有异议请与网页底部的电邮联系)
opengl怎么读入obj文件并以网格模型显示~

这一看就是作业.替写50

把顶点法线坐标分别存到buffer上,然后draw的时候x/y/z用这三个的index,shader里面分别根据index读出来buffer对应的数据,然后再计算。
感觉应该可行,不过没这么做过不确定成不成,需要写shader所以比较麻烦

想要顺利读取obj模型文件,先要了解这种文件的格式,OBJ文件格式是非常简单的。这种文件以纯文本的形式存储了模型的顶点、法线和纹理坐标和材质使用信息。OBJ文件的每一行,都有极其相似的格式。在OBJ文件中,每行的格式如下:
前缀 参数1 参数2 参数3 ...

其中,前缀标识了这一行所存储的信息类型。参数则是具体的数据。OBJ文件常见的的前缀有
v 表示本行指定一个顶点。 前缀后跟着3个单精度浮点数,分别表示该定点的X、Y、Z坐标值
vt 表示本行指定一个纹理坐标。此前缀后跟着两个单精度浮点数。分别表示此纹理坐标的U、V值
vn 表示本行指定一个法线向量。此前缀后跟着3个单精度浮点数,分别表示该法向量的X、Y、Z坐标值
f 表示本行指定一个表面(Face)。一个表面实际上就是一个三角形图元。此前缀行的参数格式后面将详细介绍。
usemtl 此前缀后只跟着一个参数。该参数指定了从此行之后到下一个以usemtl开头的行之间的所有表面所使用的材质名称。该材质可以在此OBJ文件所附属的MTL文件中找到具体信息。
mtllib 此前缀后只跟着一个参数。该参数指定了此OBJ文件所使用的材质库文件(*.mtl)的文件路径
现在,我们再来看一下OBJ文件的结构。在一个OBJ文件中,首先有一些以v、vt或vn前缀开头的行指定了所有的顶点、纹理坐标、法线的坐标。然后再由一些以f开头的行指定每一个三角形所对应的顶点、纹理坐标和法线的索引。在顶点、纹理坐标和法线的索引之间,使用符号“/”隔开的。一个f行可以以下面几种格式出现:
f 1 2 3 这样的行表示以第1、2、3号顶点组成一个三角形。
f 1/3 2/5 3/4 这样的行表示以第1、2、3号顶点组成一个三角形,其中第一个顶点的纹理坐标的索引值为3,第二个顶点的纹理坐标的索引值为5,第三个顶点的纹理坐标的索引值为4。
f 1/3/4 2/5/6 3/4/2 这样的行表示以第1、2、3号顶点组成一个三角形,其中第一个顶点的纹理坐标的索引值为3,其法线的索引值是4;第二个顶点的纹理坐标的索引值为5,其法线的索引值是6;第三个顶点的纹理坐标的索引值为6,其法线的索引值是2。
f 1//4 2//6 3//2这样的行表示以第1、2、3号顶点组成一个三角形,且忽略纹理坐标。其中第一个顶点的法线的索引值是4;第二个顶点的法线的索引值是6;第三个顶点的法线的索引值是2。
值得注意的是文件中的索引值是以1作为起点的,这一点与C语言中以0作为起点有很大的不同。在渲染的时候应注意将从文件中读取的坐标值减去1。


WAR3 提示以下错误 希望有高手翻译 那里出问题了
关闭不必要的非系统进程,停止使用防火墙,反病毒软件,截图软件。g.图象编码器冲突:如果你为了编辑影片或者播放安装了任何图象编码器包,例如Nimo’s编码器包,请卸载他们然后再试着运行游戏.h.试着用opengl或者软件处理光源模式进行游戏:我简单说一下,创建一个war3.exe的快捷方式,右键点击它,在目标拦...

何为AGP?
在后面你们将看到测试结果。无论如何,现在的3D游戏所用到的多边形还远没有达到AGP4X的极限,所以我们不得不再次等待“将来的话题”。眼下真正用到极其复杂的3D物体的软件主要是专业的OpenGL软件,所以用它们来做测试应该是再合适不过的了。有关AGP的其他方面 在以前的文章里面,我曾经提到100MHz的内存...

大型单机游戏用什么语言开发的
首先在图形渲染方面,例如光照阴影处理等等,现代显卡一般是通过可编程着色器实现对图形效果的控制,所采用的编程语言一般是一些着色器语言,例如Direct X?采用的HLSL,OpenGL使用的GLSL等等,语法类似C语言,游戏执行时被编译加载到显卡上,在实现硬件渲染速度的同时又实现了软件编程的灵活性。大型游戏开发的绝...

我用C写了<<计算机图形学>>中的一个简单的OpenGL程序,编译和连接都没问...
不会是系统问题,可能是库的问题。比如没有加载glut.dll。

基于钻孔数据的可视化空间分析方法研究与实现:空间数据可视化
基于本文提出的数据挖掘模型,在Windows环境下,采用三十口钻井数据,利用VC++和OPENGL开发出了基于钻孔数据的三维空间数据挖掘系统。本系统对研究区域的矿体分布情况具有一定的自动推理能力,避免了不必要的人工干预 ,从而扩展了钻孔数据建模的适用范围和表现能力。但此方法仍然存在一些不足 ,如对地质构造扭曲...

可视化系统什么意思
Octane2把具有突破性的新一代Vpro3D图形系统、先进的交叉开关(Cros *** ar)结构和最新的MIPS RISC处理器有机地结合在一起。有了Octane2及其空前的精确性、交互性和快速的图形功能,用户可以解决最富有挑战性的三维造型、可视化及图形处理问题。 Octane2含有集成在一块芯片上的OpenGL 1.2的核心功能及图像扩展的部分...

cs用SOFTWARE模式的利与弊
半条命系列的游戏(包括CS)都是基于Open GL开发的,很简单的说,只有用Open GL玩CS才能真正的流畅.用Software你感觉起来似乎速度很快,但是S模式只支持很小的分辨率,画面粗糙.而且它的流畅性不如O模式好,用鼠标会感觉非常的迟钝.建议你重新安装显卡驱动,如果还用不了O模式,那就是显卡硬件出问题了 ...

Ps Cs3和Ps Cs4有何主要功能的调整?
9. 功能强大的打印选项:Photoshop CS4 打印引擎能够与所有最流行的打印机紧密集成,还可预览图像的溢色区域,并支持在 Mac OS 上进行 16 位图像的打印。10. 3D 加速:启用 OpenGL 绘图以加速 3D 操作。11. 功能全面的 3D 工具:可以直接在 3D 模型上绘画、将 2D 图像绕 3D 形状折叠、将渐变...

什么库是什么意思?
在软件开发中,有大量的不同类型的库可供使用,包括图形库、网络库、数据库、数学库等。例如,程序员可以使用OpenGL或DirectX等图形库来创建游戏或图形界面程序。使用Netty或Socket等网络库来实现客户端和服 库,也被称为软件库、软件包或模块,是一种计算机软件的组件。库可用于存储程序中特定的功能、数据...

求编一道c++,我完全不会啊:
glClear(GL_COLOR_BUFFER_BIT);glRectf(-0.5f, -0.5f, 0.5f, 0.5f);glFlush();} int main(int argc, char *argv[]){ glutInit(&argc, argv);glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);glutInitWindowPosition(100, 100);glutInitWindowSize(400, 400);glutCreateWindow("第一个OpenGL...

宜宾县17251498699: 如何用opengl将obj数据呈现出3d模型 -
潭荣蝎毒: 想要顺利读取obj模型文件,先要了解这种文件的格式,OBJ文件格式是非常简单的.这种文件以纯文本的形式存储了模型的顶点、法线和纹理坐标和材质使用信息.OBJ文件的每一行,都有极其相似的格式.在OBJ文件中,每行的格式如下: ...

宜宾县17251498699: 如何用opengl的函数显示obj模型 -
潭荣蝎毒: 把顶点法线坐标分别存到buffer上,然后draw的时候x/y/z用这三个的index,shader里面分别根据index读出来buffer对应的数据,然后再计算. 感觉应该可行,不过没这么做过不确定成不成,需要写shader所以比较麻烦

宜宾县17251498699: 你好,请问如何将obj文件导入到opengl中?我是菜鸟,请大师指教!! -
潭荣蝎毒: 用 fgets(char*buf,intbufsize,FILE*stream)将一行的数据读取到buf中 然后sscanf(buf,"format",&arg);将读取到的数据按照格式读取到变量里,这样循环递归就能读取出整个obj了 比如 fgets(data,255,pi); sscanf(data,"v %f %f %f",&v1,&v2,&v3)读取三个顶点数据

宜宾县17251498699: 如何将3DMax导出的obj文件加载到OPenGl中画出图形
潭荣蝎毒: 以前读过3ds的文件代码,格式是公开的,可以在官网或者google搜 格式说明.你找到顶点段,对象段,直接转化成vertexBuffer就行了 .剩下的 你应该已经会了 .

宜宾县17251498699: 怎么实现OBJ文件导入到OPENGL中 -
潭荣蝎毒: 不建议使用obj, 它里面的属性很少.不实用.最好安装个maya/3dsmax,然后把obj转化成 dae 格式.dae格式是xml结构.能看懂

宜宾县17251498699: 如何将3DMax导出的obj文件加载到OPenGl中画出图形 -
潭荣蝎毒: 你这明明有fbx啊.obj在最下面倒数第几个,你翻翻,仔细找. obj你往下翻,一定有的,你这么马虎一定是看走眼了.我家用的机器上现在没装3d,就算有也是我机器上的.

宜宾县17251498699: 有没有吧友尝试过用OpenGL导入obj格式模型文件 -
潭荣蝎毒: 3Ds Max导入模型时,如果选择的是合并或者替换当前场景,确实可以批量选择,而且导入文件格式是max,但是单纯导入obj等文件是不能批量选择的,所以麻烦也是麻烦了点,只能一个个勾选了.望采纳!

宜宾县17251498699: obj的文件怎么制作 -
潭荣蝎毒: opengl读取obj文件,很好用,对于正在学习opengl读取obj格式点云的朋友很有帮助.

宜宾县17251498699: 如何用opengl读出obj顶点 -
潭荣蝎毒: 想要顺利读取obj模型文件,先要了解这种文件的格式,OBJ文件格式是非常简单的.这种文件以纯文本的形式存储了模型的顶点、法线和纹理坐标和材质使用信息.OBJ文件的每一行,都有极其相似的格式.在OBJ文件中,每行的格式如下: ...

宜宾县17251498699: Android OpenGL怎么加载obj模型文件 -
潭荣蝎毒: 你会用opengl显示一个带有纹理的三角形吗? 如果会的话你去了解下obj文件格式就可以自己写了(obj文件真的很简单,非常好理解),花不了多少时间. 如果连纹理都不会贴,那还是先把opengl基础搞定再说.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网