论基于O p e n G L技术的三维建模设计(作者:商立安 发表时间:2014年11月)三维重构OpenGL3ds文件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)o顶点集是顶点及其法向量的列表,多边形中 的顶点将用在下标表示,OpenGL将这个数组视为一个顶点数组。
这 里存储的法向量是每一个顶点的法向量,而不是多边形的法向量多 边形列表包括一些列的材质,一个材质由这样一组属性组成:漫反射 颜色、光照度、和纹理映射等与每一种材质相对应的是一组三角形, 每一个三角形由一组三元整数组表示,它们分别是三角形每个顶点在 顶点集中的下标相关三角形列表与顶点集具有相同的大小,它是一 个指向多边形列表每一个包括该顶点的三角形的链表作者:商立安 发表时间:2014年11月) 相关三角形列表被用来建立每个顶点的法向量有了模型各 种属性的信息,我们就可以在创立显示列表中根据这些指针变量中存 入的相应数据来再现模型在创建新的显示列表(gINewList)中,使 用g旧egin(GL_TRIANGLES)和glEnd ()函数来绘制模型,所有具体 属性的绘制均在这两个函数之间实现对于每一个面的绘制,都是先 赋好材质,再定义法线和渲染纹理,这些工作都完成后,就可以通过 绘制顶点来绘制面了程序中判断是否具有纹理部分省略,其实现过 程与其它属性类似然后在需要绘制模型的时候使用函数调用即可在OpenGL程序入3DS模型采用了根据3DS文件的数据格式 来编写OpenGL程序来读取数据信息,在程序中生成模型的办法, 这种方法在操作上实际是比较繁琐的,编程量很大。
二)运用软件将模型转化为cpp文件,然后转入OpenGL程 序有一些现成的软件可以专门用来转换三维模型3D Exploration 便是其中的一种3D Exploration也是一种专业的图像技术软件,它 可以读入许多建模软件所建的模型文件,并也具有渲染环境和制作动 画的功能我们使用3D Exploration软件读入模型的3DS文件,通过另存 为将其转化成能为OpenGL所用的cpp文件这样我们就较轻松的 拥有了表示模型各种参数的代码,而不需要自己编写,从而大大减轻 了编程的工作量最终转化后的文件是由大量的浮点数组成,这些浮 点数包含了模型面、材质、顶点、法线和纹理等的全部信息,并按照 这些属性分类然后我们在OpenGL程序中专门定义一个读取模型 参数的类,在此类中实现读取相应的浮点数的函数的所有功能,再在 主程序中调用这段代码运行后,这些变量中就会存入对应表示相应 属性的数据最后再编程遍历所有的顶点,法线,纹理,从而生成模 型通过这种方法实现3DS格式模型的导入,编程简单,但是缺点 也很明显,生成的.cpp文件体积较大,无论是存储或传输都很不方便将三维模型转入OpenGL程序以实现人机交互控制在工程、游 戏等领域有着广泛的应用,特别是随着虚拟现实技术的发展,更显现 出它的重要意义和实用价值。
本文结合目前的主流技术对三维模型转 入OpenGL程序的方式进行了 一定的研究和探索参考文献和平鸽工作室编著,OpenGL三维图形系统开发与实用技术 (实用技术篇),重庆大学出版社,2003OpenGL体系结构审核委员会/Dave Shreiner/Mason Woo等 编著,OpenGL编程指南(第四版),人民邮电出版社,2005。