517.利用OpenGL进行VRGIS中三维场景的渲染和飞行漫游【开题报告+毕业论文】 .doc

上传人:小小飞 文档编号:3900726 上传时间:2019-10-09 格式:DOC 页数:41 大小:882.50KB
返回 下载 相关 举报
517.利用OpenGL进行VRGIS中三维场景的渲染和飞行漫游【开题报告+毕业论文】 .doc_第1页
第1页 / 共41页
517.利用OpenGL进行VRGIS中三维场景的渲染和飞行漫游【开题报告+毕业论文】 .doc_第2页
第2页 / 共41页
517.利用OpenGL进行VRGIS中三维场景的渲染和飞行漫游【开题报告+毕业论文】 .doc_第3页
第3页 / 共41页
517.利用OpenGL进行VRGIS中三维场景的渲染和飞行漫游【开题报告+毕业论文】 .doc_第4页
第4页 / 共41页
517.利用OpenGL进行VRGIS中三维场景的渲染和飞行漫游【开题报告+毕业论文】 .doc_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《517.利用OpenGL进行VRGIS中三维场景的渲染和飞行漫游【开题报告+毕业论文】 .doc》由会员分享,可在线阅读,更多相关《517.利用OpenGL进行VRGIS中三维场景的渲染和飞行漫游【开题报告+毕业论文】 .doc(41页珍藏版)》请在三一文库上搜索。

1、开 题 报 告论文题目:利用OpenGL进行VRGIS中三维场景的渲染和飞行漫游院 系:遥感学院姓 名: 学 号: 指导老师: 一、目的和意义:长期以来,2DGIS提供给用户的仅为二维平面图形,它的分析解释成果也局限于二维静态表达方式,从而给人们直接、完整、准确地解释与感受成果所反映的地表、地形、地貌情况造成了困难,也缺少把基础地理数据及其分析成果直接转换为用户可理解信息的有效手段,不能满足人们的要求。3DGIS随着学科技术的发展成为了地学领域的研究热点。3DGIS对客观世界的表达能给人以更真实的感受,它以立体造型给用户展现地理空间现象,不仅能够表达空间对象间的平面关系,而且能描述和表达它们之

2、间的垂向关系;另外对空间对象进行三维空间分析和操作也是3DGIS特有的功能,它具有独特的管理复杂空间对象能力及空间分析的能力,今天已深入到社会的各行各业中,如土地管理,电力,电信,城市管网,水利,消防,交通以及城市规划等。三维立体渲染是地形图信息的重要组成部分,它反映了地形的立体形态,模拟了地形的表面灰度,非常直观。而渲染的效果也直接影响产品的质量。因此,它是进行地理要素空间特征分析的强大工具,可以从总体上把握研究对象的空间变化特征,在测绘、水文、环境、气象和规划等领域都有广泛应用地形作为地理信息的承载体,它的三维可视化是3DGIS发挥功能的关键,三维地形可视化效果也直接影响着3DGIS系统功

3、能的实现。三维地形可视化能够交互式地从各个不同的角度更形象更直观地展示三维地形:通过地形表面的可视化,可以了解研究区域的三维信息特征,为进一步研究区域的地形演变、发展前景提供实时帮助,具有很大的实用价值。然而,随着技术的发展,地形数据精度的提高,数据量也在迅速增长。为了即保证数据的精度,又保证数据的显示速度,地形数据的压缩成为现在的研究热点之一。而今后的研究重点也将集中在大规模地形数据和纹理数据的分页、数据的高效管理方面。二、国内外研究现状与趋势:地形地貌是自然界最普遍,最复杂的景物,为了更真实的呈现地形地貌的三维景观,三维地形的绘制和渲染一直是国内外计算机图形学关注的热点。目前的地形渲染主要

4、有两种不同的技术途径:Voxel和LOD。Voxel就是Volumetric Pixel,也就是所谓的“体素”,它是相对于像素来说的。如果说像素是一个二维的矩形的话,那么Voxel就是一个三维的立方体。Voxel有一个天生的优点就是裁减功能,渲染的时候和场景的大小没有关系,不会渲染多余的东西。它的复杂度只和我们需要的视野,以及分辨率有关。它的缺点就是不够灵活。LOD是层次细节(Level of Detail)的简称,不同于Voxel技术,它是一种使用多边形的、真正的3D渲染技术,是当前研究的热点。它根据一定的规则来简化物体的细节,可以根据需要来选择不同细节程度的物体表达方式。如离观察者近的选择

5、较高的细节程度,反之选择较低的细节程度。用在地形渲染中,有时也称它为多分辨率地形(Mutiresolutionterrain)渲染技术。LOD算法处理起来比较复杂,但是它让我们可以足够自由地去控制我们的场景渲染,更加方便地使用显卡的硬件加速功能。而且可以很容易在场景中组合其他的物体。其中基于四叉树的LOD算法能有效地对地形数据依据视点变化进行多分辨率简化,生成自适应的层次细节,简化后的地形保留了地形表面特征,克服了LOD拼接裂缝问题,能够满足实时漫游的需求。总之,真实性和实时性是三维地形渲染的研究要点。三维漫游是一项新兴的计算机模拟技术,在数字地球、虚拟现实以及仿真等领域有着广泛的应用,三维漫

6、游技术也逐渐成为计算机领域和各建设部门的研究热点。三维虚拟漫游系统研究方面在实现方法上可分为两种,主要按照虚拟场景的构造方法来区分。一种是基于几何建模的虚拟漫游技术,另一种是基于实景图像的虚拟漫游技术。随着对三维漫游真实感和实时性两方面要求的不断提高,一些研究者开始把基于图形的生成方法与基于图像的生成方法结合起来考虑,利用二者的优点,突破各自的局限 从而又产生出一种介于两者之间的混合方式。三、研究方案:研究内容:按照课题内容和任务要求,研究内容主要集中在以下几方面:1、OpenGL编程开发技术与VC图形编程技术2、三维场景的绘制渲染技术基础3、漫游路径的设置和用户的交互4、场景画面的保存和动画

7、的录制。技术路线 为了实现利用OpenGL进行VRGIS中三维场景的渲染和飞行,本系统主要采用了以下技术:地形和天空的建模技术、地形和天空的纹理映射、光照效果的处理、雾化的实现、地形漫游的实现和图片的保存与AVI的播放。下面具体介绍实现三维地形渲染与漫游的具体技术流程。1、场景的绘制 为了实现三维场景,系统首先建立了三维模型,包括地形和天空。由于地形的高程数据是通过读取RAW文件获得的。因此,必须首先读取RAW文件中的数据,将其先保存在一个数组中,然后以三角形面片的形式绘制地形。天空的建摸则是在地形模型的上方通过二次曲面构造一个半球体。 2、场景的渲染三维场景的渲染主要包括了光照处理、纹理影射

8、和雾化等渲染技术。光照处理通过光源位置、光照颜色和物体材质的设置产生了逼真的视觉效果,实现真实场景的模拟。纹理映射是通过指定的方式将纹理图像映射到物体表面,从而实现对真实物体纹理的模拟。系统中主要对三维场景的天空和地面进行了纹理渲染。雾化就是向场景中加入雾效果,根据到视点的距离逐渐把物体的颜色变淡至背景色。表现出了物体到视点的距离感,给出深度提示。通过对雾的颜色、密度、深度进行控制,选择适当的雾化效果,使场景中的物体看起来更加真实。3、地形漫游的实现地形的漫游是通过鼠标和键盘的交互来实现的,当鼠标移动或键盘交互时,系统将实时获取鼠标的位置,并将鼠标的二维坐标转化为三维场景中的三维坐标,同时设置

9、视点的坐标和方向,实时调用系统刷新功能,自动在屏幕上绘制屏幕图形,实现地形漫游,从各个不同的角度更形象更直观地展示三维场景,给用户以真实感。4、场景画面的保存场景画面的保存是将系统当前所呈现的场景画面保存为一张图片,图片格式为BMP。首先将OpenGL图形转化为DIB格式,即从屏幕图形转化到DDB格式再转化到DIB格式,然后将DIB数据写入到位图文件中,即可实现图片的保存。5、屏幕动画的录制屏幕动画的录制是将屏幕上显示的一段OpenGL动画保存为一个视频文件,其格式为AVI。首先写入AVI文件的头信息,设置AVI文件名、录制帧的大小、录制的帧率、AVI文件的压缩方式等。再写入AVI文件的帧信息

10、,将捕捉到的具体的帧数据写入到AVI文件中,即可实现程序动画录制。四、关键问题 1、视点的位置和方向的设置。 在系统中,为了实时绘制场景,视点的设置成了一个关键问题。本系统设置了一个摄像机类,用摄像机的位置来设置视点,用摄像机位置的不断更新来显示视点的不断变换。 2、图片的保存和动画的录制。 系统中的屏幕图形不可能直接保存为BMP格式的图片,为了实现场景的图片保存,必须首先将屏幕图形转化为DDB格式再转化到DIB格式再将DIB数据写入到位图文件中,才可实现图片的保存。屏幕动画的录制则首先写入AVI文件的头信息,设置AVI文件名、录制帧的大小、录制的帧率、AVI文件的压缩方式等。再写入AVI文件

11、的帧信息,将捕捉到的具体的帧数据写入到AVI文件中,设置激活条件,才可实现动画录制。五、 计划进度1、2005.12.152006.元.15:收集资料,阅读文献2、2006.元.162006.3.15: 做实验,编写软件原型3、2006.3.162006.4.15: 毕业论文的撰写4、2006.4.162006.4.30: 论文修改5、2006.5.12006.5.15: 准备答辩六、预期目标1、利用OpenGL在VC中建立一个三维场景渲染与飞行漫游的软件原型系统一套,在系统中实现三维场景的绘制渲染和场景的雾化效果;并设置漫游方式,使用户即可以按默认路径飞行,又可以自定义飞行路径;还要实现场景

12、画面保存功能和动画录制功能。2、撰写毕业论文。七、收集的资料及主要参考文献:1 姜陆、刘钊.三维大规模地形的实时显示与渲染.中国民航飞行学院学报.20052 刘少华、张茂军.大规模三维地形场景实时漫游系统的构建.计算机彷真.20053晏峰、王志东.基于 OpenGL 的飞机虚拟场景漫游系统的实现.计算机工程与设计.20054李嘉林.基于OpenGL的空战飞机三维飞行轨迹显示.电脑开发与应用.20045韩样.基于OpenGL的三维地形可视化方法研究.车辆与动力技术.20036王洪.基于虚拟现实的三维漫游技术硕士学位论文.电子科技大学.20047 陈志强.三维地形实时漫游系统的研究与实现硕士学位论

13、文.华北电力大学.20038 孙长勇.虚拟现实中三维建摸技术方法的分析与研究硕士学位论文.中国人民解放军信息工程大学.2004目录摘 要第一章 绪论11.1 VRGIS的研究意义11.2 三维场景渲染与飞行漫游的实现方法比较21.3 论文结构内容安排2第二章 技术路径与关键技术42.1 场景建模42.2 场景渲染42.3 地形漫游的实现52.4 场景的保存和动画的录制5第三章 光照和物体的材质73.1 概述73.2 光源与材质73.3 光照处理的具体步骤83.4 小结10第四章 纹理映射104.1 纹理映射的概述104.2 纹理映射的过程114.3 主要纹理代码114.4 小结14第五章 雾

14、化155.1 雾化概述155.2 雾的使用155.3 雾化小结16第六章 漫游路径的设定与漫游的实现186.1 场景环境的设定186.2 地形的绘制渲染186.3 天空的绘制渲染226.4 OpenGL场景漫游的实现236.5 BMP图形的保存和AVI格式的输出与播放25第七章 结论及展望297.1 全文总结297.2 工作展望29参 考 文 献30致谢 31II摘 要VRGIS是GIS与虚拟现实技术相结合的产物,是目前地理信息系统和虚拟现实技术研究的热点和前沿方向之一。VR-GIS以其独特的处理空间数据的技术手段,提高了人类处理和分析大量有关地球资源,环境,社会与经济数据的能力,拓展了信息处

15、理和应用领域,有着很广阔的前景。三维场景的渲染与飞行漫游是三维虚拟现实地理信息系统研究中的一个重要方面 , 它能够交互式地从各个不同的角度更形象更直观地展示三维地形,具有很大的实用价值。它在农林、水利、数码城市、虚拟现实、战场模拟中具有很重要的应用前景。 本文首先介绍了系统中三维场景的渲染与飞行漫游的技术路径与关键技术,对三维场景中地形和天空的建模技术做了具体分析。VRGIS中三维场景的渲染和飞行漫游系统的设计主要应用了三维可视化实现工具OpenGL。三维场景中主要应用到的OpenGL渲染技术是光照处理、纹理映射和雾化,文中对它们做了具体的介绍分析。我们设计了一个 基于OPENGL的VRGIS

16、中三维场景的渲染与飞行漫游系统,系统中设定了三种不同的漫游方式对场景进行漫游操作,并实现了BMP图片保存和AVI的录制和播放功能。 关键词:虚拟现实地理信息系统(VR-GIS)、OpenGL、三维,渲染,漫游 AbstractVRGIS is the production of GIS and VR,is one of the hot points and foreway researched by GIS and VR at present. VR-GIS , by the particular technologes method dealling with spatial data, i

17、mproves the ability of dealing with and analyzing the data aboat earth resource ,environment , society and economy .It expands the field of information processing and application,so it has a good future. Three-Dimensional scense rendering and fly through is an important part of VRGIS research. It ca

18、n alternantly show Three-Dimensional terrain from different viewpoints ,with large value. It has an important application perspective in the fields of forest agriculture ,waterpower ,digital citymulation of battlefield.we firstly introduces the the technologes paths and important technologes of Thre

19、e-Dimensional scense rendering and fly through int the system,and analyse concretly modeling technologes of terrain and sky int the Three-Dimensional scense. The designing of Three-Dimensional scense rendering and fly through system int VRGIS applys principally Three-Dimensional tool OpenGL OpenGL r

20、endering technologes used importantly in Three-Dimensional scense are light-shine dealling , texture and fog . they are introduced and analysed concretly in the page .we design one Three-Dimensional scense rendering and fly through system based on OpenGL int VRGIS ,and set three kind diffent wanderi

21、ng mathods to operate scense .besides this , the functions of saving BMP map and playing AVI is realized.Keywords: VR-GIS(Virtual Reality Geographic Information System), OpenGL, Three-Dimensional, Rendering wandering第一章 绪论1.1 VRGIS的研究意义VRGIS(Virtual Reality Geographic Information System),即虚拟现实地理信息系统

22、。VR-GIS技术是虚拟现实技术与地理信息系统技术相结合的技术,包括与网络地理信息系统(WebGIS、ComGIS)相结合的技术,是90年代才开始的一种专门以地学信息科学为对象的虚拟现实技术。VR-GIS的提出是地理信息系统技术及应用发展到相当水平后的必然阶段,它是一种专门用于研究地球科学的或以地球系统为对象的虚拟现实技术或计算机仿真技术或多媒体技术。与传统的地理信息系统相比,VR-GIS具有多学科的集成性、空间特征、动态特征、基础开放性与实用性。VR-GIS以其独特的处理空间数据的技术手段,提高了人类处理和分析大量有关地球资源,环境,社会与经济数据的能力,拓展了信息处理和应用领域。VRGIS

23、实现了空间数据的三维立体表达和模拟,生成一个逼真的、具有视觉、听觉、触觉等效果的可交互的动态世界,可以对虚拟世界中的虚拟实体进行操纵和考察,通过将虚拟现实技术引入到地理空间数据的服务领域,可以做到以非常直观的方式为用户服务。总的来说,理想的VR-GIS具有以下几个方面的的特点:1.空间数据的真实表现(如地形.环境等的真实再现,也包括对未来与过去不存在的事物的模拟真实表现);2.用户可从任意角度进行观察.浸入.实时交互,可在所选择的地理带(地理范围)内外自由移动;3.具有基于三维空间数据库的基本GIS功能(如查询,空间分析等);4.可视化部分应作为用户接口一个自然而完整的部分。但是目前VR-GI

24、S技术还不用数字化头盔、手套和衣服,它运用虚拟现实建模语言(VRML) 技术,可以在PC机上进行,使费用大幅降低所以它具有被广大用户接受的特点。但实际上只 能称为仿真。它虽然只具有三维立体、动态、声呐即具有视觉、听觉、运动感觉(假的)的特点,而没有触觉,更没有嗅觉特点等,只是通过大脑的联想,也有一定程度的身临其境的感觉。 因此它还不是真正的虚拟,而是一种准虚拟或不完善的虚拟,或半虚拟技术。VR-GIS是当代信息科学和数字地球研究的前沿领域,虽然其理论与方法的研究还处于起步阶段,但它已经得到国内外科技界的普遍关注,将在许多方面都起到不可预料的作用,例如:考古模拟、军事模拟、教育与培训、综合开发与

25、治理虚拟实验、污染与整治虚拟实验、科学可视化等等,VRGIS的发展有着很广阔的前景。1.2 三维场景渲染与飞行漫游的实现方法比较目前的三维场景建模方法主要可分为三类,主要按照虚拟场景的构造方法来区分。一种是传统的基于几何的建模方法,另一种是基于图像的建模方法。第三种是介于几何和图象两者之间的建模。由于几何与图象建模方法各有优缺点,它们分别适应不同的建模需求,混合建模技术集中了两者的优点,更适应于建模的需求,成为未来建模技术发展的趋势,但目前仍处于初级阶段。本系统采用了基于图像的建模方法,比基于几何的建模方法更容易实现,不需要复杂的计算,绘制速度更快。而且不需要通过模型计算生成光照与纹理图像,直

26、接采用图片来设置纹理,使场景更具有真实感,更易于沉浸。但本系统与基于几何的建模系统相比,无法对三维系统中的物体进行拾取操作和信息反馈。而且由于视点的限制,任意视点与视角的自由漫游仍然无法实现。目前三维地形的建模主要分为两类:真实地形建摸与模拟地形建模。真实地形建摸通常采用经纬线构成的规格化网格体逼近的方法,其主要技术在于获取网格点的有关参数,包括它的经纬度,高程和颜色等数据。采用这种方法生产的地形真实感和精确度都非常高。模拟地形建模又称为非真实地形建模,它采用的方法有随机高程数据生成和分形高程数据生成等,但这两种方法都需要进行大量的计算,生成大量的高程数据,耗用系统的大量内存。为了使三维场景更

27、真实并减轻系统的负担,系统采用了真实地形建模方法,通过读取RAW文件来获得地形的高程数据,然后根据高程数据以三角片的形式来渲染地形。天空的建模方法主要有“立方体盒子”法或“半球体”法。“立方体盒子”法是通过创建一个立方体盒子,并在盒子的六个不同面上贴上不同的纹理图像来达到逼真效果。“半球体”法是通过创建一个半球体,在其上贴上一幅有云彩的天空纹理图像来使三维场景的模拟更加真实。“立方体盒子”法原理简单,实现容易,但在本系统中,需要创建六幅纹理图案。计算量大,所占内存也很大。而“半球体”法只需要创建一幅纹理图,并且OpenGL内部会自动计算纹理坐标。为了提高系统的绘图速度,系统采用了“半球体”法。

28、此外系统实时漫游场景时,视点的设置成了一个关键问题。本系统设了一个摄像机类,用摄像机的位置来设置视点,以摄像机位置的不断更新来显示视点的不断变换。通过准确的设置视点的位置和方向,可以在系统中实现全方位的漫游。1.3 论文结构内容安排 本文研究分析了目前VRGIS中三维场景渲染与飞行的相关基本理论与主要实现方法,利用OpenGL较好的实现了三维场景的建模显示与漫游操作,并在场景中运用了基本的渲染特效。文章的主要内容按以下结构组织:第一章:绪论,主要简述了VRGIS的研究意义和本系统的三维场景渲染与飞行漫游的实现方法与别的系统的比较。第二章:主要介绍基于OpenGL的VRGIS中三维场景的渲染与飞

29、行漫游实现技术路径与关键技术,第三章: 论述了系统中光源和材质的特性以及使用光源和定义物体表面的材质特征来设置场景的光照效果。第四章:论述了纹理影射的重要作用,系统中应用纹理映射的具体步骤以及系统中实现纹理映射的一些关键技术。第五章:介绍了系统中雾化的作用。通过具体的雾化实现步骤对系统进行了反走样。第六章:介绍了系统中通过场景环境的设定,地形和天空的绘制渲染以及漫游路径的设置实现了三维场景的渲染与飞行漫游,并在系统中实现了BMP图片保存和AVI的录制和播放功能,第七章:结论与展望。总结了全文的研究工作,指出了系统的不足。 第二章 技术路径与关键技术为了实现利用OpenGL进行VRGIS中三维场

30、景的渲染和飞行,本系统绘制了地形和天空。并用纹理贴图的方式对地形和天空进行渲染,通过菜单、鼠标和键盘实现三维场景漫游。为了增强漫游的功能,系统实现了场景的保存和动画的录制。下面介绍实现三维地形渲染与漫游的技术路径与关键技术。2.1 场景建模三维场景的建模是三维可视化的关键,也直接影响着三维可视化系统功能的实现,一个好的三维场景建模可以更形象更直观地展示场景的三维信息特征。本系统中三维场景的建模主要包括三维地形的建模和天空的建模。三维地形的建模可以采取真实地形建模和非真实地形建模。由于非真实地形建模的随机高程数据生成方法和分形高程数据生成方法都需要进行大量的计算,生成大量的高程数据,耗用系统的大

31、量内存。为了使三维场景更真实并减轻系统的负担,系统采用了真实地形建模方法,通过读取RAW文件来获得地形的高程数据。因此,必须首先读取RAW文件中的数据,将其先保存在一个数组中,然后将其映射为高程数据,最后根据高程数据以三角格网的形式绘制地形。天空的建模方法主要有“立方体盒子”法或“半球体”法。“立方体盒子”法是通过创建一个立方体盒子,并在盒子的六个不同面上贴上不同的纹理图像来达到逼真效果。“半球体”法是通过创建一个半球体,在其上贴上一幅有云彩的天空纹理图像来使三维场景的模拟更加真实。由于“立方体盒子”法需要创建六幅纹理图,而且还要计算纹理坐标,所占内存很大。而“半球体”法只需要创建一幅纹理图,

32、并且OpenGL内部会自动计算纹理坐标。为了提高系统的绘图速度,系统采用了“半球体”法。2.2 场景渲染 三维场景渲染是三维可视化的重要组成部分,它反映了三维场景的立体形态,模拟了地形和天空的表面灰度,非常直观,而且渲染的效果也直接影响着三维场景的真实性。因此三维场景的渲染也是系统的一个关键技术。系统中为了虚拟三维场景的真实性,主要采用了光照处理、纹理影射和雾化等渲染技术。光照处理是OpenGL中绘制逼真的三维场景的一个重要步骤。而光照不仅增强了物体的真实感还是决定观察到的物体颜色的一个重要因素。一个光源决定了光的颜色、反射特性、强度和入射光的方向,而物体的几何性质及材质决定了发射光的颜色、反

33、射特性、强度。系统考虑了光源和物体材料属性两方面的因素,通过光源位置、光照颜色和物体材质的设置产生了逼真的视觉效果,实现了真实场景的模拟。纹理映射是通过指定的方式将纹理图像映射到物体表面,从而实现对真实物体纹理的模拟。在实时显示场景时,还可以利用3D图形的平移、旋转能力,实现物体随观察方向的改变而转动的效果.系统中主要对三维场景的天空和地面进行了纹理渲染。 为了解决场景中当物体随着视点距离的变化而变化时,物体上的纹理图案产生扭曲效果的问题,系统采用了纹理细化的方式。通过创建一系列不同分辨率的纹理图像,使纹理图中的细节层次很好地与屏幕上的图像相适应。雾化就是向场景中加入雾效果,根据到视点的距离逐

34、渐把物体的颜色变淡至背景色。表现出了物体到视点的距离感,给出深度提示。雾化效果有三种不同的雾化方式,应根据不同需要进行选择。系统选用了线形雾化对三维场景进行了反走样,通过对雾的颜色、密度、深度进行控制,选择适当的雾化效果。它不仅使场景中的物体看起来更加真实,而且还大大减少了计算量,提高了绘制速度。2.3 地形漫游的实现在系统中为了实时漫游场景,视点的设置成了一个关键问题。本系统设了一个摄像机类,用摄像机的位置来设置视点,以摄像机位置的不断更新来显示视点的不断变换。通过准确的设置视点的位置和方向,可以在系统中实现全方位的漫游。系统通过设定不同的漫游方式可以使用户从不同的角度观察和研究三维场景,以

35、便获取更多的有用信息,系统中在三维虚拟环境中实现漫游的方式主要有三种:自动漫游、查询式漫游和交互式漫游。为了观看不同的三维场景,可以选择不同的漫游方式。此外,系统还通过键盘的方向键和W、S、A、D键控制视点的前后左右移动,使系统从各个不同的角度更形象更直观地展示三维场景,从而使系统漫游有了很大的灵活性。 为了保证程序的运行速度,系统采用了双缓存技术。双缓存技术即是将位平面分为前台缓存和后台缓存,在应用程序中,把背景放入前后端缓存区中,然后在绘制时只写入后端缓存区,在绘制图象时不断地交换前后端缓存区。也就是说,在显示前端缓存区画面的同时,后端缓存区在组织下一帧画面的内容。当前端缓存区的内容显示结

36、束后,后端缓存区的内容开始显示,而前端缓存区重新组织内容。这样使屏幕的显示与后台计算分开来,从而达到运行速度得到提升的目的。2.4 场景的保存和动画的录制 三维系统的显示和漫游,其运行的速度与需要处理的数据量成反比。对于大数据量的三维系统,如果进行实时计算,其运行的速度将会非常缓慢,因而必须考虑系统运行的直观性。为了提高系统的速度,将系统运行的结果按一定的规则输出为AVI文件,然后由专门的AVI文件播放器进行播放。 三维场景漫游时,为了记录漫游路径上的场景,需要将场景保存为BMP图片,然后将BMP图片加入AVI文件中播放。但系统中的屏幕图形不可能直接保存为BMP格式的图片,为了实现场景的图片保

37、存,必须首先将屏幕图形转化为DDB格式再转化到DIB格式,最后将DIB数据写入到位图文件中,才可实现图片的保存。屏幕动画的录制则首先要创建AVI文件,再写入AVI文件的帧信息,从而实现动画的录制和播放。为了减少系统的负担,在系统漫游时用MessageBox判断是否保存AVI文件,如果保存则将漫游场景保存为AVI,否则不保存。 第三章 光照和物体的材质3.1 概述 光照处理是OpenGL中绘制逼真的三维图形的一个重要步骤。其中光照是增强物体真实感最重要的手段。对于大多数物体只有对其加入光照效果之后,才会有鲜明的三维效果,如果没有光照,则三维物体模型与二维物体没有任何差别。只有具有光照的物体才是真

38、正的三维物体。而物体三维显示效果的不同,跟光源位置、光照颜色、物体材质的设置有很大的关系。 要绘制逼真的三维物体,必须做光照处理。此外光照还是决定观察到的物体颜色的一个重要因素。因为物体的颜色与场景中的光源特性及场景中的物体对这种光的反射和吸收特性相关,因此光照是OpenGL计算确定帧缓存中最终显示图象的各像素点颜色值的决定因素之一。OpenGL的光是由红、绿、蓝组成的,光源的颜色由其所发出的红绿蓝颜色的数量决定,材料的属性是由在不同方向反射、入射的红绿蓝颜色的百分数表示的。OpenGL可以控制光照与物体的关系,通过恰当地使用各种光源和定义物体表面的材质特征,产生多种不同的视觉效果,从而实现真

39、实场景的模拟。 3.2 光源与材质OpenGL在光照模型中将光线分为辐射光、环境光、漫反射光、镜面光四种独立的成分,并通过将分别计算的四种成分相加得到整体的光照效果。辐射光(EmittedLight)是最简单的一种光,它直接从物体自身发出并且不受任何光源的影响。环境光(AmbientLight)是由光源发出经环境多次散射而无法确定其方向的光,它似乎来自所有的方向。当环境光照到物体表面时,它在各个方向上均匀地发散(类似于无影灯光)。一般说来,房间里的环境光成分要多些,户外的相对要少得多。漫反射光(DiffuseLight)来自于一个固定的方向,它垂直于物体时比倾斜时更明亮。然而,一旦照射到物体上

40、,则在各个方向均匀地发散出去,因此,无论观察点处于哪个位置,它的亮度都是一样的。来自特定位置和特定方向的任何光线都可能有散射光成分。镜面光 (SpecularLight)也来自于某个特定的方向,它几乎全部反射到对称的方向上去。光亮的镜面和金属具有很高的镜面反射成分,而像粉笔和地毯等几乎不发生镜面反射。镜面反射反映了物体的光洁度。 材质是指物体表面对光的反射特性。材料的颜色决定于其对入射光中的红、绿、蓝各成分的反射比例。材质影响着物体的颜色、反光度和透明度等。例如:一个只反射红光的物体在一束白光的照射下将呈现为红色,若放在纯绿色的光中观察,物体看起来将会是黑色的。光源的特性由所发出的三种颜色的光

41、的比例来确定。和光源类似,材料也具有环境色、漫反射色、镜面反射色,分别决定于了材料的环境光、漫反射光、镜面反射光的反射系数。材料的上述各种反射光分别与来自各个光源的相应成分结合,反射的环境光和漫反射光决定了材料的颜色,一般来说两者相近或相同;而镜面光反射通常为白色或灰色,因此物体高光部位的颜色和光强就决定于光源的镜面反射光的颜色和强度。例如当白光照射到发亮的红色塑料球表面时,球的大部分表现为红色,但闪亮的高光部位为白色。一个光源决定了光的颜色、反射特性、强度和入射光的方向。物体的几何性质及材质决定发射光的颜色、反射特性、强度。光和材质的颜色都采用红、绿、蓝三原色合成, 光源和材质的设置参数中都

42、包含对R、G、B的设定,但含义确是不同的。光源的RGB值代表各种颜色占最大光强的百分比。通过调整各数值可以使光源呈现出各种不同的颜色。例如:R=G=B=1得到最强的白光,而R=G=B=0.5时,由于光强减弱,得到灰色光。还可以通过调整RGB值得到各种颜色的色光。对材料来说上述各值分别对应于材料对各种色光的反射比例。例如:如果对某种材料R=0,G=1,B=0,则这种材料完全反射入射的绿色光,完全吸收入射的其它两种色光。所观察到的物体的颜色由两者共同决定。如果光源的参数为(RL,GL,BL),材质的参数为(RM,GM,BM),若不考虑其他影响因素,则观察到的光照的参数为(RL*RM,GL*GM,B

43、L*BM)。另外对于多个光源来说,它们的各个成分满足叠加理,叠加之和超过1的颜色分量将被置为1。 3.3 光照处理的具体步骤 OpenGL光照模型考虑了光源和物体材料属性两方面的因素,同时光照效果又细分为环境光、漫反射光和镜面反射光等方面的效果。OpenGL通过控制光照与物体的关系,恰当地使用各种光源和定义物体表面的材质特征,可以产生多种不同的视觉效果,从而实现真实场景的模拟。由于系统采用的纹理图案色彩比较明亮,配合光源和材质的设定,从而使三维场景明亮、自然。 概括来说,对场景作光照处理的具体步骤如下:(1)定义每个顶点的法向量,从而确定物体相对于光源的方位。OpenGL通过法向量来确定顶点从

44、每个光源所得到的受光量,并用于像素点的颜色计算当中。(2)创建、放置、打开光源。创建光源就是要指定光源的各种属性,例如颜色、位置和方向等。选择不同的属性值,则对应的光源作用在物体上的效果也不一样。OpenGL通过函数Void glLightifv(Glenum light,Glenum pname ,TYPE param)来指定光源的各种属性。其中第一个参数light指定所定义的光源名称, light用形式为GL_LIGHTi的符号常数表示。第二个参数pname指定光源特性,最后一个参数param设置相应的光源特性值。函数glLight通过参数Gl_AMBIENT,GL_DIFFUSE,GL_

45、SPECULAR来设定光源的颜色属性。通过辐射光、环境光、漫反射光、镜面光的颜色强度的叠加产生最终的场景颜色。OpenGL通过对物体场景的考察,决定光源的位置,通过调整各种光的强度进行叠加,从而更真实地模拟实际光源。在OpenGL中,必须明确指出光照是否有效或无效。如果光照无效,则只是简单地将当前颜色映射到当前顶点上去,不进行方向、光源、材质等复杂计算,那么显示的图形就没有真实感。要使光照有效,首先应启动光照,即glEnable(GL_LIGHTING);然后,必须使所定义的每个光源有效,即glEnable(GL_LIGHT0)。若使光照无效,则调用gDisable(GL_LIGHTING)来

46、关闭当前光照。(3)定义场景中物体的材料属性。 场景中物体的光照计算不仅取决于光源的属性,而且和材料的特性直接相关。物体的材料属性决定了物体的反光性质。由于材料的特性包括辐射光色、环境色、漫反射色、镜面反射色和光亮度。OpenGL通过命令Void glMaterialifv(Glenum face,Glenum pname ,TYPE param)来指定光照计算中所采用的材料特性。函数参数的face的值GL_FRONT,GL_BACK和GL_FRONTL_AND_BACK分别指定应用所定义材料参数的正面、背面、还是同时应用于正反两个表面。第二个参数pname指定材料特性,最后一个参数param设置相应的材料特性值。glMaterial()中同样通过参数Gl_AMBIENT,GL_DIFFUSE,GL_SPECULAR来设定材料的响应特性。其中环境光反射影响物体的总体颜色,漫反射色在确定所观察物体颜色时起决定性作用,镜面反射则是物体上产生高光区域的原因。 具体代码如下:GLfloat light_ambient = .5f, .5f, .5f, 1.f; GLfloat light_specular = 0.f, 0.f, 0.f, 1.f; GLfloat light_diffuse = 1.f, 1.f, 1.f, 1.f; GLfloat light_position =

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1