基于OpenGL的三维仿真系统研究与应用.pdf

返回 相似 举报
基于OpenGL的三维仿真系统研究与应用.pdf_第1页
第1页 / 共3页
亲,该文档总共3页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述:
1994-2010 China Academic Journal Electronic Publishing House. All rights reserved. CN4321258/ TP ISSN 10072130X 计算机工程与科学 COMPUTER ENGINEERING 三维仿真;三峡 Key words OpenGL ;3D simulation;Three Gorges 中图分类号TP391. 9文献标识码A 1 引言 对于三维仿真的研究是目前技术领域的一个热点,借 用三维图形技术可以极大地提高应用的效果。开发设计一 个三维仿真系统所需涉及到的理论和技术是非常庞大和复 杂的,从应用层的角度来考虑,需要有一种方便、 有效的手 段来实现。目前,国内的企业、 厂家对于CAD/ CAM技术 的应用已有很好的认识,二维图形的应用已非常普及,随着 技术的提高,逐步向三维图形转换。不少企业也引进了一 些著名的设计系统,但这些系统价格昂贵,庞大复杂,专业 性强,许多功能极为繁杂。开发一种简便有效的三维仿真 系统对提高技术有一定的实际意义。为此,本文提出了一 种基于OpenGL的三维仿真系统的开发方法,通过应用于 大坝建设过程模拟中,验证了该方法的有效性和简便性。 2 OpenG L概述 [1] OpenGL是美国高级图形和高性能计算机系统公司 SGI开发的三维图形库,它广泛适合于计算机系统环境下 的三维图形应用程序设计接口,目前已成为开放式的国际 三维图形程序标准。OpenGL实际上是与图形硬件完全无 关的程序设计接口,由100多个相关命令与函数组成。 OpenGL是一种基于状态的执行机制,即OpenGL命令的 执行被置于各种状态中,而且一直有效地保持到有命令改 变这种状态为止。SGI公司为用户提供了三个连接库,使 其对于OpenGL的程序设计更简化,它们是 1实用库 GLU ,用以执行特殊任务,如坐标变换、 纹理映射、 多边形 网格化、NURBS曲线曲面等操作 ; 2 视窗系统扩展库 GLX ,用以把OpenGL设备场景与视窗系统相关联 ; 3 辅助库GLAUX ,用以初始化窗口、 监控输入输出、 绘制三 维对象等。 3 仿真软件的设计思想 在本软件中,采取面向对象OOA/ OOD的分析设计 思想,提取大坝的特征数据作为参数控制,将这些抽象的数 据依据面向对象原理封装为可操作的对象,通过数据的图 元化、 图元的参数化、 图元的属性化、 图元属性的参数化构 造坝体对象绘制类。数据的图元化就是将抽象数据表示转 化为图形或图像图元表示。图元一般为点 Point、 线 Line、 面Face和体Entity等,由这些图元构成可视化 56 3收稿日期2004205210 ;修订日期2004206212 作者简介王碧波1976 ,男,湖北鄂州人,硕士生,研究方向为计算可视化;毋国庆,教授,博士生导师,研究方向为需求工程、 知 识工程和计算可视化。 通讯地址430072湖北省武汉市武汉大学计算机学院 毋国庆;Tel 02787212529 ;E2mail hb. wangbibo Address School of Computer Science , Wuhan University ,Wuhan ,Hubei 430072 ,P. R. China 1994-2010 China Academic Journal Electronic Publishing House. All rights reserved. 的三维模型。图元的参数化包括集合造型的参数控制、 光 照模型的参数控制、 视点的参数控制、 投影类型等。图元属 性包括颜色、 透明性、 材料的光学性能及纹理等。这些参数 混合在一起构成可交互的三维显示。同时,提供了仿真参 数和算法策略的对象控制方法,实现实时交互、 实时仿真。 4 系统结构 在Win2000平台上,以Visual C 6. 0为开发工 具进行OpenGL编程设计,通过AutoCAD/ 3DMAX建立 模型,将模型数据转换到OpenGL ,建立显示列表,加入色 彩、 材质、 纹理、 光照、 背景等,选择定义的运动方式,确定合 适的投影、 视口的变换,则能实现对实体及过程的三维仿 真。系统的结构总框图如图1所示。 图1 系统的总体框架图 5 具体功能实现 5. 1 模型的建立和数据转换 在三维图形的处理过程中,要绘制许多复杂的图形,如 坝体的钢管、 廊道、 平台等,单纯利用OpenGL库提供的基 本几何体构造比较困难。对OpenGL分析研究可以知道, 这对模型的数据格式没有特殊的要求,并不要求把三维物 体模型写成固定的数据格式,故模型的建立可以借用通用 的建模软件工具,如AutoCAD、3DMAX。 最常用的三维模型数据是用许多小的多边形来拼合模 型的外观,文件中保存这些多边形的信息。由于OpenGL 通过了最基本的由多边形构成模型的方法,如三角形面片 的方法,因此从三维图形数据文件中如DFX的数据格式 读取模型数据,在OpenGL中进行绘制就非常容易了。当 模型建立后,在AutoCAD中可以直接存为DFX的数据格 式,也可以在3DMAX中转换为WRL的数据格式。通过 分析比较,这两种数据格式各有不同的特点,在应用中根据 不同的需要、 不同的目的采取相应的数据格式。 对于数据格式的转换,主要的核心是对模型的构造数 据进行转换,形成OpenGL的模型构造列表,作为OpenGL 的显示列表进行模型的重构[2]。在数据的转换过程中,模 型的数据主要是将以下三个关键的数据集进行处理 1 顶点集Vertices 顶点的坐标及其法向量的列表 ; 2 多 边形列表 PolyList 对应的是一组三角形,与材质等显示 的属性有关,是在OpenGL中进行模型重构的重要部分; 3相关三角形列表Common2TriangleList 一个指向多 边形列表 PolyList中每一个包含该顶点的三角形链表。 数据的转换作为一个单独的模块进行编程,模型在建 立时需注意模型的基准点。对于大坝中的各坝段是分开进 行转换的,需要考虑在模型重组时相互之间的连接关系。 5. 2 色彩、 材质、 纹理、 光照和背景的处理 考虑到模型的建立和数据的转换,在模型建立时,并不 对模型进行色彩、 材质、 纹理的赋予,在完成数据转换后,进 入OpenGL中再对其进行处理,使模型的数据简洁,转换方 便,提高开发的效率和系统的通用性。 IntCOpenGLView OnCreate LPCREATES. . .lpCreat2 eStruct { / /指定物体的初始材质、 光照和位置 GLfloatafMatSpecular[ ] {0. 6f , 0. 6f , 0. 6f , 1. 0f} ; GLfloatafMatShininess[ ] {50. 0f} ; GLfloatafLightAmbient[ ] {0. 1f , 0. 1f , 0. 1f , 1. 0f} ; GLfloatafLightDiffuse[ ] {0. 7f , 0. 7f , 0. 7f , 1. 0f} ; GLfloatafLightSpecular[ ] {0. 6f , 0. 6f , 0. 6f , 1. 0f} ; GLfloatafLightPosition[ ] {0. 0f , 0. 0f , 1. 0f , 0. 0f} ; glMaterialfvGL_FRONT_AND_BACK, GL_AMBIENT , af2 MatSpecular ; glMaterialfvGL_ FRONT_AND_BACK, GL _SPECULAR , afMatSpecular ; glMaterialfvGL_ FRONT_AND_BACK, GL _SHININESS , afMatShininess ; glLightfvGL_LIGHT0 , GL_AMBIENT , afLightAmbient ; glLightfvGL_LIGHT0 , GL_DIFFUSE , afLightDiffuse ; glLightfvGL_LIGHT0 , GL_SPECULAR , afLightSpecular ; glLightfvGL_LIGHT0 , GL_POSITION , afLightPosition ; glColorMaterial GL_FRONT_AND_BACK, GL_AMBIENT_ AND_DIFFUSE ;} 5. 3 运动方式的处理和控制 对仿真显示的动画效果来说,物体的运动实际上是显 示的位置。由于模型在OpenGL中是以显示列表的方式存 在,不需要重构,所以只需要知道物体的位置,结合显示技 术的处理,则可以得到很好的运动仿真效果。在系统的开 发中,物体运动的处理和控制是作为一个单独的模块来开 发的,通过传入运动的方式参数、 输出物体的位置参数来实 现运动的仿真。 5. 4 影、 视口等的变换与显示处理 三维物体是在三维坐标中定义的,但当计算机图形的 点绘制到屏幕上时,显示在屏幕上的三维物体将是二维的 图像。因此,将几何物体的三维坐标转化到屏幕上的像素 位置,需要经过以下三种计算机操作[3] 1通过矩阵相乘所表示的变换,包括造型、 视图和投 影等操作。这些操作包括旋转、 平移、 缩放、 反射、 正交投影 和透视投影。通常需要将几种变换结合起来绘制场景。 2由于场景是在一个矩形窗口中绘制,所以位于窗口 之外的物体或物体的一部分必须被裁剪掉。在三维计 算机图形中,以剪裁面所构成的范围对物体进行裁剪。 3在变换的坐标和屏幕像素之间必须建立对应关系, 这种操作称为视口变换。 Void CEmluateView OnSizeUINT nType ,int cx , int cy{ COpenGLView OnSizenType ,cx ,cy ; CClientDC clientDCthis ;/ /得到DC句柄 wglMakeCurrent clientDC. m_hDC ,hglrc ;/ /连接DC和RC glViewport 0 ,0 ,w ,h ;/ /重新设置视口 glMatrixModeGL_PROJ ECTION ;/ /标志对投影矩阵操作 glLoadIdentity ;/ /投影矩阵初始化为单位阵 glOrtho23. 03 GLfloat w/ h ,3. 0 3 GLfloat w/ h ,23. 0 , 3. 0 ,230. 0 ,30. 0 ;/ /设置正射投影矩阵 glMatriMode GL_MODELVIEW ;/ /标志对视点-模型矩阵 操作 glLoadIdentity ;/ /视点-模型矩阵初始化为单位阵 wglMakeCurrent NULL ,NULL ;/ /断开DC和RC} 66 1994-2010 China Academic Journal Electronic Publishing House. All rights reserved. 6 仿真结果显示及分析 结果分析 1借助通用建模工具单独建模优势明显图2和图3 中大坝分成13个坝段,单独建模,模型组合的效果完全是 无缝连接,这对于大型系统的协作建模有很好的参考价值, 模型的真实度依赖于模型建立的精细程度。 2仿真计算模拟和图形显示分离的策略提高了系统 的交互性计算模拟部分以存储过程的方式提交给数据库 服务器后台执行,前端用户可进行其他操作,计算结束返回 结果,以三维图形的方式显示仿真结果。 3形象直观结果的显示大坝浇筑的情况以显色在 大坝实体模型上显示出来,形象直观。 4模型显示操作支持多种视图效果,同时支持上下左 右前后等运动操作。 5系统对硬件要求较高,特别是显卡和处理器的能力 对图像的流畅程度有较大影响。 图2 大坝线框模型 图3 大坝实体模型 7 结束语 本文着重论述了在Windows环境下对于OpenGL进 行三维图形仿真的方法。对软件的设计思想也作了详细的 说明,并分析了系统中涉及到的关键技术。该方法已成功 地应用于葛洲坝集团三峡三期工程大坝浇筑仿真系统中, 开发实践与用户对软件的使用反馈表明,本文所提出的理 论与方法是可行的,而且获得了比较理想的效果。 参考文献 [1] SGI Corporation. OpenGL Reference Manual The Official Reference Document1Release1. 0[Z]119961 [2] 廖朵朵,张华军. OpenGL三维图形程序设计[ M].北京星 球地图出版社,19961 [3] Donald Hearn M , Pauline Baker. Computer Graphics [ M] 北京清华大学出版社,1997. [4] 唐泽圣.三维数据场可视化[ M].北京清华大学出版社, 1999. [5] Mason Woo , Neider Jackie , Tom Davis. OpenGL Program2 ming Guide[R]. Silicon Graphics Inc , 1997. 上接第46页 三种运算。根据分片的方式不同,实现这三种运算的方式 也不同。对于没有以分片形式进行分布存储的运算对象, 应依据集中式数据库的运算方法实现;对于那些以分片形 式存储于不同服务器上的运算对象,则必须考虑其运算的 特殊性,具体实现可参考分布式数据库相关算法。用户在 设计应用系统时,可以选择具体的实现方式,并注意在实现 时如何优化以达到较佳的效率。 5. 3 事务管理问题 GDCSS资源数据和CPU资源管理有三种代表性方 法中心式、 动态中心式和完全分布式。 中心式的关键特点是 1 GDCSS中只有一个负责事 务接收、 事务分配和事务结果返回的节点,称为控制节点; 2所有资源信息都在控制节点中登记。这种方法实现简 单,但如果控制节点崩溃,那么整个系统也就崩溃了,而且 控制节点容易成为系统的性能瓶颈。对中心式稍做改进, 允许系统存在一些备用控制节点,控制节点在工作时要把 它的工作状态和整个系统的工作状态包括数据资源状态 向这些备用控制节点报告。在控制节点失效时,其中一个 备用的控制节点立即自动成为控制节点,负责主持系统的 工作。同样,这种方式也存在性能瓶颈问题。 完全分布式是一种较理想的选择。在这种方式中,工 作在系统中的每个服务器要跟踪掌握本机和其它服务器的 情况,而且必须基于这些信息做出决定,对系统工作承担共 同责任。一台客户机在一个时刻只有一台DTP ,一个服务 器可以成为很多台客户机的DTP。为了实现负载平衡, DTP要能够根据它所记录的系统工作状态合理公平地进 行事务分配。事务在分配和处理过程中可能涉及到很多服 务器协同工作,当需要传输的数据量很大时,将事务移动到 数据端更有利。频繁的移动也会影响系统的性能,于是就 要变动客户机的DTP。 6 结束语 GDCSS是一种仿真分布式数据库系统,只要进行合理 的配置,打包成软件包,作为数据库应用系统的通用数据接 口就可以移植到自己的应用领域。在资金不足以承担分布 式数据库价格的情况下,又想拥有大型分布式数据库的速 度和容量,GDCSS不失为一个合适的选择。 参考文献 [1] 谢怡,燕彩蓉,彭勤科,等.数据库集群服务器的设计和管理 [J ].微电子学与计算机,2003 ,201 124. [2] 刘晖,彭勤科,沈钧毅.基于节点代理的数据库集群服务器 [J ].小型微型计算机系统,2003 ,242 2252229. [3] 周志逵,江涛.数据库理论与新技术[M].北京北京理工大学 出版社,2001. [4] [美]William Stallings.魏新梅,王涌译.操作系统 内核 与设计原理.第四版[M].北京电子工业出版社,2001. [5] 王婉菲,王欣,张志浩.数据库集群系统的研究与实施[J ] .微 型电脑应用,2003 ,1910 31233. [6] 门明,刘子安.分布式数据库[ M] .北京中国人民大学出版 社,2001. [7] 杨学良,张占军.分布式多媒体计算机系统教程[M].北京电 子工业出版社,2002. [8] 杨利,昌月楼.并行数据库技术[M].长沙国防科技大学出版 社,2000. [9] Rajkumar Buyya. High Perance Cluster Computing Ar2 chitectures and Systems. Volume 1[ M] . Person Education Inc ,1999. 76
展开阅读全文

资源标签

最新标签

长按识别或保存二维码,关注学链未来公众号

copyright@ 2019-2020“矿业文库”网

矿业文库合伙人QQ群 30735420