第1章研究背景及意义
地形分形技术是绘制大规模地形的算法核心。地形分形的原理是利用地形的自相似性,局部采用经过简化的网格模型替代原有模型表示,以达到快速的真实感绘制的目的。但是视频游戏的应用中,除了需要绘制高仿真度的地形,还对人机交互性能、环境活跃程度有很高的要求。因此特别需要一个视觉效果良好,系统资源要求小的地形分形算法。
本文的研究围绕某个大型3D网络游戏项目中地形绘制部分展开。项目中使用的地形数据集合,是模拟真实世界8192 X 8192米的范围,可以算得上是一个大规模地形。初期为了缩短开发周期,选择了一些现有的成熟技术作为地形绘制的核心算法。实际应用的效果来看,脱离游戏项目其它元素独立绘制地形,效果还算可以。但是加载其它元素(如活动水体,天气控制机和特效)之后,整体表现无法令人满意。经过性能分析,地形绘制部分耗时占用总场景更新时间比例较大,关键的问题还在提高地形算法过程效率。但是几经替换和优化的结果都没有实质性的突破。
初期使用的分形算法,大都采用运行期动态分割并重构地形网格的做法,对CPU的依赖很高。所以虽然对算法过程的一些细节部分进行了优化,对整体效率的影响非常有限。为此,本文研究并提出了一种非主流的算法过程。将动态地形分形算法中最耗时的一些部分迁移到静态预处理阶段,动态算法部分只保留必要的轻量级程序。这种方法应用到游戏项目中收到了比较满意的效果。
本文提出的算法过程在预处理阶段通过专用工具生成无缝联接的地形网格的静态模型,在动态处理过程中采用快速算法映射静态模型并绘制,实现了地形分形深度与绘制速度的分离。如果加以改进,还能进一步实现地形复杂度与绘制速度分离,从而实现地形的真实感实时绘制。
第2章地形分形算法的研究
现实世界的地形是非线性和非规则的,地形分形的构想是利用地形的分维自相似性质对地形进行逼真模拟,以达到真实感的绘制。地形的三维真实感绘制追求的两个目标是绘制的实时性和绘制的逼真度。在视频游戏的应用中这两个要求更为强烈。
2. 1现有的3D地形分形技术
早期的地形绘制系统,由于受硬件约束,不得不采用小场景切换的方法降低开销。随着PC硬件的升级换代,可以绘制的地形数据集合越来越大,可以驻留内存的地形数据越来越大,面积甚至超出了虚拟视野。90年代GPU (GraphicProcessing Unit,图形处理单元)的出现,更是令3D场景绘制的速度和质量得到质的飞跃。但是无论有再强劲的硬件支持,理论上也不能一次全部绘制几乎无限的地形数据集合。为了能够解决大规模地形的绘制仿真度和绘制效率的问题,许多学者致力于地形网格简化的研究。
Clark于1976年提出了LOD (Levels of Detail,细节层次)的概念,以占用屏幕区域大小判定模型几何层次,加速绘制。虽然不是专门针对地形的理论,但被广泛的应用到地形分形中。
第3章 分块静态LOD过程的......... 13-33
3.1 地形数据分块及组织......... 14-25
3.1.1 地形分块......... 14-15
3.1.2 静态数据分布......... 15-18
3.1.3 静态LOD网格......... 18-20
3.1.4 外部T形裂隙......... 20-22
3.1.5 地表地貌特征......... 22-23
3.1.6 内部T形裂隙......... 23-25
3.2 动态更新过程......... 25-33
3.2.1 层次判定阶段......... 25-27
3.2.2 绘制阶段......... 27-33
第4章 性能对比及分析......... 33-37
4.1 算法对比试验......... 33-35
4.1.1 平缓地貌试验......... 33-34
4.1.2 突兀地貌试验......... 34-35
4.2 试验结论......... 35-37
第5章 工作总结......... 37-41
5.1 总结......... 37-38
5.2 优化构想......... 38-41
总结
本文针对如何快速绘制大规模地形问题,从静态过程和动态过程两个方面着手,研究并实现了一种视距相关的静态LOD算法过程。先是提出了具体的地形分块规划并建立地形网格细节层次模型,在建模的同时规避了T形裂隙并保持一部分地貌特征。随后基于Direct3D的顶点索引缓冲,提出了直接映射静态模型的快速编码算法。和已有的典型算法及典型算法的改进方法相比,本文的算法同样能实现对地形网格的简化,为硬件转换和光照处理提供优化条件,而且由于在动态绘制时计算规模及其微小,GPU利用率较高,实现了快速的实时绘制。
本文的研究是围绕某大型网络游戏项目展开的,提出的解决方案就是游戏中地形绘制的核心算法。网络游戏是一种对人机交互有很高要求的虚拟现实应用,本文提出的算法的目的就是要节省更多的CPU资源供人机交使用,给玩家提供一个流畅的游戏环境。