论基于OpenGL技术的三维建模设计.docxVIP

论基于OpenGL技术的三维建模设计.docx

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
论基于OpenGL技术的三维建模设计

论基于OpenGL技术的三维建模设计   [论文关键词]三维重构 OpenGL 3ds文件   [论文摘要]OpenGL即开放性图形库,它是一种高性能的开放式且功能强大的3D图形库,具有几百个指令和函数。本文讨论了两种将常见三维模型转入OpenGL中实现交互的方法,首先对3DS文件进行分析,然后给出转化的思路。从而将三维建模软件产生的三维模型移植到三维场景中,实现仿真。   OpenGL的英文全称是“Open Graphics Library”即“开放的图形程序接口”,因为其良好的可移植性和跨平台性,已逐渐成为高性能图形开发和交互式视景仿真的国际图形标准。它是一种高性能的开放式且功能强大的3D图形库,具有几百个指令和函数。使用这些指令和函数可以构造出高质量的静止物体模型和动态图像,并且可以实现对模型的实时交互操作过程。但是OpenGL中并没有提供建模的高级命令,其实现过程也是通过基本的几何图元点、线和多边形来建立三维立体模型的,过程比较繁琐,编程量较大。   现在有许多优秀的三维建模软件如3DS MAX,AUTOCAD等,都可以根据对象很方便地建立物体模型,且不需要编程便可很直观的构造模型,模型的外观更为精细。在OpenGL中使用三维模型一种比较好的方法是先用三维建模软件建立模型,再把这些模型转入OpenGL程序,对其进行控制。本文主要讨论将三维模型转入OpenGL程序常见的两种方法。      一、模型的三维数据格式   存储三维图形数据的文件格式有很多种,其中比较常见的有: obj格式、3DS格式、WRL格式等。在本文中以3DS格式为例进行介绍。在将三维模型转入OpenGL之前,首先将三维模型保存为3DS格式。在3DS文件中就保存了所建模型模型的所有三维数据信息,包括模型全部顶点、面、材质、法线和纹理等的数据信息。3DS文件是由许多块组成,每个块首先描述其信息类别,即该块是如何组成的。块的信息类别用ID来标识,块还包含了下一个块的相对位置信息,便于跳转。      二、将模型转入OpenGL程序的两种方法   (一)编写OpenGL程序,将模型转入   将模型转入OpenGL的程序中总共用到3种主要的数据结构:顶点集(Vertices)、多边形列表(PolyList)、和相关三角形列表(CommonTriangleList)。顶点集是顶点及其法向量的列表,多边形中的顶点将用在下标表示,OpenGL将这个数组视为一个顶点数组。这里存储的法向量是每一个顶点的法向量,而不是多边形的法向量。多边形列表包括一些列的材质,一个材质由这样一组属性组成:漫反射颜色、光照度、和纹理映射等。与每一种材质相对应的是一组三角形,每一个三角形由一组三元整数组表示,它们分别是三角形每个顶点在顶点集中的下标。相关三角形列表与顶点集具有相同的大小,它是一个指向多边形列表每一个包括该顶点的三角形的链表。 相关三角形列表被用来建立每个顶点的法向量。有了模型各种属性的信息,我们就可以在创立显示列表中根据这些指针变量中存入的相应数据来再现模型。在创建新的显示列表(g1NewList)中,使用glBegin(GL_TRIANGLES)和glEnd ()函数来绘制模型,所有具体属性的绘制均在这两个函数之间实现。对于每一个面的绘制,都是先赋好材质,再定义法线和渲染纹理,这些工作都完成后,就可以通过绘制顶点来绘制面了。程序中判断是否具有纹理部分省略,其实现过程与其它属性类似。然后在需要绘制模型的时候使用函数调用即可。   在OpenGL程序入3DS模型采用了根据3DS文件的数据格式来编写OpenGL程序来读取数据信息,在程序中生成模型的办法,这种方法在操作上实际是比较繁琐的,编程量很大。   (二)运用软件将模型转化为cpp文件,然后转入OpenGL程序   有一些现成的软件可以专门用来转换三维模型。3D Exploration便是其中的一种。3D Exploration也是一种专业的图像技术软件,它可以读入许多建模软件所建的模型文件,并也具有渲染环境和制作动画的功能。   我们使用3D Exploration软件读入模型的3DS文件,通过另存为将其转化成能为OpenGL所用的cpp文件。这样我们就较轻松的拥有了表示模型各种参数的代码,而不需要自己编写,从而大大减轻了编程的工作量。最终转化后的文件是由大量的浮点数组成,这些浮点数包含了模型面、材质、顶点、法线和纹理等的全部信息,并按照这些属性分类。然后我们在OpenGL程序中专门定义一个读取模型参数的类,在此类中实现读取相应的浮点数的函数的所有功能,再在主程序中调用。这段代码运行后,这些变量中就会存入对应表示相应属性的数据。最后再编程遍历所有的顶点,法线,纹理,从而生成模型。   通过这种方

文档评论(0)

zsmfjh + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档