三维场景中的真实环境特效模拟——水体与地形设计-毕业论文_第1页
三维场景中的真实环境特效模拟——水体与地形设计-毕业论文_第2页
三维场景中的真实环境特效模拟——水体与地形设计-毕业论文_第3页
三维场景中的真实环境特效模拟——水体与地形设计-毕业论文_第4页
三维场景中的真实环境特效模拟——水体与地形设计-毕业论文_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

厦门大学国家示范性软件学院 2003级 张宇本科毕业论文(科研训练、毕业设计)题 目:三维场景中的真实环境特效模拟水体与地形设计姓 名:学 院:软件学院系:专 业:软件工程年 级: 学 号:指导教师(校内):职称: 年 月摘 要: 在计算机只有0与1的世界里,由于早先的认知水平与技术和硬件的限制下,人们对世界的描述都是采用一种二维的方式。这种方式对人们改造世界和认识研究世界产生了制约。随着科技的进步,计算机图形显示与硬件有了很大的发展,人们开始使用三维的描述方式来表述对世界的认识。然而,刚开始的三维设计色调单一,光影效果较差,并且交互性不强,无法满足人们日益增长的视觉效果要求。近年来,计算机的软硬件都飞速地发展,特别在图形显示上,GPU(Graphics Process Unit,图形处理器)的处理能力的提高和管道渲染可编程的出现,使得实时渲染的三维效果越来越逼真。因此三维场景也越来越广泛地应用于虚拟现实、GIS系统、模拟战场、数字化城市、游戏娱乐等领域。并且人们可以在三维场景中进行漫游,查询等各种交互操作,从而到达一种身临其境的感觉,以便在更低的成本与危险性下发现更多的现象与规律。本文利用目前已有的技术环境,使用Visual Studio 2005sp1在DirectX SDK Dec2006与OGRE类库对三维场景中的水体与地形效果进行实现。系统生成的地形可以实现漫游效果,可以方便添加树,草等物体,对放置的物体位置可以进行定位判断、碰撞检测使其贴与地形表面。三维水体主要实现动态水面效果,包括反射、折射和波动的海面效果,并且对水面材质、波动的纹理、波动幅度等细节进行设置。本文进一步给出了在实现该系统效果中涉及的相关基本概念,包括碰撞检测、基于波的分析方法、小幅波理论算法、高度图(Heightmap)、PNG等等。另外,本文还对实现水体效果的四种主流方法进行比较,指出各种方法比较适用的水体效果。关键词:图形处理器(GPU);面向对象图形渲染引擎(OGRE);碰撞检测;小幅波理论Abstract: The computer is only 0 and 1 in the world, as a result of the earlier level of knowledge and technology and hardware limitations, People in the world are described using a two-dimensional approach. People are described the world using a two-dimensional approach. This transformation of the peoples way of understanding the world and study the world have constraints. With the advancement of technology, computer graphics hardware has greatly with the development. People began to use the three-dimensional description to express understanding of the world. However, the beginning of the 3D design of a single color, light and shade less effective, and the degree of interaction is not strong, People unable to meet the growing demands of visual effects.In recent years, computer hardware and software are rapid development, especially in the graphics, GPU (Graphics Process Unit)s handling capacity of the pipeline and enhance the appearance of programmable exaggerated, make real-time rendering of 3D effect increasingly realistic. Therefore 3D scene has become increasingly widely used in virtual reality, GIS systems, battlefield simulation, digital city game entertainment, and other fields. And people in 3D scenes for roaming, inquiries and other interactive operation, Down on the ground so as to reach a feel for the lower cost and risk found that the more rules and the phenomenon.By using already existing technology environment, Visual Studio 2005sp1 in Dec2006 with DirectX SDK OGRE 3D library scene of a body of water and terrain effects achieved. Generation of roaming the terrain effects can be achieved, it is convenient to add trees, grass and other objects, placed on the location of objects can be located judgment, collision detection so affixed with the surface topography. 3D water main implements dynamic surface effects, reflection, refraction and fluctuations in the sea effect, and the surface material. Texture volatility, fluctuations in the rate set for such details.This paper is the further realization of the system in effect related to the basic concepts, including collision detection, Based on wave analysis method, small-wave theory algorithm, a height chart (Heightmap), PNG and so on.In addition, the paper also achieves the effect of water four mainstream approaches, pointing out that various methods are suitable for water effects.Key words: Graphics Processor Unit (GPU); Object-oriented Graphics rendering Engine (OGRE); Collision Detection; Small-wave theory目录第一章 三维场景设计开发概况91.1 开发概况91.2 技术可行性91.3 运行平台101.4 开发环境101.5 开发前景10第二章 整体系统框架112.1 整体框架112.2 OGRE简介11第三章 地形设计133.1 地形设计概述133.2 地形基本实现方法133.2.1 terrain.cfg133.2.2 HeightMap143.2.3 PNG15第四章 水体设计164.1 水体设计概述164.2 水体设计的四种实现方法比较164.2.1 基于波的分析方法164.2.2 基于物理模型的分析方法164.2.3 基于粒子系统的分析方法174.2.4 基于光影处理的方法174.3 细胞自动机184.4 基于波的基本思想184.5 基于波的算法194.5.1 小振幅波理论算法194.5.2 线性算法22第五章 系统整合245.1 地形与水体整合245.2 三维环境添加24第六章 结束语26致谢27参考文献28附录30线性算法程序基本实现代码:30ContentsChapter 1 3D Scene Design Overview91.1 Development Overview91.2 Technical feasibility91.3 Platform101.4 Development Environment101.5 Development prospects10Chapter 2 Overall framework112.1 Overall framework112.2 OGRE Introduction11Chapter 3 Terrain design133.1 Terrain design outlined133.2 Terrain basic method133.2.1 terrain.cfg133.2.2 HeightMap143.2.3 PNG15Chapter 4 Water Design164.1 Design of water164.2 Water designed to achieve four methods164.2.1 Based on wave analysis164.2.2 Based on the physical model164.2.3 Based on the particle system174.2.4 Based on the handling of light and shade174.3 Cellular Automata184.4 The Basic Principles of the wave184.5 The algorithm Based on the wave194.5.1 Small amplitude wave theory algorithm194.5.2 Linear Algorithm22Chapter 5 System Integration245.1 Terrain and water Integration245.2 Add 3D environment24Chapter 6 Concluding remarks26Acknowledgement27References28Supplement30 Linear Algorithm basic codes:30第一章 三维场景设计开发概况1.1 开发概况三维场景广泛应用在虚拟现实、GIS系统、模拟战场、数字化城市、游戏娱乐等领域。传统的色调单一,光阴效果极差的固化的三维场景已经不能满足人们的视觉效果需求。随着硬件的飞速提升,特别的GPU处理能力的提高和管道渲染可编程的出现,实时渲染的三维效果越来越逼真。早期的水体模拟,主要采用基于参数建模的方法。如基于统计的FFT经验模型,首次由Mastin提出,利用海洋统计和经验模型1,采用大量正弦曲线的叠加来模拟海面,通过快速傅立叶变换(FFT)合成一个类似于真实海浪谱分布的高度场.2001年siggraph, tessendorf详细地介绍了基于FFT的海浪模拟方法,其基本思想是生成一个具有与海面同样频谱的高度场,来很好地模拟波幅较小的海平面。以上方法由于在合成的过程中采用规则的矩形粗网格来绘制,略微降低了最终水面的渲染质量和真实感,而且实时技术的实现还只限于CPU的执行。或者使用基于物理模型方法2,使用N-S方程,但是该方法求解方法复杂且同样只限于CPU求解,影响渲染速度。本课题基于GPU渲染技术开发一个实时三维场景,模拟多种自然场景中的动态的特效,包括各种动态云生成、真实水面效果,高动态光(HDR)渲染等。对于水体,由波形函数构造参数曲面来模拟水面高度场,同时创建动态的平铺凹凸曲面来得到水面细节,并且实时模拟水面的阴影,以及反射和折射等物理现象,获得动态可由参数调整的优秀水面效果。整个系统充分利用GPU并行加速计算,经时间证明,将非常适合于各种三维场景中的模拟和渲染。1.2 技术可行性系统基本框架用OGRE(Object-Oriented Graphics Rendering Engine)搭建,OGRE是一个由C+编写设计的扩展性很强的开源图像引擎。OGRE除了可调用所有Direct3D和OpenGL的接口外,还可方便扩展使用其他类库的接口。使用D3D作为图形渲染API,通过 shader(着色器)编程,在GPU层实现各种特效渲染。应用OGRE中.material脚本实现shader。1.3 运行平台硬件平台:内存512M以上,显卡支持ShaderModel 2.0以上。软件平台:Windows XP、NT。1.4 开发环境Visual Studio 2005sp1。主要应用类库:DirectX SDK Dec2006,OGRE 1.4.0。1.5 开发前景三维场景设计的应用范围相当广泛,前景广阔。在现在的游戏市场中,游戏玩家的要求日益提高,更倾向于在模拟的游戏中获得逼真的现实效果,逼真的三维场景能提高玩家在游戏中的沉浸感和真实感觉,能够在游戏中得到身临其境的冒险体验。能够吸引更多的玩家进入,取得更为广阔的市场。在模拟战场中,逼真的三维场景设计能够使战士们在模拟的环境中取得接近现实的战术战略的练习模拟3。最大的优势就是只需要很低的成本,以及近零的危险性,获得全方面的训练。这在军事训练上是很大的一个突破。在GIS系统(地理信息系统)中2,由于GIS已有30多年的历史,已经深入到诸多与国计民生密切相关的领域,并在其中发挥着越来越大的作用。而随着计算机技术以及计算机图形学的研究和发展,GIS的可视化已成为当前GIS的一个研究热点。GIS系统中的三维模型不仅仅可以可视化而且可以进行交互的操作,这样的模型能提供一个动态的环境,用以在相应氛围的空间中逼真的显示、管理和创建复杂物体,并为进一步空间分析和决策服务。为建筑业已经地理勘测等多行业提供便利。本文主要对基于GPU编程的三维场景中的水体和地形更加快速优秀的效果实现进行介绍。第二章 整体系统框架2.1 整体框架图2-1.基本框架 图2-2.层次结构图 2-1基本框架是整个基于GPU的三维场景真实环境特效模拟系统的基本框架,集光影、天空、地形、水体于一体。图2-2层次结构是整体系统的层次结构图,包括背景,天空盒等各个部分的层次。本文中主要是对于系统中水体与地形两个模块的实现方法的介绍。2.2 OGRE简介OGER全称:面向对象图形渲染引擎(Object-Oriented Graphics Rendering Engine),它采用面向对象的设计方法,插件式的结构,save/Load的系统,很大程度满足的软件开发的灵活性。使用C+进行程序设计,可以实现跨平台的开发。 支持 ZIP/PK3 压缩结构。对于脚本,物理计算,光照, 纹理,动画,和shader 都有支持,最新的版本也支持cg。3d文件可以通过提供的3ds Max插件中导出。OGRE作为一个开源的图像引擎,OGRE几乎拥有了商业3D渲染引擎的全部特性,甚至在某些方面超越了它们。它能够全面并同等的支持OpenGL和Direct3D,全面支持Windows,Linux以及Mac OS X平台,能够自动处理渲染状态和空间剪裁,也支持所有纹理混合和绑定技术,同时支持对GPU编程技术,支持汇编语言和所有高级语言形式的各种着色语言,其中高级语言包括:Cg,HLSL和GLSL,拥有全面支持材质LoD(细节层次,mipmapping)技术,能够全面支对顶点和索引缓存(vertex and index buffers)、顶点声明(vertex declarations)以及贴图缓存(buffer mappings),拥有全面支持并且方便使用的天空盒(skyboxes),天空面(skyplanes),以及穹顶(skydomes)等等诸多的优点。通过OGRE的脚本可以实现GPU编程,也就是shader语言,可以实现制作各种绚丽效果的算法(如过程纹理、BumpMap等算法,模拟水晶、瀑布、小溪等效果),在实现过程中合理地分配CPU与GPU工作量,可以让整个渲染流水线达到它的最高效率。第三章 地形设计3.1 地形设计概述三维地形场景的真实感绘制能让人产生身临其境的感觉,被广泛应用于飞行训练、战场模拟等一些大规模综合分布仿真系统中。在这些分布式仿真系统中,有时需要进行三维场景的远程显示或者三维场景绘制过程的并行处理等,以提高仿真系统的可视化。3.2 地形基本实现方法首先采用HeightMap生成基本的地形。为了让地面显示与现实更加接近,地面上会贴上一层纹理图,该纹理图可以自由选择逼真的地表贴图,采用displacemap可以使得贴图效果更加优秀。再添加上地形的细节纹理图,作用是避免在地形块拼接处的断面瑕疵,以达到地形的完整平滑的逼真效果。然后是选择场景中的中心坐标和观察点,一般会将观察点设置在中心坐标正后方的一定距离,避免看不到区域的过多浪费绘制。最后读入高度图,我们认为图像的中心为坐标原点,往上和往右是坐标增长的方向,这样可以算得,图像的左上端点像素(即第一个像素)存储着坐标为地面的高度数据,第二个像素存贮着坐标为地面的高度数据,依次类推。因此可以根据地面的水平坐标去高度图像中寻址,获取高度数据。3.2.1 terrain.cfgterrain.cfg是OGER中对地形的配置文件,OGRE从该文件中读取地形设置,并且按照这个配置直接生成整个地形。实现地形的渲染需要对其中的参数和对应API进行设置。以下是terrain.cfg中的设置参数及其配置方法:1. WorldTexture: 指定地形纹理的名称。2. DetailTexture: 指定细节纹理的名称。3. DetailTile: 这个指定细节纹理在每个地形小块中重复次数,也就是说,如果这个值是n,细节纹理将在每个地形小块的nn格中被显示。如果这个值设置过低,地形在近看时会模糊,反之则会在放眼观察时看起来有反复模式。4. PageSource: 指定高度图数据的来源,默认为Heightmap。5. Heightmap.image: 指定高度图的名称。尺寸必须是方形,而且要符合2n+1, 高度图越大,地形细节就越高,但是程序消耗的的资源也越多(包括程序启动时间)。6. PageSize: 地形将会有PageSize PageSize那么大。如上所述,必须要符合2n+1 (如65,129,257,513,1025)。7. TileSize: 地形小块有 TileSize TileSize大小。这个数必须小于PageSize。这个数必须要符合2n+1须要符合2n+1。设的过小会严重影响性能,太大的话又会在场景的某些部分导致不必要的高细节。8. MaxPixelError: 指定当决定哪个细节层次被使用时的最大允许误差。设置过高会导致地形撕裂,过低则会影响性能。9. PageWorldX, PageWorldZ: 设定地形在世界坐标系中的范围,地形越大,细节越低,地形使用的顶点数基于高度图,不是世界大小,你可以缩放地形到你想要的任意大小。10. MaxHeight: 在世界坐标系中地形的最大高度。高度图中的0255 缩放到世界坐标系中的0MaxHeight。11.MaxMipMapLevel: 指定渲染地形使用的细节层次的数目。地形的远处和平坦处会以低细节渲染。12. Heightmap.raw.size: 指定高度图的尺寸。13. Heightmap.raw.bpp: 指定每象素字节数,1=8 bits, 2=16 bits。14. Heightmap.flip: 如果设置为true,则翻转高度图。3.2.2 HeightMap地形最明显的特征是其起伏不定的高山、丘陵、盆地等地表特征,在本文中的三维地形的地表特征主要由HeightMap进行设置。HeightMap有两种格式:灰度图和256色BMP。1灰度图:HeightMap在本文中作为地形生成参考采用灰度图,每个像素表现一个高度值,0表示地面,255表示地形最高点。可以采用两个三角形组成的矩形生成(图3-1 初步矩形灰度图),再对此矩形做栅格分割,获得更多个小的由三角形组成的矩形灰度图(图3-2 细节矩形灰度图),创建完成后,对小的矩形渲染,分割的小矩形越多,获得的地面平滑度越高。 图 3-1 初步矩形灰度图 图 3-2 细节矩形灰度图2256色BMP:采用一个512512像素的256色BMP文件,该图形文件按实际地形高度测绘,使用图形中的红色分量表示地面的海拔高度,红色分量从0255共有256级。这样如需加入水面效果,只要将高度图的红色分量指定为0,将生成水面而非地面;要指定为陆地,红色分量范围为1255。树林的设置采用绿色,绿色分量越大,表示树林越密,同时这片土地将呈现为草地效果,但绿色分量不可滥用,因为绘制树木很费时间,树木过多将降低程序的实时性,一般将可见地树木数量限制在500棵以内。3.2.3 PNG本文主要采用的是第一种高度图,仅仅使用黑白的灰度图,原因是便于地形添加模型的可扩展性,并且该高度图格式为PNG。PNG(Portable Network Graphics)是一种新兴的网络图像格式。PNG是目前保证最不失真的格式,它汲取了GIF和JPG二者的优点,存贮形式丰富,兼有GIF和JPG的色彩模式;它的另外一个特点是将图像压缩到极限但又能保留所有与图像品质有关的信息;它的第三个特点是显示速度很快,只需下载1/64的图像信息就可以显示出低分辨率的预览图像;第四,PNG同样支持透明图像的制作。第四章 水体设计4.1 水体设计概述三维场景的设计中现实自然的模拟一直是计算机图形学里的最具挑战性的问题之一,比如天空,地形,水体,光影等效果,也都广泛应用于计算机游戏、影视、广告等个中领域。作为场景设计中的重要内容,流水、波浪的模拟正日益体现其重要性与困难性。逼真的水体效果能大大提高系统的沉浸感和真实感,而其的模拟又非常困难,因为水流的不同的情况下形态各异,而且其显示又有着特殊的要求。因此在前人不断的探索下,出现了多种的对水体设计的实现方法,从而获得越来越优秀的显示效果。4.2 水体设计的四种实现方法比较水体的效果较多要实现逼真的模拟也会较为困难,因此目前有几种主要偏重不同效果的主流实现方法: 41.基于波的分析方;2.基于物理模型的分析方法;3.基于粒子系统的分析方法;4.基于光影处理的方法。这四种方法各自有各自的优点缺点,适用与水体效果的不同渲染方面。以下对它们进行对比介绍。本文主要使用基于波的分析方法,实现水波表面的各种效果。4.2.1 基于波的分析方法这类方法直接构造参数曲面来代表水表面,参数曲面由波形函数表示,也就是说这一类方法通过直接模拟波属性来得到水波的水波图像,可以模拟雨点造成的水波,微风造成的涟漪和紊乱的短波峰,但是解决不了水流的形体的破碎问题。4.2.2 基于物理模型的分析方法2基于物理模型的基本思路是首先确定一个合理的物理模型,该模型能够描述某一特定条件下水流运动的特征,然后通过求取物理模型在不同时间点的数值解,得到场景中各元素在每个时间步的状态,以每个时间步为一个周期对场景进行绘制,这样场的各种元素在物理规律的约束下运动,所有的运动状态连续起来便形成水流的流动,这方面的典范是Navier - Stokes 方程。它有很强的物理背景,是当今非浅性科学研究中的重点和热点问题。 若使用这种方法建立浅水波模型,再使用计算流体动力学的数值分析工具来求取方程数值解,这个方法过于复杂且对光影处理能力差。4.2.3 基于粒子系统的分析方法粒子系统最早由ReevesW. T. 5 在1983年提出, 主要用来解决由大量按一定规则运动或变化的微小物质组成的大物质在计算机上的生成与显示问题。该思想一经提出便得到了相当广泛的应用。如用于模拟原子弹爆炸、云层变化及水波扩散等。这类物质的共性是它们既没有固定的形状,也没有规则的几何外形,并且其外观还会不断地随着时间的变化而发生不确定的变化。显然,传统的欧几里德几何建模方法是无法用来模拟上述物质的。采用ReevesW. T. 所提出的粒子系统进行水波模拟的主要优点是可以不用建立复杂的微分方程, 也不需要进行精确的计算。在该算法中,为了满足求解的基本条件,可作两点假设:(1)水面上的点都是离散的,并且各点均满足波的传播曲线; (2)任选一幅图片作为背景,并将图中的每一个像素视为粒子系统中对应的一个粒子。在上述假设下,一幅静态的背景图片变成了一个能产生动态水波的“水池”。这类方法把流体看作离散的粒子集,粒子有一定的属性,使用这种方法人们成功地描述了瀑布、喷泉、水滴以及浪花飞沫。但是这种方法不能模拟一个整体的水波。4.2.4 基于光影处理的方法基于光影处理的方法主要是采用水波建模阶段生成的水波数据,然后将水波渲染到屏幕上,同时能呈现出水表面与周围环境以及光线之间复杂的光学特性。这类方法专注于模拟水流的光影特效,能出色地模拟人们从水底和水上观察阳光照射在水波上形成的光与影现象。该方法采用光照模型或者明暗模型5,主要用于表示物体表面某点处的光强度的计算。实际中有两种做法:其一是将光照模型应用于每个可见面的每个点,另一种方法是,将光照模型应用在面片上少量点然后对亮度进行插值。前者由于计算量很大难以满足高实时性的要求,如:辐射度算法。该方法是在GPU上通过逐像素计算完成的,这就需要硬件支持可编程软件接口PS2. 0及以上。而如今很多中端硬件都支持PS2. 0及以上( Pixel Shader2. 0, 像素着色器) , 如: Nvidia 公司的Geforce系列, ATI公司的R9800XT/9600XT, Nvidia 公司的6200 /6600 /6800,而Nvidia公司的6200 /6600 /6800支持PS3.0也是目前硬件支持PS的最高版本。这方面的工作把注意力集中到如何模拟光线和水流的作用效果上来,无法兼顾水流的其他特性,并且对硬件要求较高。4.3 细胞自动机6最早的细胞自动机模型是由乌拉姆提出的。他当时的目的很明确,即利用尽可能简单的逻辑规则,给出一种随时间演化的动力学,使之有足够的能力模拟尽可能多的复杂系统。他所提出的解决办法是:设想一个空间点阵,在每个结点上放置一个带有状态参量的组件,称之为细胞。点阵中的结点按一定的几何方式彼此连接。取离散的时间变量,各细胞的状态随离散时间变化;假设某一时刻所有细胞的状态均已给定,那么下一时刻每个细胞的状态,仅仅由环绕它的某一小邻域中上一时刻的其它细胞的状态决定。细胞自动机的主要特征如下:(1)空间是离散的;(2)时间是离散的;(3)演化规则是离散的;在这样一个总框架下,细胞自动机的具体形式可以多种多样。例如点阵的几何结构可以不同,邻域可按不同方式规定,演化规则可以是决定性的,也可以是概率性的。然而其基本原则是不变的,即以大量简单元件通过简单的连接和简单的局部运算规则,模拟丰富而复杂的自然现象。4.4 基于波的基本思想该方法主要用于实现水体的水波效果。主要使用的基本思想就是利用上述的细胞自动机。要实现水波的造型,就是要确定水波自由面的形状y =x,z,t7。考察x z平面上mn的矩形区域,将该区域均匀分割成mn的矩形网格。从细胞自动机的观点来考虑,则其中每一个网格点对应着一个细胞,每一个细胞的状态变量只有一个,即为该点的自由面高度y。问题的关键是要确定由一状态(t时刻)得到下一状态(t+1时刻)的演化规则。下一状态的计算方法有两种:小振幅波理论算法和线性算法。将在下面章节介绍。4.5 基于波的算法基于波的算法主要有小振幅波理论算法6和线性算法7。本文主要使用线性算法,原因在于:小振幅波理论算法中使用大量的正弦余弦等三角函数,在三维场景渲染中,将花费较多的渲染时间,影响速度。而线性算法可以简单快速的得出需要渲染的下一状态量,又不降低效果显示,这将是在大型场景中渲染的不错的选择。4.5.1 小振幅波理论算法6对于初始(t=0)静止的流体,施加扰动(例如一阵风),要求确定t0以后流体的运动,同时,还要确定自由面的形状y =x,z,t。从流体的基本方程出发进行求解,需要用到非线性的边界条件。如果认为波浪振幅相对于波长是个微量, 并相应地作一些近似处理,使问题的求解得到简化,这就是小振幅波理论的方法由小振幅波理论可得,二维情况下的自由面高度为:=-gDcoth khsinkx-t (4-1)令a=-gDcoth kh,则有:= asinkx-t (4-2)在此式中,a为波幅,k为波数,为波的频率,h为水深,D为求解过程中引入的常数系数。这就是说,在小振幅波理论中,水波的波形呈正弦分布。由小振幅波理论可知,水波的自由面波形呈正弦分布,因此可设波形方程为:=asintx+z+ (4-3)对于同一网格点的两个相邻分布时刻, ,令t=( +)2, t= - (i=0),根据正弦函数的求和公式,有x,z,+x,z,=2cost2x,z,t (4-4)令C=2cost2,则C是一个介于-2,2范围内的常数,于是x,z,=C,-x,z, (4-5)考虑到水的传播特性,每个网格点的高度值变化都要受到周围网格点的影响。我们可以通过某一邻域内的网格点高度值来估计当前点的高度值, 。如果我们考虑的是各向同性传播的水波,那么邻域的形状也应该是各向对称的,严格说来应该是一个圆形区域。但由于我们所考察的是离散的矩形网格,无法严格满足圆形的邻域条件,因此实际采用的是如图4-1 领域分布图所示的一些多边形区域。图4-1 领域分布图中,标号k 表示的是当前考察点,标号1,2, , r表示邻域内的r个结点。如图4-1 领域分布图(a)的方形邻域包括8个结点( r= 8),图4-1 领域分布图(b)的六边形邻域r=20,图4-1 领域分布图(c)的菱形邻域r= 12。于是, 我们可以如下估计的,值: (a) (b) (c)图 4-1 领域分布图,t= ,j=1,2,r (4-6)上式中,j=1,2,r为权因子,代入(4-5)式得:,= ,-,t (4-7)式中,K为结点(细胞)编号,j为领域中的结点编号,i为时间序列的编号。式(4-7)即为我们所确定的状态演化规则。式(4-7)给出了水波演化规则的一般形式,一般情况下,对于各向同性传播的水波,可以取C=2,= ,j=1,2,r,则该式变为,= ,-,t (4-8)并且式(4-8)给出的演化规则满足水的能量守恒。可以由以下进行证明:由式(4-8)可得:, =,-2,+,=,-,+,=, -,+, (4-9)由邻域分布图可知,邻域的作用是相互的。即若结点j是结点k的邻域结点, 则结点k也是结点j的邻域结点,若对考察区域内的所有结点k(k = 1,2, ,mn) , 根据式(4-9)求和,则有:,=,-,+,于是,=, (4-10)由此可得出,式(4-8)符合能量守恒。这样可以得出在下一状态的演化,从而获得水的波动效果。4.5.2 线性算法7利用小振幅波原理的算法是最直接的求出下一状态的振幅的方法。还有一种方法是本文主要使用的快速线性计算方法。考虑到计算速度上的因素,设有一线性公式,在任一时刻,可根据与某点相邻的上、下、左、右四点及自身的振幅计算出下一时刻该点的振幅,那么据此公式,便可求出任意时刻水面上任意一点的振幅。在图4-2 任意一点及其周围四点的分布图中,设水面某点在时刻的振幅为,在时刻的振幅为,设想除了与相关外,还受到其上、下、左、右四个相邻点的影响(为了简化计算,设各点对的影响是相同的,并略去其他点的影响) ,因而,可建立一个如下的水波振幅线性计算公式: (4-11)式(4-11)中, 点为在t1时刻的振幅, a,b为待定系数, 及分别为各点在t0时刻所对应的振幅值。图 4-2 任意一点及其周围四点的分布图理想条件下,可设水的阻力为0。根据能量守恒定理,水的总势能应保持不变,即在任何时刻,所有点的振幅之和为一常量,因此,对于和 ,应有式(4-12)成立: (4-12)设在系统可视范围内,总共可显示k(k=mn,m为像素行数,n为像素列数)个点,按式(4-11)对各点求和并代入式(4-12),可得:(4-13)由于上式中和( i = 1,2,m )所对应的各点均已超出可显范围,故改用对应的各边界点的振幅值进行近似计算,即假设:同理可设:将上述假设代入式(4-11),经合并整理后,可得: (4-14)一般地,由于不等于0,由式(4-12)可得:4a+b=1 (4-15)解式(4-15),可得一组最简解:a=0.5,b=-1。代入式(4-11)最后得出水波振幅线性计算公式: (4-16)从式(4-16)可得出关于水波扩散过程中水面各点振幅的近似计算方法的一般性结论:已知某一时刻水面上任意一点的振幅,则该点下一时刻的振幅等于与该点紧邻四点的振幅之和除以2并减去该点的原振幅。该算法在程序中的实现方法将在本文的附录里贴出。第五章 系统整合5.1 地形与水体整合在地形与水体效果分别实现以后,需要将两者结合在同一个场景中,获得整体效果。本文中采用地形高度图如图 5-1 三维地形高度图,实现效果为中间白色区域作为高起的小岛,周围黑色区域为高度指定为0的平地,用于添加水体效果。整合水体与地形主要思想是将水体与地形分别设定为场景中的实体,再将实体同时加入场景中,并且对实体在场景中的坐标进行定位以将水体与地形紧密集合。图 5-1 三维地形高度图5.2 三维环境添加在地形与水体整合以后,需要将场景中添加其他一些效果,使得三维场景获得更加逼真的效果。本文中主要对场景加入天空、岛屿上的椰树、盘旋的飞机以及浮动的军舰。使得场景效果更加逼真以及获得更多的动态效果。添加时将需要添加的实体设定为水体或地形场景的分结点,加入场景并定位。作为非本文主要设计内容,天空主要采用OGRE中的天空盒,实现类似贴图的背景效果,去除空旷的背景。飞机以及军舰的运动效果主要思想是在程序中设计好每帧的运动路线,在程序运行时,对每上一帧的运动状态以及下一帧的运动路线读取以定位,在连贯的帧运行过程中获得运动效果。系统实现的水体效果实时渲染速度快,并且效果比前人所实现的更加逼真细腻,下面是水体部分细节效果。见图5-2 三维场景设计之水体细节图:图5-2 三维场景设计之水体细节图整体实现效果如图5-3 三维场景设计之水体与地形整体效果:图 5-3 三维场景设计之水体与地形整体效果第六章 结束语课题中三维场景中的真实特效模拟包括基本地形;水体的反射、折射等各种效果;天空的云、太阳、月亮、星空等各种效果;以及光照和阴影效果。本文是该课题的子课题,主要是对基本地形,水体反射、折射、波动等效果的实现。对于在三维场景界最为有挑战性的水体效果功能,主要根据细胞自动机理论,采用快速的线性方程进行模拟实现水体的波动效果,参考文献7,对其的快速实现算法进行了效果的实现,达到优秀画质和快速的渲染。并且利用OGRE框架,在程序中添加进入对用户自行调整水体波动的大小、水体表面材质、HDR光照效果等,获得更加自由的效果实现。实现系统光源,水体对光源的反射。最终整合效果达到完整美观,并且渲染快速。将可以应用于在各种大型场景的快速渲染,将地形高度图更换为地表卫星图可以快速实现GIS系统的真实地形模拟。致谢毕业设计的完成,可以说不仅仅是我个人的努力,还有着很多的人对我帮助很大,让我满怀感激之情。回顾四年的大学生活让我获得了很多,无论是在专业知识方面,还是在我的人生态度上,我可以很明显的体会到自己的一个成长,对于我将来步入社会起到了不可磨灭的影响。我首先要感谢我的指导老师副教授和陈锋助教,他们以高超的学术水平在我毕业设计的完成过程中对我遇到的很多问题,给了我非常大的专业指导;并且在设计的各个阶段里,由于有他们严谨的学术态度,对我的严格要求,让我能一步一步有计划的进行毕业设计的完成。在这阶段里,多次的阶段报告给了我一次又一次的锻炼机会和与老师同学交流的平台,对于毕业设计的完成起到了非常大的作用。其次我也要感谢我的父母,家永远是最坚强的后盾。在我大学四年里面,遇到不少的问题,父母始终对我谆谆教诲排忧解难,为我提供不断前进的动力。他们对我的帮助不仅仅是物质上的,最为重要的是他们对我的关怀对我的爱,将是我要铭记一生,感怀深报的。然后我要感谢我的同学和朋友,黄渊浩与陈晓沁和我同是这个三维场景设计真实特效模拟课题下的同学,虽然大家的子课题不同,不过在我们的设计过程中,互相的学习交流,取长补短,让我们能不断地互相扶助前进。这对我的毕业设计的完成同样起到了很大的作用。以及宿舍套间的所有朋友,他们是我大学四年生活上不可获缺的,正是有了他们,我的大学生活才更加的完整和开心。要感谢的人很多,在此一一列举我想能另起一篇文章,不过请相信我的心,对于大家给我的无私帮助和无限关怀,我将永远铭记于心。参考文献1 杨怀平,胡事民,孙家广. 一种实现水波动画的新算法J.计算机学报,2002,25(6):612617.2 王少安,魏占营. 三维场景中GIS 模型交互操作的实现以三维城市模型为例中图.焦作工学院学报,2000,19(5):365367.3 刘修国,尚建嘎. 三维场景浏览器的设计与实现J.计算机工程与应用,2002(15):117120.4 夏晓蓉,任永健,马俊. 三维游戏中动态水面的模拟J.电脑编程技巧与维护,2005(7):7779.5 蔡泽伟,陈耀松,刘应中. 三维水面波动过程的计算方法J.水动力学研究与进展,1989,4(1):4850.6 马文君. 借助OPENGL技术模拟水波动画J.中央民族大学学报,2006,15(3):271274.7 陈和平,王早. 水波特效模拟原理及其快速实现方法J.计算机应用研究,2005(4):252255.8 陈路,桑楠,熊光泽. 水波现象的光学模型及其三维仿真研究与应用J.计算机应用,2005,25(10):24592461. 9 刘焕文. 模拟水波反射、折射和衍射现象的解析模型的研究进展J.广西民族学院学报,2004,10(2):7378.10 蒋亚军. 基于OpenGL的三维模拟地形的实现J.现代计算机,2006(241): 9596.11 杨菲,张小龙. 基于OpenGL的三维地

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论