1、厦门大学国家示范性软件学院 2003 级 张宇 1 本科毕业论文 (科研训练、毕业设计 ) 题 目:三维场景中的真实环境特效模拟 水体与地形设计 姓 名: 学 院:软件学院 系: 专 业:软件工程 年 级: 学 号: 指导教师(校内): 职称: 年 月 厦门大学国家示范性软件学院 2003 级 张宇 2 摘 要 : 在计算机只有 0与 1 的世界里, 由于 早先的认知水平与技术和硬件的限制下,人们对世界的描述都是采用一种二维的方式。这种方式对人们改造世界和认识研究世界产生了制约。随着科技的进步,计算机图形显示与硬件有了很大的发展,人们开始使用三 维的描述方式来表述对世界的认识。然而,刚开始的三
2、维设计色调单一,光影效果较差,并且交互性不强,无法满足人们日益增长的视觉效果要求。 近年来,计算机的软硬件都飞速地发展,特别在图形显示上, GPU( Graphics Process Unit,图形处理器)的处理能力的提高和管道渲染可编程的出现,使得实时渲染的三维效果越来越逼真。因此三维场景也越来越广泛地应用于虚拟现实、 GIS 系统、模拟战场、数字化城市、游戏娱乐等领域。并且人们可以在三维场景中进行漫游,查询等各种交互操作,从而到达一种身临其境的感觉,以便在更低的成 本与危险性下发现更多的现象与规律。 本文利用目前已有的技术环境,使用 Visual Studio 2005sp1 在 Dire
3、ctX SDK Dec2006 与 OGRE 类库对三维场景中的水体与地形效果进行实现 。系统生成的地形可以实现漫游效果,可以方便添加树,草等物体,对放置的物体位置可以进行定位判断、碰撞检测使其贴与地形表面。三维水体主要实现动态水面效果,包括反射、折射和波动的海面效果,并且对水面材质、波动的纹理、波动幅度等细节进行设置。 本文进一步给出了在实现该系统效果中涉及的相关基本概念,包括 碰撞检测、基于波的 分析方法、 小幅波理论算法 、高度图( Heightmap)、 PNG 等等。 另外,本文还对实现水体效果的四种主流方法进行比较,指出各种方法比较适用的水体效果。 关键词 : 图形处理器( GPU
4、) ; 面向对象图形渲染引擎 (OGRE); 碰撞检测;小幅波理论 厦门大学国家示范性软件学院 2003 级 张宇 3 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 u
5、sing 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 u
6、nderstanding 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, espec
7、ially 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, battlefi
8、eld 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 e
9、nvironment, 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 jud
10、gment, 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 reali
11、zation 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. 厦门大学国家示范性软件学院 2003 级 张宇 4 In addition, the paper also achieves the effect of water four mainstream appro
12、aches, 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 厦门大学国家示范性软件学院 2003 级 张宇 5 目录 第一章 三维场景设计开发概况 . 9 1.1 开发概况 .9 1.2 技术可行性 .9 1.3 运行平台 .10 1.4 开发环境 .
13、10 1.5 开发前景 .10 第二章 整体系统框架 . 11 2.1 整体框架 .11 2.2 OGRE 简介 .11 第三章 地形设计 . 13 3.1 地形设计概述 .13 3.2 地形基本实现方法 .13 3.2.1 terrain.cfg.13 3.2.2 HeightMap.14 3.2.3 PNG.15 第四章 水体设计 . 16 4.1 水体设计概述 .16 4.2 水体设计的四种实现方法比较 .16 4.2.1 基于波的分析方法 .16 4.2.2 基于物理模型的分析方法 .16 4.2.3 基于粒子系统的分析方法 .17 4.2.4 基于光影处理的方法 .17 4.3 细胞
14、自动机 .18 4.4 基于波的基本思想 .18 4.5 基于波的算法 .19 厦门大学国家示范性软件学院 2003 级 张宇 6 4.5.1 小振幅波理论算法 .19 4.5.2 线性算法 .22 第五章 系统整合 . 24 5.1 地形与水体整合 .24 5.2 三维环境添加 .24 第六章 结束语 . 26 致谢 . 27 参考文献 . 28 附录 . 30 线性算法程序基本实现代码: .30 厦门大学国家示范性软件学院 2003 级 张宇 7 Contents Chapter 1 3D Scene Design Overview.9 1.1 Development Overview .
15、9 1.2 Technical feasibility .9 1.3 Platform.10 1.4 Development Environment .10 1.5 Development prospects .10 Chapter 2 Overall framework .11 2.1 Overall framework . 11 2.2 OGRE Introduction . 11 Chapter 3 Terrain design .13 3.1 Terrain design outlined .13 3.2 Terrain basic method.13 3.2.1 terrain.cf
16、g .13 3.2.2 HeightMap .14 3.2.3 PNG.15 Chapter 4 Water Design .16 4.1 Design of water .16 4.2 Water designed to achieve four methods .16 4.2.1 Based on wave analysis .16 4.2.2 Based on the physical model.16 4.2.3 Based on the particle system .17 4.2.4 Based on the handling of light and shade .17 4.3
17、 Cellular Automata .18 4.4 The Basic Principles of the wave .18 4.5 The algorithm Based on the wave.19 厦门大学国家示范性软件学院 2003 级 张宇 8 4.5.1 Small amplitude wave theory algorithm .19 4.5.2 Linear Algorithm.22 Chapter 5 System Integration .24 5.1 Terrain and water Integration.24 5.2 Add 3D environment.24 C
18、hapter 6 Concluding remarks .26 Acknowledgement .27 References .28 Supplement .30 Linear Algorithm basic codes: .30 厦门大学国家示范性软件学院 2003 级 张宇 9 第一章 三维场景设计 开发 概况 1.1 开发概况 三维场景广泛应用在虚拟现实、 GIS 系统、模拟战场、数 字化城市、游戏娱乐等领域。传统的色调单一,光阴效果极差的固化的三维场景已经不能满足人们的视觉效果需求。随着硬件的飞速提升,特别的 GPU 处理能力的提高和管道渲染可编程的出现,实时渲染的三维效果越来越逼真。
19、 早期的水体模拟 , 主要采用基于参数建模的方法 。 如基于统计的 FFT 经验模型,首次由 Mastin 提出,利用海洋统计和经验模型 1,采用大量正弦曲线的叠加来模拟海面,通过快速傅立叶变换( FFT)合成一个类似于真实海浪谱分布的高度场 .2001 年 siggraph, tessendorf 详细地介绍了基于 FFT 的海浪模拟 方法,其基本思想是生成一个具有与海面同样频谱的高度场,来很好地模拟波幅较小的海平面 。 以上方法由于在合成的过程中采用规则的矩形粗网格来绘制,略微降低了最终水面的渲染质量和真实感,而且实时技术的实现还只限于 CPU 的执行。 或者使用基于物理模型方法 2,使用
20、 N-S 方程,但是该方法求解方法复杂且同样只限于 CPU 求解,影响渲染速度。 本课题基于 GPU渲染技术开发一个实时三维场景,模拟多种自然场景中的动态的特效,包括各种动态云生成、真实水面效果,高动态光( HDR)渲染等。 对于水体 ,由波形函数构造参数曲面来模拟水面高度场 ,同时创建动态的平铺凹凸曲面来得到水面细节 ,并且实时模拟水面的阴影 ,以及反射和折射等物理现象 ,获得动态可由参数调整的优秀水面效果。整个系统充分利用 GPU并行加速计算,经时间证明,将非常适合于各种三维场景中的模拟和渲染。 1.2 技术可行性 系统基本框架用 OGRE( Object-Oriented Graphic
21、s Rendering Engine)搭建, OGRE 是一个由 C+编写设计的扩展性很强的开源图像引擎。 OGRE 除了可调用所有 Direct3D 和 OpenGL 的接口外,还可方便扩展使用其他类库的接口。 使用 D3D 作为图形渲染 API,通过 shader(着色器)编程,在 GPU 层实现厦门大学国家示范性软件学院 2003 级 张宇 10 各种特效渲染。应用 OGRE 中 .material 脚本实现 shader。 1.3 运行平台 硬件平台:内存 512M 以上,显卡支持 ShaderModel 2.0 以上 。 软件平台: Windows XP、 NT。 1.4 开发环境
22、Visual Studio 2005sp1。 主要应用类库: DirectX SDK Dec2006, OGRE 1.4.0。 1.5 开发前景 三维场景设计的应用范围相当广泛,前景广阔。 在现在的游戏市场中,游戏玩家的要 求日益提高,更倾向于在模拟的游戏中获得逼真的现实效果,逼真的三维场景能提高玩家在游戏中的沉浸感和真实感觉,能够在游戏中得到身临其境的冒险体验。能够吸引更多的玩家进入,取得更为广阔的市场。 在模拟战场中,逼真的三维场景设计能够使战士们在模拟的环境中取得接近现实的战术战略的练习模拟 3。最大的优势就是只需要很低的成本,以及近零的危险性,获得全方面的训练。这在军事训练上是很大的一个突破。 在 GIS系统(地理信息系统)中 2,由于 GIS已有 30多年的历史,已经深入到诸多与国计民生密切相关的领域,并在其中发挥着越 来越大的作用。而随着计算机技术以及计算机图形学的研究和发展, GIS的可视化已成为当前 GIS的一个研究热点。 GIS系统中的三维模型不仅仅可以可视化而且可以进行交互的操作,这样的模型能提供一个动态的环境,用以在相应氛围的空间中逼真的显示、管理和创建复杂物体,并为进一步空间分析和决策服务。为建筑业已经地理勘测等多行业提供便利。 本文主要对 基于 GPU编程的 三维场景中的水体和地形 更加 快速 优秀的 效果实现进行介绍。