DEM分析与可视化-第5章.ppt
《DEM分析与可视化-第5章.ppt》由会员分享,可在线阅读,更多相关《DEM分析与可视化-第5章.ppt(89页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第五章 地形三维显示的基本理论江文萍武汉大学资源与环境科学学院2015.105-1 三维图形显示流程一、一、OpenGL介绍介绍Open GL(Open Graphics Library)是AT&T公司UNIX软件实验室、IBM公司、DEC公司、SUN公司、HP公司、Microsoft和SGI公司在GL(Graphics Library)的基础上联合推出的三维图形标准,它实际上是一种图形与硬件的接口。OpenGL是开放式图形工业标准,是绘制高真实感三维图形,实现交互式视景仿真和虚拟现实的高性能开发软件包。国内外相继推出专门对OpenGL进行硬件加速的三维图形加速卡,从而为OpenGL提供了广阔
2、应用前景。基于OpenGL进行三维显示和交互,是当前的发展趋势。OpenGL实际上是一种与硬件无关的编程界面,可以建立活动的三维几何对像的交互式程序。它可以在连接各种计算机的网络环境中。它独立于硬件设备、窗口系统和操作系统。作为一种开放的图形标准,用OpenGL编写的软件可以在UNIX系统和Windows 95/NT间实现移植。此外,OpenGL是网络透明的,在客户/服务器(Client/Server)体系结构中,OpenGL允许本地和远程绘图。5-1 三维图形显示流程OpenGL给Windows系统带来了一种新的图形编程模式。使用GDI时,程序员考虑的是如何用画笔或画刷来绘制一幅图片。而Op
3、enGL程序员则将物体在三维场景中分解成为许多多边形,然后让OpenGL在根据光照、阴影、纹理和消去隐藏面等计算后,再生成一幅极其逼真的三维场景图。而且,Windows 95/NT下的OpenGL对工业标准的OpenGL做了扩展。Windows 95/NT环境下的OpenGL包括核心库、实用库、辅助库三部分,共约100多个功能强大的图形函数以及几个WGL函数和Win32函数。其基本功能包括:模型绘制、模型观察、颜色模式的指定、光照应用、图象效果增强、位图及图象处理、纹理映射、多缓存应用、实时动画、交互技术等。利用OpenGL可以创作出高质量的独立于操作系统和硬件平台的三维彩色图形和动画。5-1
4、 三维图形显示流程OpenGL实用库(实用库(GLU)利用较低层OpenGL命令编写一些执行特殊任务的例程,如纹理映射、坐标变换、多边形网格化,NURBS曲线和 曲面等。GLU例程前缀用glu。OpenGL的的XWindow系统扩充(系统扩充(GLX)在使用X Window系统的机器上,提供一种OpenGL现场 (context),并把它与可绘(drawable)窗口关联起来的方法。GLX作为OpenGL的附件提供。GLX利用前缀glx。5-1 三维图形显示流程OpenGL辅助库(辅助库(AuxiliaryLibrary)这个库建立一系列简单而又完整的编程例子,例如初试化窗口、监控输入,以及绘
5、三维对像等。辅助库例程用前缀aux。其它基于其它基于OpenGL的开发工具的开发工具OpenGL InventorOpenGL OptimizerOpenGL PerformerMultigenCreatorVega5-1 三维图形显示流程OpenGL的主要功能1,建模:不但有简单的点线面还提供了复杂的三维物体(球、锥等)以及复杂的曲线曲面(Bezier、Nurbs等)绘制函数;2,变换:主要包括基本变换(平移、旋转等)和投影变换(平行、透视投影等);3,颜色模式设置:RGBA模式、ColorIndex颜色索引;4,光照和材质设置:OpenGL光有辐射光、环境光、漫反射光、镜面光;材质是用光反
6、射率来表示的。场景中物体最终反映到人眼的颜色是光的RGB分量和材质的RGB分量叠加形成的;5,纹理映射:主要表达物体表面的细节;6,位图显示和图像增强:图像功能除了基本的复制和图像象素读写外,还提供融合(Blending)、反走样(Antialiasing)、雾柔化(Fog)等特殊的图像处理效果;5-1 三维图形显示流程7,双缓冲(Double Buffering)动画:双缓冲即前台缓冲和后台缓冲。后台计算场景、产生画面,前台显示后台已经计算好的画面;8,交互技术:主要是提供三种工作模式:绘图模式、选择模式和反馈模式。绘图模式完成场景的绘制,可以借助物体的几何参数及运动控制参数、场景的观察参数
7、、光照参数和材质参数、纹理参数、OpenGL函数的众多常量控制参数、时间参数等和Windows对话框、菜单、外部设备等构成实时交互的程序系统。在选择模式下,则可以对物体进行命名,选择命名的物体,控制对命名的物体的绘制。而反馈模式则给程序设计提供了程序运行的信息,这些信息也可反馈给用户,告诉用户程序的运行状况和监视程序的运行进程。9,其它:利用OpenGL还能实现深度暗示(Depth Cue)、运动模糊(Motion Blur)等特殊效果。5-1 三维图形显示流程OpenGL的基本原理 OpenGL是一个硬件发生器的软件接口,其主要目的是将二维、三维物体绘制到一个帧缓冲里,它包括几百个图形函数。
8、开发者主要利用这些函数来建立三维模型和进行三维实时交互。1,图元操作和指令OpenGL能够从多种可选择的模式画图元,而且一种模式的设置一般不会影响其他模式的设置,无论发生深墨情况,指令总是被顺序处理,也就是说,一个图元必须完全画完之后,后继图元才能影响帧存。2,图形控制OpenGL提供诸如变换矩阵、光照、反走样方法、像素操作等参数来控制二维和三维图形的绘制。它并不提供一个描述或建立复杂几何物体的手段。OpenGL提供的是怎样画复杂物体的机制而非描绘复杂物体本身的面面俱到的工具。即OpenGL是过程性的而非描述性的。3,执行模式OpenGL命令的解释模式是客户/服务器模式的,即由客户发布命令,命
9、令由OpenGL服务器(解释器)来处理,服务器可以运行在客户在相同的或不同的计算机上,基于这一点,OpenGL是网络透明的。5-1 三维图形显示流程OpenGL的命令语法与状态 基于OpenGL 标准的开发的微机应用程序必须在32位Windows平台下,如Windows 98/NT环境,运行时所需的动态连接库为OpenGL32.DLL、Glu32.DLL,OpenGL包含100多个库函数,这些函数按一定的格式来命名。1,核心函数115个每个函数以gl开头,这些函数是最基本的,可以运行在任何工作平台上。这些函数创建二维和三维几何形体,设置视点,建立视觉体,设置颜色及材质,建立灯光、进行纹理映射,
10、反走样,处理融合,雾化场景等,它们可以接受不同的参数因而可派生300多个函数。2,OpenGL实用库函数以glu开头。共43个这些函数基于OpenGL核心函数,主要提供对辅助函数的支持,并且执行了核心OpenGL函数的交互,因而是比核心函数更高一层的函数,也更有通用性。可以运行在任何OpenGL工作平台上。3,辅助库函数,共31个。以aux开头,它们是一类特殊的OpenGL函数,是帮助初学者尽快进入OpenGL编程而做简单练习用的。因此并不能在所有平台上运行。但Windows 98/NT支持它们。4,Windows专用库函数,以wgl开头。主要是连接OpenGL和Windows窗口系统的用它们
11、可以管理着色描述表及显示列表,扩展功能,管理字体位图等。5,Win32 API函数,共6个,用于处理像素格式及缓冲。6,OpenGL结构 共四个。5-1 三维图形显示流程二、从三维空间到二维平面二、从三维空间到二维平面真实世界里,所有物体都是三维的,但是这些三维物体在计算机世界中必须以二维平面物体的形式在屏幕上表现出来。5-1 三维图形显示流程 实际上,从三维空间到二维平面,就如同用相机拍照一样,通常都要经历以下几个步骤(括号内表示的是相应的图形学概念):第一步,将相机置于三角架上,让它对准三维景物(视点变换视点变换,Viewing Transformation);第二步,将三维物体放在适当的
12、位置(模型变换模型变换,Modeling Transformation);第三步,选择相机镜头并调焦,使三维物体投影在二维胶片上(投影变换投影变换,Projection Transformation);第四步,决定二维像片的大小(视口变视口变换换,Viewport Transformation)。这样,一个三维空间里的物体就可以用相应的二维平面物体表示了,也就能在二维的计算机屏幕上正确显示了。5-1 三维图形显示流程第一步,视点变换视点变换在视点坐标系中进行。视点坐标系,左手法则世界坐标系,右手法则第二步,模型变换模型变换在世界坐标系中进行对物体进行平移、旋转、缩放第三步,投影变换投影变换类似
13、于选择相机的镜头,定义一个视景体,位于视景体内的物体部分可见,视景体外的部分不可见。第四步,视口变换视口变换 将视景体内的投影的物体显示在二维的视口平面上。这样,一个三维空间里的物体就可以用相应的二维平面物体表示了,也就能在二维的计算机屏幕上正确显示了。5-1 三维图形显示流程三、三维图形显示流程三、三维图形显示流程投影变换5-2 基本变换一、几何变换一、几何变换视点变换和模型变换本质上是一回事,即图形学中的几何变换。只是视点变换一般只有平移和旋转,没有比例变换。当视点进行平移或旋转时,视点坐标系中的物体就相当于世界坐标系中做反方向的平移或旋转。1、平移glTranslatefd(x,y,z)
14、将目标分别沿三个轴进行平移2、旋转glRotatefd(angle,x,y,z)将目标沿从点(x,y,z)到原点的方向逆时针旋转角度angle3、缩放和镜像glScalefd(x,y,z)将目标分别沿三个轴向进行缩放5-2 基本变换1、平移2、旋转3、缩放和镜像5-2 基本变换二、投影变换二、投影变换1、正射投影、正射投影(Orthographic Projection)正射投影,又叫平行投影。这种投影的视景体是一个矩形的平行管道,也就是一个长方体,正射投影的最大一个特点是无论物体距离相机多远,投影后的物体大小尺寸不变。这种投影通常用在建筑蓝图绘制和计算机辅助设计等方面,这些行业要求投影后的物
15、体尺寸及相互间的角度不变,以便施工或制造时物体比例大小正确。5-2 基本变换void glOrtho(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdouble near,GLdouble far);void gluOrtho2D(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top);第一个函数,它创建一个平行视景体。实际上这个函数的操作是创建一个正射投影矩阵,并且用这个矩阵乘以当前矩阵。其中近剪取平面是一个矩形,矩形左下角点三维空间坐标是(left,bot
16、tom,-near),右上角点是(right,top,-near);远剪取平面也是一个矩形,左下角点空间坐标是(left,bottom,-far),右上角点是(right,top,-far)。所有的near和far值同时为正或同时为负。如果没有其他变换,正射投影的方向平行于Z轴,且视点朝向Z负轴。这意味着物体在视点前面时far和near都为负值,物体在视点后面时far和near都为正值。第二个函数是一个特殊的正射投影函数,主要用于二维图像到二维屏幕上的投影。它的near和far缺省值分别为-10和10,所有二维物体的Z坐标都为00。因此它的剪取面是一个左下角点为left,bottom)、右上角
17、点为(right,top)的矩形。5-2 基本变换二、投影变换二、投影变换2、透视投影、透视投影(Perspective Projection)透视投影符合人们心理习惯,即离视点近的物体大,离视点远的物体小,远到极点即消失,成为灭点。它的视景体类似于一个顶部和底部都被切除掉的棱椎,也就是棱台。这个投影通常用于动画、视觉仿真以及其它许多具有真实性反映的方面。5-2 基本变换OpenGL透视投影函数也有两个,函数glFrustum()所形成的视void glFrustum(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdou
18、ble znear,GLdouble zfar);void gluPerspective(GLdouble fovy,GLdouble aspect,GLdouble zNear,GLdouble zFar);5-2 基本变换三、剪取变换三、剪取变换在OpngGL中,空间物体的三维剪取变换包括两个部分:视景体剪取和附加面剪取。视景体剪取由投影变换来定义。除了视景体定义的六个剪取平面(上、下、左、右、前、月用户还可以自己再定义一个或多个附加剪取平面,以去掉场景中无关的目标。5-2 基本变换四、视口变换四、视口变换运用相机模拟方式,我们很容易理解视口变换就是类似于照片的放大与缩小。在计算机图形学中
19、,它的定义是将经过几何变换、投影变换和剪取变换后的物体显示于屏幕窗口内指定的区域内,这个区域通常为矩形,称为视口。5-2 基本变换void glViewport(GLint x,GLint y,GLsizei width,GLsizei height);这个函数定义一个视口。函数参数(x,y)是视口在屏幕窗口坐标系中的左下角坐标,参数width和height分别是视口的宽度和高度。缺省时,参数值即(0,0,winWidth,winHeight)指的是屏幕窗口的实际尺寸大小。所有这些值都是以像素为单位,全为整型数。在实际应用中,视口的长宽比率总是等于视景体剪取面的长宽比。如果两个比率不相等,那么
20、投影后的图像显示于视口内时会发生变形。在调用这个函数时,最好实时检测窗口尺寸,及时修正视口的大小保证视口内的图像能随窗口的变化而变化,且不变形。5-3 基本几何图元的显示一、构成三维复杂形体的基本图元一、构成三维复杂形体的基本图元点(顶点)用浮点值表示的点称为顶点(Vertex)。所有顶点都是三维的,用二维坐标(x,y)定义的点,其z值默认为0。为表达复杂目标的真实感图形,在顶点处计算下列属性坐标几何坐标法向坐标颜色坐标纹理坐标5-3 基本几何图元的显示线(Line)线代表线段(Line segment),由一系列顶点顺次连接而成,有闭合和不闭合两种线的几何属性颜色(关闭光照)5-3 基本几何
21、图元的显示面(多边形)(Polygon)多边形是由一系列线段依次连接而成的封闭区域,这些线段不能交叉,区域内不能又空洞,多边形必须是凸多边形,否则就不能被正确显示。多边形可以是平面多边形,即所有顶点在一个平面上,也可以是空间多边形。颜色坐标法向坐标5-3 基本几何图元的显示二、图元的绘制二、图元的绘制1、定义顶点所有几何物体最终都由一定顺序的定点集来描述。双精度3维顶点用齐次坐标定义3维顶点,真实坐标为(1.2,0.5,-1.1)5-3 基本几何图元的显示2、构造几何图元在实际应用中,通常用一组相关的顶点序列以一定的组织方式组织起来定义某个几何图元,而不采用单独定义多个顶点来构造几何图元。在O
22、penGL中,所有被定义的顶点必须放在glBegin()与glEnd()两个函数之间才能正确表达一个几何图元或物体,否则glVertex*()不能完成任何操作。5-3 基本几何图元的显示5-4 真实感地形表面的绘制一、真实感图形的基本概念一、真实感图形的基本概念真实感图形绘制是计算机图形学的一个重要组成部分,它综合利用数学、物理学、计算机科学和其它科学知识在计算机图形设备上生成象彩色照片那样的具有真实感的图形。5-4 真实感地形表面的绘制一般说来,用计算机在图形设备上生成真实感图形必须完成以下四个步骤:一是建模,即用一定的数学方法建立所需三维场景的几何描述,场景的几何描述直接影响图形的复杂性和
23、图形绘制的计算耗费;二是将三维几何模型经过一定变换转为二雏平面透视投影图;三是确定场景中所有可见面,运用隐藏面消隐算法将视域外或被遮挡住的不可见面消去;四是计算场景中可见面的颜色,即根据基于光学物理的光照模型计算可见面投射到观察者眼中光亮度大小和颜色分量,并将它转换成适合图形设备的颜色值,从而确定投影画面上每一像素的颜色,最终生成图形。5-4 真实感地形表面的绘制由于真实感图形是通过景物表面的颜色和明暗色调来表现景物的几何形状、空间位置以及表面材质的,而一个物体表面所呈现的颜色是由表面向视线方向辐射的光能决定的。在计算机图形学中,常采用一个既能表示光能大小又能表示其颜色组成的物理量即光亮度(l
24、uminance)或光强(intensity of light)来描述物体表面朝某方向辐射光能的颜色。采用这个物理量可以正确描述光在物体表面的反射、透射和吸收现象,因而可以正确计算处理物体表面在空间给定方向上的光能颜色。物体表面向空间给定方向辐射的光强可应用光照模型进行计算。5-4 真实感地形表面的绘制简单的光照模型通常假定物体表面是光滑的且由理想材料构成,因此只考虑光源照射在物体表面产生的反射光,所生成的图形可以模拟不透明物体表面的明暗过渡,具有一定的真实感效果。复杂的光照模型除了考虑上述因素外,还要考虑周围环境的光对物体表面的影响。如光亮平滑的物体表面会将环境中其它物体映像在表面上,而通过
25、透明物体也可看到其后的环境景象。这类光照模型称为整体光照模型,它能模拟出镜面映像、透明等较精致的光照效果。为了更真实的绘制图形,还要考虑物体表面的细节纹理,这通常使用一种称为“纹理映射”(texture mapping)的技术把已有的平面花纹图案映射到物体表面上,并在应用光照模型时考虑这些花纹的颜色,物体表面细节的模拟使绘制的图形更接近自然景物。5-4 真实感地形表面的绘制二、基于二、基于DEM构造地形表面构造地形表面任何复杂表面都可以分解为若干个由基本图元构成的图形。由众多三角网无限逼近而形成光滑曲面是生成复杂地形表面的一个基本途径。1、基于正方形网格DEM5-4 真实感地形表面的绘制2、基
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DEM 分析 可视化
限制150内