您的位置:首页 > 运维架构

基于OpenGL的三维地形可视化研究

2010-04-10 22:45 246 查看
张先为
(山东正元地理信息工程有限责任公司,山东 济南250014)

摘要:本文介绍了OpenGL基本概念以及数字地面模型和构网技术,阐述了基于OpenGL实现三维地形可视化的基本步骤,并对其重要步骤进行了详尽的研究和讨论,并通过键盘,实现了人机交互的地形实时动态显示,实现了三维地形可视化。
关键词:OpenGL;三维;可视化

Research on the visualization of 3D topography based on OpenGL
Zhang Xianwei
(Shandong Zhengyuan Geomatics Engineering Co.Ltd , Jinan 250014, China )
Abstract: In this paper, it introduces the basic concept of OpenGL, DTM and technology of constructing network, elaborates the basic steps to realize 3D topographic visualization based on OpenGL, and studies and discusses the important step. Finally it realizes the mutual topographic real-time dynamic exhibition by keyboard.
Key Words: OpenGL; 3D; Visualization
1 引言
三维地形可视化是地理信息系统(GIS)、数字摄影测量(DP)和遥感(RS)的重要研究内容。三维地形可视化是研究数字地形模型(DTM)或数字高程域中显示、简化、仿真等内容的学科,它属于计算机图形学的一个分支。近年来,由于计算机科学、计算机图形学以及现代数学理论的不断发展和创新,虚拟现实(VR)、科学计算可视化(SV)逐渐成为众多学者研究的热门。随着GIS研究的不断深入,地理信息的表达方式已经逐渐由二维扩展到三维。地形是非常重要的一类自然景物,具有特征复杂多样、数据量巨大的特点。地形的应用在GIS应用中占重要地位,逼真、实时地形表达对于准确的空间认知有巨大意义。当前在国内外竞相研制三维数码城市、三维数字小区的氛围下,研究三维地形可视化有着广阔的应用背景,越来越受到人们的关注。
2 基本概念
2.1 OpenGL概述
OpenGL是近几年发展起来的一个性能卓越的三维图形标准,它是在SGI等多家世界闻名的计算机公司的倡导下,以SGI的GL三维图形库为基础制定的一个通用共享的开放式三维图形标准。OpenGL实际上是一个开放的三维软件包,它独立于窗口系统和操作系统,以它为基础开发的应用程序可以十分方便地在各种平台间移植;OpenGL使用简便,效率高。它具有七大功能:建模、变换、颜色模式设置、光照和材质设置、纹理映射、位图显示和图像增强、双缓存动画;OpenGL可以与Visual C++6.0紧密接口,便于实现机械手的有关计算和图形算法,可以保证算法的正确性和可靠性。为了利用Visual C++6.0的强大功能来实现对OpenGL三维图形的绘制,Windows提供了OpenGL32 . DLL和GLU32 . DLL动态链接库,Visual C++6.0包含了GL库(openg132 . lib)、辅助库( glaux .1ib)和实用库(glu32 .1ib),开发者可以在多种硬件平台及操作系统下方便地利用这个图形库,使我们方便地编程,简单、快速地生成美观、漂亮的复杂的三维彩色图形。
2.2 数字地面模型及其构三角网技术
数字高程模型(DEM)是地形空间连续起伏的数字表达,它由对地形表面取样所得到的一组点的(X、Y、Z)坐标数据和一套对表面提供连续描述的算法组成。
DEM的最常见形式是高程矩阵或称为规则矩形格网Grid,它可以由对不规则或规则的空间数据点进行插值获得。DEM的另一种表现形式是不规则三角网(TIN),TIN是一个使用一系列连续相邻的不规则三角形组成的地面模型,X坐标和Y坐标间距不定。这两种表现形式相比之下,TIN模型能较好地顾及地貌特征,允许在地形复杂的地区收集较多的信息,其数据冗余少,简化数据可能带来的失真也较小,所以本文建立三维地形模型中运用的是不规则三角网(TIN)。
计算机图形学中的所有光滑曲面最终都是由多边形(主要是三角形)无限逼近得到的。因此建立曲面模型的实质是构造用来逼近该曲面的空间三角网。利用采集到的离散点根据Delaunay三角网的构网规则生成三角网。Delaunay三角形定义为:组成三角网的每个三角形不包含数据点集中除构成该三角形三顶点以外的任何其它点,即Delaunay三角网能最大限度地保证网中三角形满足近似等边(角)性。对于任意给定的离散数据点集,Delaunay三角网的网形是唯一的。
3 三维地形的可视化
实现三维图形可视化首先要解决建模问题。目前建模方法主要有两种:(1)用 AutoCAD和3DMAX等建模工具建立三维模型;(2)直接利用OpenGL或VRML等专用建模语言完成建模。
本文是直接利用OpenGL建模。在OpenGL中实现三维地形可视化的基本过程是:先收集DEM数据,然后进行模型构造,接着求每个顶点的法向量,通过OpenGL的相关函数来实现参数设置,之后是进行光照计算、投影变换、视口变换和纹理映射,最后实现三维地形的显示。以下将重点分析投影变换和纹理映射和绘制虚拟场景三个部分。
3.1 投影变换
投影变换的目的是将三维场景中的物体投影到二维平面上,这个二维平面就是显示窗口。投影变换有两种,一种是透视投影,这种投影的效果与人眼观察世界的效果相同,距离视点越远的物体看起来越小,距离视点越近的物体看起来越大,符合人们的视觉习惯。透视投影的应用比较广泛,通常用到视景仿真和模拟真实场景的应用程序中;另一种是正交投影,它的最大特点是无论物体距离视点多远,投影后的尺寸不变。投影变换是使用矩阵变换来实现的,在进行投影变换之前必须调用glMatrixMode(GL_PROJECTION)函数将当前矩阵的类型设置为投影矩阵。
3.2 纹理映射
自然界中的物体表面很少是光滑和单调的,往往具有各种纹理。在计算机图形学中是采用纹理映射的方法给计算机生成的物体图像加上纹理的。纹理映射的关键是实现影像与DTM之间的正确套合,使每个DTM网格点坐标和相应的纹理坐标一一对应,保证纹理在变换时与所附着的曲面保持适当的关系。纹理映射是非常复杂的。在OpenGL中纹理映射需要执行的步骤如下:
(1)定义纹理。纹理通常被认为是二维的,但纹理也可以是一维或三维的。通过函数glTexImage2D()指定一个二维纹理,其中包含了纹理图像的大小、纹理图像数据的数据格式和数据类型以及存储在内存中的图像数据指针等。
(2)控制纹理。用来说明纹理以何种方式映射到三维模型的表面上。一种方法是,将纹理颜色作为最终的颜色,另一种方法是,使用纹理来调整片元的颜色值,还有一种就是将一种常量颜色和片元混合起来。OpenGL中提供了相关的函数为glTexParameter*()。
(3)启用纹理映射。绘制场景之前需要启用纹理映射。要启用和禁用纹理映射,可以调用函数glEnable()和glDisable()。调用这些函数时可以使用一维、二维、三维和立方图纹理映射。
(4)纹理坐标和绘制场景。粘贴纹理之前,必须指定纹理和片元之间的对应关系。也就是说,在场景中绘制物体时,必须指定纹理坐标和几何坐标。调用的函数是glTexCoord*()。
3.3 绘制虚拟场景
为了使模型看起来具有三维立体的感觉,还应设置一定的光照。当观察物体的表面时,人眼睛对颜色的感知取决于进入眼内视锥细胞的光子的能量分布。这些光子来自于光源或发光物体,一部分被物体表面吸收,而另一部分则被物体表面反射。只有反射光和投射光能够进入眼睛,产生视觉效果,我们才能看到物体。这种反射和投射的光决定了物体呈现的亮度和颜色。函数glLightfv()、glEnable(GL_LIGHTING)用于设置和激活光源。还可以根据实际情况增加融合、反走样和雾化等一些特殊的显示效果,使生成的场景看起来更有真实感。
4 利用OpenGL进行地形动态显示
三维地形仅仅是静态显示还是远远不够的,它需要交互式地实时动态显示。交互式不仅允许用户指定屏幕上的物体,而且还可以通过鼠标或键盘移动、选择或其它方式操作这些物体,以实现不同角度、不同方位、不同距离的观察,方便用户变化角度进行观察。能够交互式地从各个不同的角度形象直观地展示三维地形,进行三维地形可视化。OpenGL提供了双缓存技术,通过它可以实现地形实时动态显示。其基本原理是提供前、后两个缓存,在显示前台缓存内容的一帧图像时,后台缓存正在绘制下一帧图像,后台绘制完成后,交换前后台缓存,不断循环,实现地形动态显示。
实现地形三维实时交互显示有两种方式:一种是视点固定、目标移动,该显示方式实现起来比较容易;另一种是目标固定、视点移动,这种显示方式实现起来比较复杂一些。本文运用第二种方式实现了地形动态显示。在计算机屏幕上可以通过键盘对三维地形进行操作,能够从各个不同的角度形象、直观地展示三维地形。仿真效果如下图:



5 结束语
本文利用OpenGL强大的图形功能在三维地形模拟方面进行了有意尝试,在实践中取得了很好的效果,通过键盘进行人机交互,最终实现了三维地形的可视化。但有些地方还有很多的不足!我相信随着计算机以及图形处理设备性能的不断提高,计算机模拟现实技术在国民经济以及国防建设中的作用日益增大,必将把三维地理信息系统带入飞速发展的时代。
参考文献:
[1] 廖中石,杨化超.基于OpenGL的三维地形实时动态交互显示.现代测绘,第27卷第3期:43-44
[2] 张俊霞.三维地形可视化及其实时显示方法概论.北京测绘,2001年第2期:6-9
[3] 徐青.地形三维可视化技术[M].北京:测绘出版社,2000: 141-150
[4] 韩样.基于OpenGL的三维地形可视化方法研究.车辆与动力技术,2003年第2期:11-15
[5] 李权国,刘鸿福. OpenGL在三维地形模型中的应用.太原理工大学学报,第35卷第1期:36-38、42
[6] 靳海亮,高井祥. 三维地形可视化技术进展研究.测绘科学,2006年第6期:162-164

作者简介:张先为,(1964.2 ~ ),高级工程师,研究方向:测绘与地理信息工程。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: