摘 要:本文基于笔者对LOD实景模型的研究,以LOD地形数据的调度为研究对象,论文首先诠释了基于四叉树的LOD地形模型的概念,进而探讨了地形数据组织与LOD预处理,在此基础上,详细探讨了LOD地形数据的调度,相信对从事相关工作的同行能有所裨益。
关键词:《中国组织工程研究》,LOD,地形模型,数据调度
地形的可视化是3维地理信息系统中的一个重要研究问题,近年来,图形硬件技术飞速发展,基本能够满足小范围场景实时交互绘制的需求,但仍然无法满足大规模3维场景的应用需要。从目前的研究情况看,主要从两个环节寻求改进:一是从外存储器到内存阶段,通过数据的有效组织、内外存之间的合理调度缩短读取数据的时间;二是在内存中绘制阶段,采用多分辨率模型等技术缩短绘制时间。大规模的3维场景涉及到大量的空间数据,不可能一次性调入内存,只能根据场景绘制的需要在内、外存之间动态调度。这种动态调度的思想是很容易理解的,但实现起来又有很多问题需要研究,特别是为了实现场景绘制的实时交互,需要设计合理高效的数据组织结构,并对数据调度过程进行控制和优化。这些数据如何存储,采用怎样的数据结构进行组织,对于系统最终描述场景的真实感和动态效果有着重要的影响,这也正是本文要研究的内容。
1 基于四叉树的 LOD地形模型
1.1 数据模型
从3维场景可视化角度而言,目前在地形的数字表达上普遍采用 DEM方法。DEM常用的数据结构有:规则网格(Grid)、不规则三角网(TIN)以及两者的混合结构。其中,规则网格数据结构由于其顶点呈规则分布,只需要记录数据的基本信息和每个格网点的高程值,结构简单、操作方便、便于简化,非常适合于大规模地形数据的组织和管理。
在地形场景绘制时,为了提高显示速度,目前使用比较广泛的是利用细节层次(LOD)技术生成同一地区的多分辨率模型,根据视点的变化,在满足显示精度要求的前提下,选择不同分辨率的模型,达到“距离越近看得越清,距离越远越模糊”的效果。金字塔就是一种多分辨率层次模型,它可以直接提供不同分辨率的地形数据而无需实时重采样。
1.2 地形数据的四叉树表示
本文中,多分辨率模型采用基于四叉树的数据结构构建。首先,四叉树结构与地理坐标有天然的统一;其次,四叉树与纹理镶嵌技术可以很好地集成在一起。但采用四叉树结构带来两个问题:一是用四叉树划分的地形节点数必须是2n(如无特殊说明,在本文中,每个数据块为一个节点);二是不同层数据块之间交界处会出现地形表面的不连续。第一个问题可以通过重采样增加或减少地形格网来避免;第二个问题可以使用限制四叉树的方法或改变高分辨率模型顶点高程值的方式加以解决。采用四叉树细节层次模型时,先对地形数据做不同精度的等间距格网采样,采样结果构成四叉树的一层节点,树中每个节点对应地形的一块区域,对于树中任意相邻的层,位于上一层的节点采样精度是下一层的一半,任意一个非叶子节点都有4个子节点,而且子节点的采样区域恰好将父节点四等分。利用这一特性,我们可以通过选择位于不同层的节点来实现对特定区域不同分辨率的表示。
2 地形数据组织与 LOD预处理
采用金字塔模型需要对空间数据进行预处理,即对数据进行分层分块。其基本思想是:首先将整个场景按照四叉树结构进行细节分层,每个LOD层又分为多个格网数为2n的正方形块,然后对每一个数据块按照四叉树结构进行组织。地形数据组织与处理包括三部分:DEM数据文件合并、DEM数据重采样与分层、DEM 数据分块。纹理数据的处理方法与地形数据类似,本文不详加讨论。
2.1 数据文件合并
地形数据的来源和获取途径有多种,通常我们得到的大规模的DEM并非只是一个文件,而是一个由多个彼此之间相交或相接的DEM文件构成的集合,数据文件可能多达几百乃至上千个。如果不事先对数据文件进行合并,在后续的分级处理中,就要对每一个文件分别进行处理,要将原始的多个DEM文件处理成为具有不同细节层次、不同覆盖范围的多级DEM,其工作量之大可想而知。因此,需要将各个分散的DEM数据文件进行合并,考虑机器的处理能力,当数据量非常大时,可以分为几个部分进行处理。
2.2 地形数据重采样与分层
构建地形数据金字塔模型各层数据时,是从底层即最高分辨率数据开始的,然后依次确定上一层数据的分辨率。从上到下,分辨率呈倍数递增关系,下一层网格分辨率是上一层的2倍,这样可以很方便地使用四叉树索引技术进行快速定位。由于比例尺和分辨率不是一一对应关系,DEM金字塔模型的各层数据可以通过其对应的比例尺数据内插处理得到。
2.3 地形数据分块
数据分块就是把 DEM数据分层后的各级LOD数据按照分块要求重新进行块的划分。由于采用Grid数据结构,DEM数据分块比较容易实现。分块时必须综合考虑空间数据量、应用要求和应用平台的软硬件条件等,分块过大,可能超出机器的处理能力;分块过小,造成文件的个数太多,绘制时要频繁地打开和关闭文件,不利于数据的管理和调度,所以选择适当的分块大小就要取一个折中的解决方案。另外,采用四叉树划分时,DEM块行与列的网格数需限制为2n×2n(n为不小于2的整数),本文选择地形块纵横向格网数为16。在DEM分为小块的同时进行文件合并,合并到一定大小时应建立一个新的文件,文件命名要能反映出数据所在层数和与其他文件数据的相对位置。
3 LOD 地形数据的调度
在大规模3维场景中空间数据的组织阶段,我们已为数据的实时调度做好了准备,但这时仍要考虑几个问题:一是如何利用四叉树技术实现地形块的快速索引;二是如何消除不同分辨率地形节点拼接处的裂缝问题。 3.1 地形数据块的快速索引
调度程序首先必须获得视景体投影的空间坐标,然后判断视景体投影与哪些层的哪些数据块覆盖范围发生交叠。如果可见区域在地形数据所表示的范围内,测试与可见区域交叠的顶层数据是否满足分辨率要求,如果不满足,由2倍率关系,根据顶层数据分辨率可迅速判断出哪一层数据符合要求。由于数据分块是规则的,因此并不需要对所有数据块进行比较,只需要求出视景体梯形投影四个端点相对于全局场景起始点在X和Y方向上的坐标增量,再除以单块的尺寸,便可以确定有哪些数据块与可视区域发生交叠。当视点在场景中的位置或观察方向发生变化时,视景体投影与数据块的相交关系相应发生变化,因此调度程序需要不断地在内、外存储器之间执行数据调度。因为地形数据已经分块,只需将视点附近区域的数据块常驻内存,将进入到可视范围的新的数据块调入,同时释放那些“不可见数据块”所占用的内存空间。这样就维持了内存中数据载入和删除的动态平衡,极大减少了内存的负担,使大规模3维地形实时漫游变得可行。
3.2 裂缝消除的方法
进行地形LOD模型绘制时,如果相邻块的分辨率不一样,就会产生裂缝。目前,常用的消除裂缝的方法有两种:一是强制相邻网格进行分裂,如图1(a)所示,在接边处将低分辨率模型作适当分裂,使相邻节点具有相同的边界。这种方法在每一节点处都可能造成大量的分裂操作,产生大量不必要的三角形。第二种方法是将高分辨率模型顶点移动到相邻低分辨率模型的边界点上,如图1(b)所示,这种方法计算简单,但需要进行插值产生新的数据点来弥合裂缝,并且会产生T型连接,T型连接可能导致一些空洞小点,但一般情况下的绘制结果是可以接受的。本文采用第二种方法,在绘制时使用低分辨率模型一侧边上点的内插高程来代替高分辨率模型产生裂缝的实际地面点高程。
4 结论
本文针对大规模地形可视化中地形数据组织方法进行了研究,采用本文所述方法,对某地区地形数据进行了组织和处理,实验结果证明,可以满足地形实时渲染的要求,消除了裂缝现象。但各层次细节的数据需要提前生成,预处理过程比较费时,而且静态LOD文件中冗余存储了各层次细节的地形数据,数据量比较大,要求硬盘有足够的存储空间。但考虑到预处理过程是一次性的,处理后的多层次细节数据一般不作改动,而且目前的硬盘容量都比较大,可以满足地形和纹理数据的存储需求,与对显示速度的要求相比,这些问题还是可以接受的。至于LOD分层的问题,大多文献依应用需求和机器配置自己确定,到底什么情况下分多少层合适,目前还没有公认的标准。另外,由于原始地形数据不一定满足要求,可能需要重采样,而且LOD分层时也需重采样,重采样引起的误差对地形精度和显示效果有多大影响,这都是目前正在研究和急需解决的问题。
参考文献
[1] 刘少华,吴东胜,罗小龙,等.三维GIS数据模型在地层建模中的应用研究及可视化[J].测绘信息与工程,2007(2).
[2] 胡圣武,李鲲鹏.三维GIS关键技术的研究[J].地理空间信息,2008(3).
[3] 魏波,汤军.基于GIS的油田数字化管道的实现[J].测绘与空间地理信息,2008(4).
[4] 谢荣安.GIS数据模型设计中的问题探讨[J].地矿测绘,2004(4).