逼真三维地形几何模型的实时绘制方法

文档序号:6631730阅读:202来源:国知局
专利名称:逼真三维地形几何模型的实时绘制方法
技术领域
本发明涉及一种三维地形几何模型的实时绘制方法。
背景技术
地形绘制技术主要包括地形资源数据组织、绘制数据组织以及绘制过程中具体采用的绘制方法,地形资源数据组织是指对获取的地形数据的存储方式。根据地形数据获取手段不同,典型的地形数据以等距的地表高程网格DEM采样,如图1a所示,这部分数据未经面向绘制的优化处理,数据量大,冗余,但数据精度好,经常应用在科学计算或军事方针中。绘制数据组织将得到的弟子那个资源数据面向绘制的进行重新组织,这样做的目的是在不影响显示效果和逼真性的基础上尽量减少绘制定点数量和提高绘制效率。该阶段的数据组织一般根据生成几何面片的特点分为规则网格和不规则网格,一是基于四叉树结构的简化算法,重构后的数据格式成四边形或规则三角形的阵列分布,如图1b所示;二是基于三角网的简化算法,重构后的数据格式成不规则三角形的阵列分布,如图1c所示。前者速度快,但是简化效果不如后者,后者的效果应该可以达到最优,但速度却要比前者慢一个甚至几个数量级。绘制方法是指将经过优化后的地形数据通过OpenGL或DirectX等绘制平台经过显卡绘制到显示屏上。
目前国外公开的文献中,Lindstrom P,Koller D,Ribarsky Wetal.“Real-Time continuous level of detail render of height fields”InSIGGRAPH,96Proc,New Orleans,Louisiana USA,1996.较早给出了四叉树结构的实时地形简化算法。国内王宏武,“一个与视点相关的动态多分辨率地形模型”,计算机辅助设计与图形学报,2000,12(8)提出了基于多分辨率地形模型的视点相关模型;潘李亮,“基于LOD的大规模真实感室外场景实时渲染技术的初步研究”中国游戏开发网2003.4提出了使用了视点相关以及和地形本身起伏程度相关的技术来决定地形应有的细节程度的LOD算法。
但上述文献的解决思路有三个缺陷第一,没有考虑到大规模地形的优化问题,大规模地形仿真是仿真应用中常见的需求,但是对大规模地形装载一般都采用一次装载所有地形,或简单采用LRU(最近最少使用次数)算法进行描述,从根本上没有考虑到使用者对于地形漫游时的运行特点;第二,没有考虑到地形的逼真渲染,地形的逼真渲染是现实的逼真性和数据复杂度矛盾中和的结果,即如何用尽量少的数据描述逼真的地形效果。比较经典的问题包括,三角网格的简化、T型裂缝的消除、逼真纹理的加载等。在面向现实设备的编程中,三角形的生成一般采用三角形列表或三角形条带生成算法(Deering Michael,“Geometry Compression”Computer Graphics,pp.13-20,August 1995)。其中随着图形显示设备功能的日益强大,采用GPU(Graphic Processing Unit,图形设备中的一种硬件结构)进行快速的顶点计算和纹理加载成为渲染的重要工具,将其应用到地形的绘制中近年来还比较少;第三,没有考虑到地形数据动态更新,地形在显示过程中并非一成不变,一般会由于如爆炸等特殊原因产生地形顶点位置的变化,如何将这些变化在通用的图形系统上得以实现,上述的文献均没有予以考虑。因此,造成目前三维地形几何模型时,绘制速度缓慢、绘制效率低,实时逼真绘制效果差的缺陷。

发明内容
本发明的技术解决问题克服现有技术的不足,提供一种逼真三维地形几何模型的实时绘制方法,该方法解决了地形模型绘制速度慢的问题,提高了绘制效率,达到了动态地形的实时逼真绘制目的。
本发明的技术解决方案逼真三维地形几何模型的实时绘制方法,其特点在于包括下列步骤
(1)地形数据预处理,简化地形数据结构;(2)采用基于传统LRU算法与基于视点兴趣相结合的方法进行文件间的实时切换的地形调度算法,完成对地形文件的实时调度;(3)基于几何的Mip Map地形网格实施生成算法,简化地形模型;(4)基于多纹理的GPU地形Bump Map渲染算法,显示地形特征;(5)基于四叉树的遍历的地形局部替换算法,实现地形数据变换。所述的地形数据预处理的步骤如下(1)对原始文件数据文件分割;(2)将分割后的文件重排,即将分割后的文件组按照地理信息重新命名,并保存在文件系统中。
本发明使用的地形数据源于GTOPO30地形数据(具体信息、格式、使用权限参见USGS的操作手册网站http//edcdaac.usgs.gov/gtopo30/README.asp),该地形包含全球1000米精度的地形高度数据,16位采样精度,将全球分为若干个区块,每区块大小6000*4800个采样点。将这样的一块原始数据调入内存后数据量巨大难以实现实时操作,同时6000公里的范围远远超出人的视域范围。因此,必须对这些原始文件进行分割重排。文件分割是将文件大小由6000*4800降为512*512或更小256*256,这里取2的幂次大小是为了加快系统的处理速度(由于计算机采用2进制计算),而幂值的大小一般根据应用需求和机器性能决定。重排是将分割后的文件组按照地理信息重新命名,并保存在文件系统中。由于GTOP030的原始文件包含具体的经纬度信息,重排的过程就可以借助这些信息获得分割后的文件的起始经纬度。根据这些信息可以命名文件,形如gtop030_E120_N40.dem表示东经120度,北纬40度为起点的地形数据。
所述的地形调度算法步骤如下(1)取当前的视点位置及朝向,分析可视数据地形块;
(2)根据当前地形缓存数据和可视地形块数据更新地形缓存列表,生成下一帧数据;(3)缓存的更新。
地形经过预处理后虽然变成较小的文件组,但同时将这些文件调入内存仍还不切实际,还需要进行动态调度。由于人的试点的移动是有规律的,以及可视范围的限制,由于传统的LRU没有考虑试点漫游过程中的反复特点,本发明在LRU的基础上对算法进行了改进,采用基于传统LRU算法与基于视点兴趣相结合的方法进行文件间的实时切换的地形调度算法。
上述缓存的更新步骤如下a.缓存中每一块数据都有一个使用次数的统计,若下一帧需要的地形快存在于缓存中,则该统计项自动加一;b.根据当前视点和朝向和上一帧的试点和朝向进行比较,得出下一帧指向的数据,若该数据存在于缓存中,则统计项自动加一;c.在此基础上,将需要但不存在的数据添加到缓存中,并将同样数量的数据从当前缓存中剔出,原则是选择当前缓存中统计项最小的数据,但不能使本次命中的;d.若剔出的数据少于增加的数据,即缓存太小,则增加缓存数量;e.若没有要剔出的数据,则每一帧自动将当前缓存中的统计项最小的数据块剔出,并将当前缓存大小减一,一次保持缓存不会无限制增加;f.若系统继续工作,则返回重复c,否则终止。
所述的基于几何的Mip Map地形网格实施生成算法步骤如下(1)对于新加入的地形块,将数据组成四叉树结构,统计每一地形片顶点中的最大,最小,误差等参数;(2)根据当前视点和地形块包围球中心的距离,判断采用哪一精度级别的四叉树数据;(3)根据相邻的地形片数据精度级,生成地形三角形条带,消除T型突起;(4)将三角形条带输入到GPU,进行平滑处理。
地形文件包含地形采样点的几何信息,这些信息将地形描述为一个大的网格。在实施绘制过程中,网格被三角化为Triangle List或Triangle Strips送入渲染管道以优化渲染速度。即便如此,显示速度特别是在多个地形文件显示的情况下仍不能满足需求,因此就需要进一步优化。本发明采用的方法是基于几何的MipMap网格生成算法,将每一个地形文件在内存中形成四叉树的组织结构,底层为17*17个顶点组成的Data Patch,上一层包含4个下层子树,递归生成直至包含文件全部顶点。对于256*256的地形文件,这样的一颗树包含的子树层数为5层,每一层代表该Data Patch的一种精度。在生成四叉树的过程中需要计算每一层地形数据的方差,平均高度等信息,这些信息在实时显示过程中根据视点到地形中心的距离选择某一粗糙度级别的数据。当从一个粗糙级别调到另一个粗糙级别时,屏幕上会产生跳变;而当相邻的地形粗糙程度不同时会在交界处产生所谓的裂缝问题,解决这个问题需要用到GPU的Shader代码。
所述的基于多纹理的GPU地形Bump Map渲染算法步骤如下(1)据地形块数据生成凹凸贴图的向量图和地表地貌图,该算法是在运行前预处理阶段完成的;(2)计算地表平面法向量;(3)根据顶点数据所在平面法向量计算顶点的法向量;(4)将法向量存储在文件中作为本算法的凹凸贴图法向纹理输入;(5)根据地形顶点的高度,计算该定点使用地表纹理的权值;(6)利用GPU的像素处理单元(Pixel Shader)合成纹理并计算光照;(7)进行bump贴图算法。
所述的基于四叉树的遍历的地形局部替换算法步骤如下(1)获取待替换地形地理位置;
(2)根据上述的地形位置索引四叉树;(3)更新局部地形数据;(4)重新计算法向量信息。
本发明与现有技术相比的优点在于(1)针对高精度地形高程数据规模大,不能一次性调入内存的问题,按照区域将地形数据分割为多个文件,保存在文件系统中或数据库系统中,采用基于传统LRU算法与基于视点兴趣相结合的方法进行文件间的实时切换、调度,达到了灵活有效管理大规模地形数据的效果;(2)针对三维地形几何模型顶点数据量大,绘制速度慢的问题,在建立树状数据结构的基础上,使用基于几何的mipmap方法,根据视点和局部地形特点实时形成最少数量的顶点,并借助基于硬件的顶点切换算法对因视点改变引起的地形跳变进行平滑处理,达到了地形模型绘制效果和绘制速度的良好平衡;(3)针对现有地形地貌特征复杂,完全使用几何面片描述,难以保证其逼真性和绘制的实时性的问题,采用了基于多纹理的GPU地形渲染方法,并通过凹凸贴图算法和纹理混合,将基本地貌纹理和文化特征纹理进行实时融合,既达到逼真显示的效果,也提高了绘制效率;(4)针对地形绘制中需要动态改变局部顶点坐标的应用需求,采用基于四叉树的遍历,定位局部顶点数据,借助基于图形硬件的插值算法实现更新后的数据与周围环境数据的融合,以达到动态地形的实时绘制目的。


图1为现有地形数据基本组织结构图,其中图1a为典型的地形数据以等距的地表高程网格DEM采样图,图1b为基于规则三角形化阵列分布图,如图1b所示,图1c为不规则三角形的阵列分布图;图2为本发明的大规模地形调度算法模块结构图;图3为本发明的基于几何的Mip Map地形网格简化示意图;
图4为本发明的消除T型突起示意图;图5为本发明的基于多纹理的GPU地形Bump Map渲染算法示意图;图6为本发明的基于四叉树的遍历的地形局部替换算法示意图。
具体实施例方式
下面结合实施例对本发明进一步详细说明。
以当前反映中国地形的原始DEM数据文件,横纵为1024*1024个顶点为例。
1.首先进行预处理,对数据文件进行分割,该文件被分割为256*256大小的文件序列组,再将分割后的文件组按照地理信息重新命名,并保存4个地形文件中,假设文件a,b,c,d。
2.然后采用基于传统LRU算法与基于视点兴趣相结合的方法进行文件间的实时切换的地形调度算法,完成对地形文件的实时调度。传统的LRU算法考虑最近最少使用的地形信息,当缓冲中没有空间时,将最近最少使用的地形块剔出内存。这种方法广泛使用在内存调度程序中,但没有考虑到地形浏览过程中的特点。当人们位于某一视点,并且按某一路线进行运动时,总可以根据运动的方向预测下一帧视点的位置,根据兴趣,视点可以转动,这就增加了预测的复杂性。本发明结合视点运动兴趣的LRU算法,可以将这种预测融入算法中。如图2所示,地形调度算法如下(1)绘制程序启动,初始化地形数据缓存,预载入原点附近的地形数据;初始时,原点位于文件a所在地域,且此时视点能及的范围仅为a地域,则初始化的地形缓存中仅存储a的数据信息;(2)获取当前的视点位置及朝向,分析可视数据地形块;显示过程中,假若视点位于a,b交界处,此时可是内容包含a,b两块地形数据;(3)根据当前地形缓存数据和可视地形块数据更新地形缓存列表,由于b地形数据此时并不在缓存之中,因此算法将装载b数据到缓存中。生成下一帧数据;
(4)缓存的更新是本发明中的重点,具体步骤如下a.缓存中每一块数据都有一个使用次数的统计,若下一帧需要的地形快存在于缓存中,则该统计项自动加一;b.根据当前视点和朝向和上一帧的试点和朝向进行比较,根据趋势预测出下一帧可能的数据,若该数据存在于缓存中,则统计项自动加一;c.在上述a、b的基础上,将需要但不存在的数据添加到缓存中,并将同样数量的数据从当前缓存中剔出,原则是选择当前缓存中统计项最小的数据,但不能使本次命中的;d.若剔出的数据少于增加的数据(即缓存太小),则增加缓存数量,一般增加一倍,即当前缓存大小仅为1块地形,而由于a,b都在被显示,而缓存数量必须增加,增加策略为2倍于原始大小,若原始大小为4块地形,则增加后的地形大小为8块;e.若没有要剔出的数据,则每一帧自动将当前缓存中的统计项最小的数据块剔出,并将当前缓存大小减一,一次保持缓存不会无限制增加;f.若系统继续工作,则返回重复c,否则终止。
3.基于几何的Mip Map地形网格实施生成算法,简化地形模型,如图3、图4所示,具体步骤如下(1)将地形调度算法中步骤(4)后的地形数据块形成列表并对每一块循环进行如下操作;当初次加入地形b后场景图中并没有相应的绘制对象(具体包含绘制地形、纹理的数据和状态),因此系统此时将建立相应的绘制对象将每一个地形文件在内存中形成四叉树的组织结构,底层为17*17个顶点组成的DataPatch,上一层包含4个下层子树,递归生成直至包含文件全部顶点。对于256*256的地形文件,这样的一颗树包含的子树层数为5层,每一层代表该Data Patch的一种精度。
(2)对于新加入的地形块,将数据组成四叉树结构,统计每一DataPatch顶点中的最大,最小,误差等参数;(3)根据当前视点和地形块包围球中心的距离,判断采用哪一精度级别的四叉树数据;建立绘制对象后,该地形模型即可进行正常绘制。绘制时首先需要确定采用那个精度的数据送去显示,这是十分必要的优化过程。Data Patch从最粗糙(0级)到最精细(n级),顶点数量相差2^(n-1)倍,在视点误差满足的情况下选择相对粗糙的精细级别在大规模数据的情况下可以大大减轻系统压力,从而从根本上提高绘制速度。视点误差的判断有多种,如基于投影空间、基于屏幕空间等,由于相应算法很多,具体算法不在本发明保护范围。
(4)根据相邻的地形片数据精度级,生成地形三角形条带,消除T型突起;当相邻Data Patch的精细级别不同时会由于相邻的顶点不对应而产生T型突起,该问题的解决可以通过本方法解决假设Patch1和Patch2相邻且精细级别分别为2和3。由于3级更加精细,为了保证显示质量,令Patch2与之相邻的三角形定点选择3级精度,其余不变,这样生成的三角形条带可以较好的解决T突起问题,同理,相邻地形文件间的Patch也采取此法消除T突起。
(5)将三角形条带输入到GPU,进行平滑处理。
4.如图5所示,进行基于GPU的多层纹理融合的凹凸贴图步骤如下运行前需要根据地形的顶点信息生成地形向量信息,即每个地形顶点处的法向量,还需要由美工给出地表特征数据文件。法向量求法先求出顶点所在平面的平面法向量,然后再根据平面法向量的平均求出该顶点的法向量。地表特征数据文件记录对应地表每个顶点使用原始纹理的信息。本发明支持3路并发的原始纹理,每个顶点可以任选其一,或者给出三者的各自比例的权值。
(1)根据地形块数据生成凹凸贴图的向量图和地表地貌图,这是在运行前预处理阶段完成的;(2)计算地表平面法向量;(3)根据顶点数据所在平面法向量计算顶点的法向量;(4)将法向量存储在文件中作为凹凸贴图法向纹理输入;(5)根据地形顶点的高度,计算该定点使用地表纹理的权值。可以实时输入3个地表纹理,这里的权值就是该顶点使用三个地表纹理的比重,并将权值记录在单独的文件中作为纹理参数输入;(6)利用GPU的像素处理单元(Pixel Shader)合成纹理并计算光照。纹理合成最终颜色=纹理1颜色*纹理1权值+纹理2颜色*纹理2权值+纹理3颜色*纹理3权值;(7)进行采用bump贴图算法(该算法是成熟的算法)。
5.如图6所示,基于四叉树的遍历的地形局部替换算法步骤如下(1)获取待替换地形地理位置,即获得地形起始顶点的经纬度信息,根据该信息,可以获得该地形数据在四叉树中的位置;(2)根据上述的地形位置索引四叉树;(3)更新局部地形数据,即在地形数据绘制对象对应的顶点数组进行替换;(4)重新计算法向量信息,先求出顶点所在平面的平面法向量,然后再根据平面法向量的平均求出该顶点的法向量。
权利要求
1.逼真三维地形几何模型的实时绘制方法,其特征在于包括下列步骤(1)地形数据预处理,简化地形数据结构;(2)采用基于传统LRU算法与基于视点兴趣相结合的方法进行文件间的实时切换的地形调度算法,完成对地形文件的实时调度;(3)基于几何的Mip Map地形网格实施生成算法,简化地形模型;(4)基于多纹理的GPU地形Bump Map渲染算法,显示地形特征;(5)基于四叉树的遍历的地形局部替换算法,实现地形数据变换。
2.根据权利要求1所述的逼真三维地形几何模型的实时绘制方法,其特征在于所述步骤(1)中的地形数据预处理的步骤如下(1)对原始文件数据文件分割;(2)将分割后的文件重排,将分割后的文件组按照地理信息重新命名,并保存在文件系统中。
3.根据权利要求1所述的逼真三维地形几何模型的实时绘制方法,其特征在于所述步骤(2)中的地形调度算法步骤如下(1)取当前的视点位置及朝向,得到可视地形块数据;(2)根据当前地形缓存数据和可视地形块数据更新地形缓存列表,生成下一帧数据;(3)进行缓存的更新。
4.根据权利要求3所述的逼真三维地形几何模型的实时绘制方法,其特征在于所述缓存的更新步骤如下a.缓存中每一块数据都有一个使用次数的统计,若下一帧需要的地形快存在于缓存中,则该统计项自动加一;b.根据当前视点和朝向和上一帧的试点和朝向进行比较,得出下一帧指向的数据,若该数据存在于缓存中,则统计项自动加一;c.在此基础上,将需要但不存在的数据添加到缓存中,并将同样数量的数据从当前缓存中剔出,原则是选择当前缓存中统计项最小的数据,但不能使本次命中的;d.若剔出的数据少于增加的数据,即缓存太小,则增加缓存数量;e.若没有要剔出的数据,则每一帧自动将当前缓存中的统计项最小的数据块剔出,并将当前缓存大小减一,一次保持缓存不会无限制增加;f.若系统继续工作,则返回重复c,否则终止。
5.根据权利要求1所述的逼真三维地形几何模型的实时绘制方法,其特征在于所述的步骤(3)基于几何的Mip Map地形网格实时生成算法步骤如下(1)对于新加入的地形块,将数据组成四叉树结构,统计每一地形片顶点中的参数;(2)根据当前视点和地形块包围球中心的距离,采用适合于该精度级别的四叉树数据;(3)根据相邻的地形片数据精度级,生成地形三角形条带,消除T型突起;(4)将三角形条带输入到GPU,进行平滑处理。
6.根据权利要求1所述的逼真三维地形几何模型的实时绘制方法,其特征在于所述的步骤(4)基于多纹理的GPU地形Bump Map渲染算法步骤如下(1)根据地形块数据生成凹凸贴图的向量图和地表地貌图;(2)计算地表平面法向量;(3)根据顶点数据所在平面法向量计算顶点的法向量;(4)将法向量存储在文件中作为本算法的凹凸贴图法向纹理输入;(5)根据地形顶点的高度,计算该定点使用地表纹理的权值;(6)利用G PU的像素处理单元Pixel Shader合成纹理并计算光照;(7)进行bump贴图算法。
7.根据权利要求1所述的逼真三维地形几何模型的实时绘制方法,其特征在于所述的基于四叉树的遍历的地形局部替换算法步骤如下(1)获取待替换地形地理位置;(2)根据上述的地形位置索引四叉树;(3)更新局部地形数据;(4)重新计算法向量信息。
全文摘要
逼真三维地形几何模型的实时绘制方法,其特征在于包括下列步骤(1)地形数据预处理,使地形数据结构符合本方法后续部分的操作;(2)采用基于传统LRU算法与基于视点兴趣相结合的方法进行文件间的实时切换的地形调度算法,完成对大规模地形文件的实时调度;(3)基于几何的Mip Map地形网格实施生成算法,简化地形模型;(4)基于多纹理的GPU地形Bump Map渲染算法,显示地形特征;(5)基于四叉树的遍历的地形局部替换算法,实现地形数据变换。本发明解决了地形模型绘制速度慢的问题,提高了绘制效率,达到了动态地形的实时绘制目的。
文档编号G06T1/60GK1753033SQ20051008683
公开日2006年3月29日 申请日期2005年11月10日 优先权日2005年11月10日
发明者王莉莉, 史逊, 刘贤梅 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1