地形场景三维可视化技术是构建三维GIS的核心技术之一,它利用大量三角形面片描述地表几何形状,并通过地表影像数据进行纹理映射,以提升场景可视化的逼真度。目前在对大范围、高数据精度的地形场景进行可视化表达时,遇到了计算机图形绘制能力无法满足海量数据绘制要求的问题,这给地形场景三维可视化技术提出了严峻的挑战。本课题从软件算法的角度出发,研究了快速实现海量地形数据横向分块、纵向分级的预处理方法;从更好发挥图形硬件特性的角度出发,将适于GPU实现的软件算法从CPU端移植到GPU端,通过GPU的可编程性实现对地形数据的调度、对地形突跳感的消除,从而降低CPU的资源消耗;同时通过对数据传输效率的研究,确定单次从内存传递到显存的三角形数量的最佳取值范围,使GPU始终处于图形绘制状态提高对GPU的利用率;课题还对影响可视化表达效果且难于处理的地形裂缝问题进行了研究,并通过巧妙的地形分级操作进行自动快速消除。
terrain rendering;LOD;GPU;terrain simplification;virtual texture
地形场景的实时渲染一直是计算机图形学的热点研究方向之一,它在虚拟现实、飞行模拟、交互式3D 游戏以及地理信息系统等多个领域有着广泛的应用。然而,随着地形场景规模的不断增大、分辨率不断提高,用于表达真实感地形场景的三角形面片数量呈几何级数增长,渲染效率不断降低,这使得地形渲染技术面临严峻的挑战。为了解决该问题,不得不在渲染效率与渲染质量之间进行取舍,通过对复杂地形进行必要的简化来提高渲染帧率。然而随着图形处理器( Graphic Processing Unit, GPU)性能的不断提升,现代地形渲染算法不再只专注于地形简化,如何充分发挥GPU 的特性成为关键。 针对传统算法存在的诸多问题,本课题以规则地形格网数据为对象,设计了一种基于GPU的无缝地形渲染方法。该方法基于二叉树构建多层次地形网格模板,各级地形网格模板中的三角形数量均为2m-1×2m-1 (m为LOD等级),网格模板的顶点坐标用行列号表示。在设计过程中,将传统的DEM 数据转换为高程纹理图,将高程纹理和DOM数据以瓦片金字塔的形式存储于硬盘。利用GPU实时计算地形网格点的地理坐标并传回CPU分析可见范围,然后采取瓦片剖分、规则化处理和瓦片合并等一系列操作在所有LOD层中拣选最优瓦片集合并调入内存,在内存中利用一块固定大小的缓存进行管理与更新,并最终以单张纹理的形式传入显存,采用Vertex Texture Fetch(VTF)技术采样出真实高程值用于渲染。同时,采用实时优化自适应网格( ROAM) 算法的强制拆分法,通过控制相邻地形块的等级来消除裂缝。课题通过四川省北川地区、Hawaii地区以及加拿大某地区的地形数据,对算法渲染效率进行了检验,并将算法与Clipmap 算法进行了帧率对比。结果表明,该算法充分发挥了GPU的超强渲染效率,节约了大量的显存带宽,有效提升了系统在数据传输方面的执行效率,同时解决了分块数据的裂缝问题,具有较高的渲染速度,达到了交互式地形渲染的要求。 最后,本课题为了开拓了地形渲染算法的应用范围,依托研制的新算法研发了基于三维GIS的地震灾后救援系统,用于快速构建灾区的三维地形场景,为救援人员及时掌握灾区地理环境,设计搜救方案提供技术保障。