首页 / 专利库 / 编辑中 / 时间线 / 一种基于GPU的大规模地形实时绘制方法

一种基于GPU的大规模地形实时绘制方法

阅读:957发布:2024-02-25

专利汇可以提供一种基于GPU的大规模地形实时绘制方法专利检索,专利查询,专利分析的服务。并且本 发明 属于 计算机图形学 技术领域,公开了一种基于GPU的大规模地形实时绘制方法, 选定 LOD技术中的Geometry Clipmap 算法 作为地形绘制的 基础 ,并需要对地球影像纹理进行处理:获取到地球区域上的不同 分辨率 的纹理图像;将纹理图像按小 块 区域一块块地的纹理信息截图保留;将小块区域的纹理信息拼接成一张纹理图;将纹理图分成大小一致的不同等级的小图像,包括高 精度 图像和与高精度图像对应的低精度图像;重新设定精度来获取低精度图像,将高精度图像和低精度图像进行对应处理,得到所有需要的地形纹理数据;将所述地形纹理数据加载到GPU。本方案提出了一整套地形纹理获取、处理流程,最终生成的纹理图像大小格式统一,方便程序的管理、加载和使用。,下面是一种基于GPU的大规模地形实时绘制方法专利的具体信息内容。

1.一种基于GPU的大规模地形实时绘制方法,生成地形模型顶点,通过底层的接口语言将顶点从CPU端送到带有着色器的图形专用处理器GPU的处理管线中;采用地形多细节层次LOD技术绘制地形网格,其中选定所述LOD技术中的地形绘制Geometry Clipmap算法作为地形绘制的基础,并需要对地球影像纹理进行处理,其特征在于:
S1:获取地球区域上的不同分辨率的纹理图像;
S2:将所述纹理图像按小区域一块块地将所需的纹理信息截图保留;
S3:将所述小块区域的纹理信息拼接成一张纹理图;
S4:将所述纹理图分成大小一致的不同等级的小图像,包括高精度图像和与所述高精度图像对应的低精度图像;
S5:重新设定精度来获取低精度图像,将高精度图像和低精度图像进行对应处理,得到所有需要的地形纹理数据;
S6:将所述地形纹理数据加载到GPU。
2.根据权利要求1所述的基于GPU的大规模地形实时绘制方法,其特征在于,在步骤S5中,高精度图像和低精度图像进行对应处理流程如下:
(1)对高精度图像进行剪裁,使得长宽分辨率均相等,且均为2的幂次;
(2)将剪裁好的图像切分为小图片并将其保存;
(3)切分完成之后,再对剪裁好的图像进行降分辨率处理,以形成下一步处理的目标图;
(4)所述目标图再进行第(2)(3)步操作,使得所述目标图分辨率达到要求的准,且保留最后一次降分辨率后未切分的图像;
(5)统一高精度图像与低精度图像的纹理分辨率;
(6)对低精度图像进行剪裁,使其长宽相等,且均为2的幂次;
(7)对高精度图像和低精度图像进行羽化融合;
(8)将羽化融合后的图像进行操作第(2)(3)(4)步骤,便可以处理出所有需要的地形纹理数据。
3.根据权利要求1或2所述的基于GPU的大规模地形实时绘制方法,其特征在于,在地球影像纹理处理完成之后,建立一个物理地球模型来确保纹理能够正确地贴到对应的位置上去,借助地心坐标系WGS84与所述Geometry Clipmap算法的二者统一,使其正确地显示地球纹理图像,具体流程如下:
(1)获取当前视点的准确经纬度位置 及其世界坐标系下的位置P0(x,y,z);
利用以下公式计算出P0点的地心坐标系位置为(x0,y0,z0):
公式中,a代表地球长半轴,b代表地球短半轴,θ为纬度,为经度,h为当前位置海拔高度;
(2)以视点为中心绘制Geometry Clipmap网格,并确定Geometry Clipmap网格中各点的纹理坐标;
(3)根据当前视点的经纬度位置,计算出Geometry Clipmap网格上各点的形变后的世界坐标;
(4)根据视点的经纬度坐标,选择出适当的纹理,贴到对应所述网格上去,完成地形的绘制工作。
4.根据权利要求1所述的基于GPU的大规模地形实时绘制方法,其特征在于,所述Geometry Clipmap算法构建多层金字塔形式的三形网格,将单层的Geometry Clipmap网格分成19部分,其中:
第1-16部分均为16个规则的四边形网格,16个网格绕所述Geometry Clipmap网格的围成一圈;
第17部分为L形区域,所述L形区域贴在16个网格围成一圈的内层里,所述L形区域存在四种不同的方式贴在所述内层里,需要实时变化;
第18部分为中心网格区域,所述中心网格区域的长和宽为整个Geometry Clipmap网格长宽的一半;在所述Geometry Clipmap算法中只有最内层的Geometry Clipmap网格被渲染,非最内层网格的中心网格区域由下一层Geometry Clipmap网格代替,将Geometry Clipmap网格每个边的顶点数均设定为2n-1;
第19部分为包围整个Geometry Clipmap网格的退化三角形,消除内外两层Geometry Clipmap网格顶点无法一一对应而产生裂缝的现象。
5.根据权利要求4所述的基于GPU的大规模地形实时绘制方法,其特征在于,使用Triangle-strip的方法加快所述三角形网格的绘制速度。
6.根据权利要求4所述的基于GPU的大规模地形实时绘制方法,其特征在于,2n-1中的n设定为6。
7.根据权利要求4或6所述的基于GPU的大规模地形实时绘制方法,其特征在于,当视点在高空或高速运动时,取消绘制内层的高精度网格,其对Geometry Clipmap网格进行层次隐藏,设定层次隐藏满足的公式为2.5*h>length,h为当前视点距离地面的高度,length为某层Geometry Clipmap网格物理长度或宽度间的较大值。
8.根据权利要求7所述的基于GPU的大规模地形实时绘制方法,其特征在于,在进行Geometry Clipmap网格层次隐藏中,设置Geometry Clipmap算法当前显示Geometry Clipmap网格的最多层数为7层,最少层数为4层。
9.根据权利要求4或6所述的基于GPU的大规模地形实时绘制方法,其特征在于,在各层Geometry Clipmap网格使用视椎体剪裁技术,当飞机和水平线间的俯仰角小于-20度时,不进行视椎体剪裁工作;当俯仰角大于-20度时,针对90度的视野范围,首先将视线角度按照范围分组,再预先存储各组视线角度所需要绘制的块号,然后在顶点着色器中快速的做出选择,加快渲染效率;其中最内层Geometry Clipmap网格不进行视椎体剪裁工作。
10.根据权利要求8所述的基于GPU的大规模地形实时绘制方法,其特征在于,每层Geometry Clipmap网格均设计两个纹理数据缓冲池,一个位于GPU显存中,一个位于CPU内存中:
在GPU显存中的缓冲池,每层Geometry Clipmap网格均设置一个附加的1536*1536的纹理,附加的纹理能够存储36张256*256的纹理数据:针对当前Geometry Clipmap网格使用的纹理,将下一步可能用到的1-36张的纹理数据全部存储到附加的纹理中,当前Geometry Clipmap网格纹理需要更新时,使用附加的纹理替换原有的纹理;
在CPU内存中的缓冲池,用于将下一步需要的纹理提前从计算机硬盘读取到CPU内存中去,并选定时间上传到GPU显存中的缓冲池。

说明书全文

一种基于GPU的大规模地形实时绘制方法

技术领域

[0001] 本发明属于计算机图形学技术领域,尤其涉及一种基于GPU的大规模地形实时绘制方法。

背景技术

[0002] 对飞行员的培养,人们提出利用飞行模拟机来模拟飞行过程,从而保障飞行员如此训练的安全性和可靠性。作为直接与飞行员进行视觉交互的窗口,飞行模拟机视景系统研发成为了重中之重。在飞行视景系统中,地形实时绘制一直都是一个非常重要的方面。
[0003] 为模拟飞机的飞行过程,地形需要具有超大的表示范围和足够的响应更新速度,为此,现有技术采用地形LOD技术来简化地形网格,以加快地形渲染速度,LOD(多细节层次)全称Level Of Details,指在不影响模型视觉效果的前提下,使用一定的规则对三维场景的网格进行简化,降低顶点和三形的数量,降低场景的复杂度,从而提高绘制效率。传统的地形LOD技术需要在CPU端进行大量的复杂运算,导致CPU使用率过高,影响了地形绘制效率。为了尽可能的发挥GPU(图形专用处理器)的强大运算处理能,现已采有转向GPU端的地形LOD技术解决方案。其中极具代表性的就是Chunked LOD和Geometry Clipmap这两种地形LOD算法。其中,Geometry Clipmap算法得益于其简单且巧妙的网格构成,高效的更新策略,在地形绘制范围和速度上具有优势。
[0004] 在将Geometry Clipmap算法作为地形绘制的基础上,飞行视镜地形模拟中还存在一个非常重要的问题就是如何获取和组织地球影像纹理,并使还原后的地形效果与实际地球景色误差较小。为了在电脑中存储地球的影像纹理,通常会将地球投影到一个平面上去,然后再分割成小以利于存储和调度。在地形投影中有两个非常重要的衡量标准:保形、等大。将曲面投影到平面上往往会产生形变,而且面积也经常会发生变化,许多地球投影算法都无法做到以上两个标准中的任何一条,而只是试图获得一个形变较小,或者是具有其他特征的地球影像。

发明内容

[0005] 针对现有技术存在的问题,本发明提供了一种基于GPU的大规模地形实时绘制方法,提出了一整套地形纹理获取、处理流程,最终生成的纹理图像大小格式统一,方便程序的管理、加载和使用。
[0006] 本发明的基础方案:一种基于GPU的大规模地形实时绘制方法,生成地形模型顶点,通过底层的接口语言将顶点从CPU端送到带有着色器的图形专用处理器GPU的处理管线中;采用地形多细节层次LOD技术绘制地形网格,其中选定所述LOD技术中的地形绘制Geometry Clipmap算法作为地形绘制的基础,并需要对地球影像纹理进行处理:
[0007] S1:获取地球区域上的不同分辨率的纹理图像;
[0008] S2:将所述纹理图像按小块区域一块块地将所需的纹理信息截图保留;
[0009] S3:将所述小块区域的纹理信息拼接成一张纹理图;
[0010] S4:将所述纹理图分成大小一致的不同等级的小图像,包括高精度图像和与所述高精度图像对应的低精度图像;
[0011] S5:重新设定精度来获取低精度图像,将高精度图像和低精度图像进行对应处理,得到所有需要的地形纹理数据;
[0012] S6:将所述地形纹理数据加载到GPU。
[0013] 进一步,在步骤S5中,高精度图像和低精度图像进行对应处理流程如下:
[0014] (1)对高精度图像进行剪裁,使得长宽分辨率均相等,且均为2的幂次;
[0015] (2)将剪裁好的图像切分为小图片并将其保存;
[0016] (3)切分完成之后,再对剪裁好的图像进行降分辨率处理,以形成下一步处理的目标图;
[0017] (4)所述目标图再进行第(2)(3)步操作,使得所述目标图分辨率达到要求的准,且保留最后一次降分辨率后未切分的图像;
[0018] (5)统一高精度图像与低精度图像的纹理分辨率;
[0019] (6)对低精度图像进行剪裁,使其长宽相等,且均为2的幂次;
[0020] (7)对高精度图像和低精度图像进行羽化融合;
[0021] (8)将羽化融合后的图像进行操作第(2)(3)(4)步骤,便可以处理出所有需要的地形纹理数据。
[0022] 进一步,在地球影像纹理处理完成之后,建立一个物理地球模型来确保纹理能够正确地贴到对应的位置上去,借助地心坐标系WGS84与所述Geometry Clipmap算法的二者统一,使其正确地显示地球纹理图像,具体流程如下:
[0023] (1)获取当前视点的准确经纬度位置P0(θ,)及其世界坐标系下的位置P0(x,y,z);利用以下公式计算出P0点的地心坐标系位置为(x0,y0,z0):
[0024]
[0025]
[0026]
[0027]
[0028] 公式中,a代表地球长半轴,b代表地球短半轴,θ为纬度,为经度,h为当前位置海拔高度;
[0029] (2)以视点为中心绘制Geometry Clipmap网格,并确定Geometry Clipmap网格中各点的纹理坐标;
[0030] (3)根据当前视点的经纬度位置,计算出Geometry Clipmap网格上各点的形变后的世界坐标;
[0031] (4)根据视点的经纬度坐标,选择出适当的纹理,贴到对应所述网格上去,完成地形的绘制工作。
[0032] 进一步,所述Geometry Clipmap算法构建多层金字塔形式的三角形网格,将单层的Geometry Clipmap网格分成19部分,其中:
[0033] 第1-16部分均为16个规则的四边形网格,16个网格绕所述Geometry Clipmap网格的围成一圈;
[0034] 第17部分为L形区域,所述L形区域贴在16个网格围成一圈的内层里,所述L形区域存在四种不同的方式贴在所述内层里,需要实时变化;
[0035] 第18部分为中心网格区域,所述中心网格区域的长和宽为整个Geometry Clipmap网格长宽的一半;在所述Geometry Clipmap算法中只有最内层的Geometry Clipmap网格被渲染,非最内层网格的中心网格区域由下一层Geometry Clipmap网格代替,将Geometry nClipmap网格每个边的顶点数均设定为2-1;
[0036] 第19部分为包围整个Geometry Clipmap网格的退化三角形,消除内外两层Geometry Clipmap网格顶点无法一一对应而产生裂缝的现象。
[0037] 进一步,使用Triangle-strip的方法加快所述三角形网格的绘制速度。
[0038] 进一步,2n-1中的n设定为6。
[0039] 进一步,当视点在高空或高速运动时,取消绘制内层的高精度网格,其对Geometry Clipmap网格进行层次隐藏,设定层次隐藏满足的公式为2.5*h>length,h为当前视点距离地面的高度,length为某层Geometry Clipmap网格物理长度或宽度间的较大值。
[0040] 进一步,在进行Geometry Clipmap网格层次隐藏中,设置Geometry Clipmap算法当前显示Geometry Clipmap网格的最多层数为7层,最少层数为4层。
[0041] 进一步,在各层Geometry Clipmap网格使用视椎体剪裁技术,当飞机和水平线间的俯仰角小于-20度时,不进行视椎体剪裁工作;当俯仰角大于-20度时,针对90度的视野范围,首先将视线角度按照范围分组,再预先存储各组视线角度所需要绘制的块号,然后在顶点着色器中快速的做出选择,加快渲染效率;其中最内层Geometry Clipmap网格不进行视椎体剪裁工作。
[0042] 进一步,每层Geometry Clipmap网格均设计两个纹理数据缓冲池,一个位于GPU显存中,一个位于CPU内存中:
[0043] 在GPU显存中的缓冲池,每层Geometry Clipmap网格均设置一个附加的1536*1536的纹理,附加的纹理能够存储36张256*256的纹理数据:针对当前Geometry Clipmap网格使用的纹理,将下一步可能用到的1-36张的纹理数据全部存储到附加的纹理中,当前Geometry Clipmap网格纹理需要更新时,使用附加的纹理替换原有的纹理;
[0044] 在CPU内存中的缓冲池,用于将下一步需要的纹理提前从计算机硬盘读取到CPU内存中去,并选定时间上传到GPU显存中的缓冲池。
[0045] 与现有技术相比,本发明的有益效果:1、针对地形纹理处理困难的问题,提出一整套地形纹理获取、处理流程,最终生成的纹理图片大小格式统一,非常方便程序的管理、加载和使用。
[0046] 2、本方法建立了一个基于WGS-84的地球物理模型,以对绘制出来的地形进行变形操作,使最终的地形仿真效果和实际的地球样貌相吻合。
[0047] 3、最大限度的发挥了Geometry Clipmap算法的GPU友好性,将大量的计算转移到GPU上进行。还针对Geometry Clipmap的网格结构进行优化,调整优化网格中L形区域的更新变化策略,降低算法复杂度。
[0048] 4、提出了一种CPU内存缓冲池、GPU显存缓冲池的双缓冲池解决方案,以解决地形纹理数据在硬盘-CPU-GPU之间的传输瓶颈附图说明
[0049] 图1是实施例一中地形纹理处理的示意图;
[0050] 图2是实施例一中纹理处理流程图
[0051] 图3是实施例一中某高原机场附近区域500m高空的高精度图像;
[0052] 图4是实施例一中某高原机场附近区域25km高空的高精度图像;
[0053] 图5是实施例一中高精度图像和低精度图像羽化融合后的图像;
[0054] 图6是实施例一中Geometry Clipmap网格形变计算的示意图;
[0055] 图7是实施例二中多层金字塔形式的三角形网格的示意图;
[0056] 图8是实施例二中Geometry Clipmap网格模型的示意图;
[0057] 图9是实施例二中Geometry Clipmap网格中L形区域出现的四种情况图;
[0058] 图10是实施例二中退化三角形生成方法的示意图;
[0059] 图11是实施例二中视椎体剪裁的示意图;
[0060] 图12是实施例二中Geometry Clipmap网格纹理预存的示意图;
[0061] 图13是实施例二中CPU缓冲池操作的逻辑流程图。

具体实施方式

[0062] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0063] 下面结合附图及具体实施例对本发明的应用原理作进一步描述:
[0064] 实施例一:
[0065] 一种基于GPU的大规模地形实时绘制方法,生成地形模型顶点,通过选择OpenGL作为底层的接口语言将顶点从CPU端送到带有着手器的GPU的处理管线中,采用地形多细节层次LOD技术绘制地形网格,其中选定LOD技术中的地形绘制Geometry Clipmap算法作为地形绘制的基础,并需要对地球影像纹理进行处理,其中GPU先用NVIDIA GeForce6800显卡:
[0066] S1:获取地球区域上的不同分辨率的纹理图像;在本实施例中,通过采用虚拟地球软件Google earth获取纹理图像,Google earth是由Google公司开发的虚拟地球软件,通过将卫星遥感图片、GIS等数据部署在一个虚拟的三维地球模型上,来向用户展示地球信息。
[0067] S2:将纹理图像按小块区域一块块地将所需的纹理信息截图保留;
[0068] S3:将小块区域的纹理信息拼接成一张纹理图;
[0069] 其中,可以利用插件进行截图拼接,如GetScreen插件、水经注等,在本实施例中,采用GetScreen插件。具体地,选定好纹理图像的某一区域和精度后,便开始展开截图,GetScreen插件会自动在Googleearth上按小块区域进行一块块的截图,并将这些小块区域截图按照经纬度信息拼接在一起。
[0070] 由于原始截图拼接后的地形纹理数据通常较大,在现有的硬件水平下不可能直接加载到GPU中,所以进行了以下处理:
[0071] S4:将所述纹理图分成大小一致的不同等级的小图像,包括高精度图像和与所述高精度图像对应的低精度图像;在本实施例中,利用纹理剪贴图Texture Clipmap技术以缩小4倍的方式处理所述纹理图,如图1所示,对于一张Level-0级的1024*1024分辨率的纹理图像,其大小为512KB,首先将原始图像均匀地分割成4份,大小均为128KB,分辨率512*512;然后将原始图像降分辨率成一张Level-1机512*512分辨率,其大小随之降低到128KB。即Level-0、Level-1等级的每份纹理图像均为512*512分辨率,大小也都是128KB,且等高级的每份纹理图像均对应低等级的四份纹理图像。当需要低精度图像时,可以使用高等的纹理图像;当其中某高等级图片需要更高分辨率时,便可以用四份低等级的纹理图像来代替。
[0072] S5:在Google earth上,重新设定精度来获取低精度图像,将高精度图像和低精度图像进行对应处理,得到所有需要的地形纹理数据,如图2所示,其流程如下:
[0073] (1)对高精度图像进行剪裁,使得长宽分辨率均相等,且均为2的幂次;其中,使用17 17
地图绘制软件Global Mapper进行剪裁处理,剪裁处理后的图像分辨率为2 *2 ;
[0074] (2)将剪裁好的图像切分为小图片并将其保存;在本实施中,选取一个适当的分辨率为256*256,剪裁好的图像根据该分辨率能被切分成512*512块;
[0075] (3)切分完成之后,再对剪裁好的图像进行降分辨率处理,以形成下一步处理的目标图;在本实施例中,将剪裁好的图像分辨率降为原来的四分之一,即第一次降分辨率后成为216*216大小图像的目标图;
[0076] (4)目标图再进行第(2)(3)步操作,使得目标图分辨率达到要求的水准,且保留最后一次降分辨率后未切分的图像;如图3所示,图3的分辨率为131072*131072,将图3供进行了6次切分及降分辨率,最终图像的分辨率降成2048*2048,被切分成了64小块;
[0077] (5)统一高精度图像与低精度图像的纹理分辨率;在本实施例中,将低精度图像命名为Y,利用地图绘制软件Global Mapper获取到X的每像素经纬度大小Rx及Y的每像素像素经纬度大小Ry,获取到二者的比值n=Ry/Rx,用n乘以低精度图像的分辨率,作为低精度图像的目标分辨率。如图4所示,图4的分辨率为14962*14962,图3的目标分辨率为14962*n=20788,然后将图3的分辨率提升到20788*20788,命名为Y1;
[0078] (6)对低精度图像进行剪裁,使其长宽相等,且均为2的幂次;重新确定低精度图像的可用范围,以高精度图像的经纬度坐标中心作为低精度图像的经纬度参考点,确定以经纬度参考点作为中心点时最大的可截取到的大小为2幂次乘以2的幂次的纹理图;按照此步骤,图3的最终切割后的分辨率为16384*16384,将其命名为Y2;
[0079] (7)对高精度图像和低精度图像进行羽化融合;根据X和Y2的精确经纬度坐标,将二者放到一起,进行羽化融合操作,最终形成低精度图像Z;如图5所示,图中黑框边缘即为羽化融合部分;
[0080] (8)将羽化融合后的图像,即低精度图像Z,进行操作第(2)(3)(4)步骤,便可以处理出所有需要的地形纹理数据;
[0081] S6:将地形纹理数据加载到GPU。
[0082] 根据提出一整套地形纹理获取、处理流程,可以获得一整套的大范围地形纹理数据,可以保证获取到的地球纹理形变较小,处理后的多层纹理可以一一对应。针对地形纹理高低精度之间的偏移误差,提出羽化融合的解决方案,最终生成的纹理图像大小格式统一,方便程序的管理、加载和使用;低精度图像具有足够大的表示范围,高精度图像则可以表现出局部地形的细节信息。
[0083] 在地球影像纹理处理完成之后,建立一个物理地球模拟来确保纹理能够正确地贴到对应的位置上去,借助地心坐标系WGS84与Geometry Clipmap算法的二者统一,使其正确地显示地球纹理图像,如图6所示,具体流程如下:
[0084] (1)获取当前视点的准确经纬度位置P0(θ, )及其世界坐标系下的位置P0(x,y,z);利用以下公式计算出P0点的地心坐标系位置为(x0,y0,z0):
[0085]
[0086]
[0087]
[0088]
[0089] 公式中,a代表地球长半轴,b代表地球短半轴,θ为纬度,为经度,h为当前位置海拔高度;
[0090] (2)以视点为中心绘制Geometry Clipmap网格,并确定Geometry Clipmap网格中各点的纹理坐标;
[0091] (3)根据当前视点的经纬度位置,计算出Geometry Clipmap网格上各点的形变后的世界坐标;如图6中,对Geometry Clipmap网格上点P1(θ1, ),再由上述公式顺序计算出其他地心坐标系位置P1(x1,y1,z1),再计算出地心坐标系下的向量P0P1,并将此向量转换到世界坐标系下,将转换后的向量加上P0点的世界坐标位置便是P1点新的世界坐标位置;
[0092] (4)根据视点的经纬度坐标,选择出适当的纹理,贴到对应所述网格上去,完成地形的绘制工作。
[0093] 为了保证地形仿真的真实性,利用WGS84建立了一个仿真的地球物理模型,通过这个物理模型,绘制出来的地形可以根据其经纬度信息发生类地形变,满足地形绘制的精准性,高空飞行时可以观察到地形的类地球变效果。
[0094] 实施例二:
[0095] 基于GPU的大规模地形实时绘制方法,本实施例二与实施例一的区别在于,如图7所示,根据现有技术Geometry Clipmap算法构建多层金字塔形式的三角形网格,使用Triangle-strip的方法加快所述三角形网格的绘制速度。如图8所示,将单层的Geometry Clipmap网格分成19部分,其中:
[0096] 第1-16部分均为16个规则的四边形网格,16个网格绕Geometry Clipmap网格的围成一圈;其中,第1-12部分的每一块都是64*64顶点的正方形网格,第13-16部分的每一块都是64*3顶点的长方形网格;
[0097] 第17部分为L形区域,L形区域贴在16个网格围成一圈的内层里,L形区域存在四种不同的方式贴在所述内层里,需要实时变化;L形区域每条外侧边上均由129个顶点,边的宽度均为两个顶点,Geometry Clipmap算法中每一次的更新都是由L形区域的变化来首先响应的,L形区域有多种实现方法,比如利用环形数组和取模的方式计算,还可以采用翻转平移的方式来处理L形区域,如图9所示,从(a)到(c)变化时,可以直接通过将(a)的左侧和下侧平移相应距离,或者是由中心点翻转即可;
[0098] 如图8所示,第18部分为中心网格区域,中心网格区域的长和宽为整个Geometry Clipmap网格长宽的一半;在Geometry Clipmap算法中只有最内层的Geometry Clipmap网格被渲染,非最内层网格的中心网格区域由下一层Geometry Clipmap网格代替(如图8右下角所示),将Geometry Clipmap网格每个边的顶点数均设定为2n-1;在本实施例中,第18部分为128*128顶点的正方形区域。其中,由于每层Geometry Clipmap网格的第18部分需要被下一层网格所替代,导致整个Geometry Clipmap网格的每个边上必须有偶数个三角形,即每层网格边的顶点数须为奇数,加上计算机硬件对2的幂次方的数有优化,所以本方法中将网格每个边的顶点数均设定为2n-1;当2n-1中的n取值过大时,由于高程采样率过高会造型地形的梯度效果;而n过小时地形的视觉效果又不够,远处的山峰会丢失许多细节。所以,在本实施例中确定n最终为6,即每层Geometry Clipmap网格的分辨率为255*255;
[0099] 第19部分为包围整个Geometry Clipmap网格的退化三角形(如图8中虚线部分),消除内外两层Geometry Clipmap网格顶点无法一一对应而产生裂缝的现象;由于Geometry Clipmap算法为嵌套性网格,即外层网格的第18部分会被内层网格所替代,内外两层网格之间就会出现顶点无法一一对应的情况,导致裂缝现象的产生,所以,本方法直接使用了退化三角形的方法来解决裂缝问题。退化三角形的三个顶点在一个直线上,所以它的面积为0,如图10所示,假设内部正方形某边上有7个顶点:0、1、2、3、4、5、6,则覆盖这条边的退化三角形有三个,分别为:021、243、465。
[0100] 在民航飞行模拟机的视景当中,客机万米高空可视觉范围常常可以达到上百千米远,为了满足这一特性,Geometry Clipmap算法在实现的过程中,使用多层的Geometry Clipmap网格。但是在飞行模拟中,视点在高空或者高速运动时,内层的高精度网格会显得多余,而且会因为分辨率过高而产生闪烁现象,并且,高空或者高速运动时观察一个物体,经常会损失物体的细节信息,这也是人眼视觉的特点。通过人眼这一特点出发,也为了加快绘制渲染的速度,基于Geometry Clipmap算法选择性的隐藏精细层来加快视景地形的渲染效率,具体如下:
[0101] 当视点在高空或高速运动时,取消绘制内层的高精度网格,其对Geometry Clipmap网格进行层次隐藏,设定层次隐藏满足的公式为2.5*h>length,h为当前视点距离地面的高度,length为某层Geometry Clipmap网格物理长度或宽度间的较大值。
[0102] 同时由于飞机飞行高度降低时,所看到的视景范围也会减小,根据这一特性,为了有效降低绘制开销,本实施例中设置Geometry Clipmap算法当前可现实Geometry Clipmap网格的最多层数为7层,最少层数为4层。
[0103] 考虑到民用客机的飞行路线比较平滑,一半以上的时间都是水平向前飞行,航向角和俯仰角的变化也比较温和,对于Geometry Clipmap网格来说,会有一半以上的区域处在看不见的位置,所以,在方法中提出了一种简化的视椎体剪裁方案,使其在进入GPU的片元着色器之间先进行视椎体剪裁,可以避免绘制不可见物体,降低了渲染开销。
[0104] 如图11所示,在各层Geometry Clipmap网格使用视椎体剪裁技术,当飞机和水平线间的俯仰角小于-20度时,不进行视椎体剪裁工作;当俯仰角大于-20度时,针对90度的视野范围,首先将视线角度按照范围分组,再预先存储各组视线角度所需要绘制的块号,然后在顶点着色器中快速的做出选择,加快渲染效率;其中最内层Geometry Clipmap网格不进行视椎体剪裁工作。
[0105] 如下表所示,视线角度被分为8组,各组范围内需要显示的块号如下:
[0106]视线角度范围 可视块号
[0,45) 1、2、3、4、5、6、8、13、15
[45,90) 2、3、4、6、8、11、12、13、15
[90,135) 3、4、6、8、10、11、12、15、16
[135,180) 6、7、8、9、10、11、12、15、16
[180,225) 5、7、8、9、10、11、12、14、16
[225,270) 1、2、5、7、9、10、11、14、16
[270,315) 1、2、3、5、7、9、10、13、14
[315,0) 1、2、3、4、5、6、7、13、14
[0107] 为了尽可能的降低顶点信息更新的频率,在本方案中,Geometry Clipmap算法使用了分层的方法,将地形网格划分成嵌套的多层金字塔形式的三角形网格,但是当一层网格需要更新时,其内层网格也会随之发生更新,为了解决这一问题,避免影响地形绘制效率,以提高纹理数据传输的速度:
[0108] 每层Geometry Clipmap网格均设计两个纹理数据缓冲池,一个位于GPU显存中,一个位于CPU内存中;
[0109] 在GPU显存中的缓冲池,为了提前加载下一步可能使用到的纹理数据,每层Geometry Clipmap网格均设置一个附加的1536*1536的纹理,附加的纹理能够存储36张256*256的纹理数据:如图12所示,针对当前Geometry Clipmap网格使用的纹理,将下一步可能用到的1-36张的纹理数据全部存储到附加的纹理中,当前Geometry Clipmap网格纹理需要更新时,使用附加的纹理替换原有的纹理;这一步的操作时完全在GPU显存中进行的,GPU的显存带宽可以达到上百GB/s,能够满足这一步的操作要求。
[0110] 在CPU内存中的缓冲池,用于将下一步需要的纹理提前从计算机硬盘读取到CPU内存中去,并选定时间上传到GPU显存中的缓冲池,如图13所示,具体流程如下:
[0111] (1)当GPU的缓冲池标志为0时,等待时间t后,CPU计算下一层可能使用到的纹理数据,提前加载到CPU内存中;
[0112] (2)等待时间t1,CPU上传内存缓冲池至GPU显存缓冲池中,置GPU缓冲池标志为1,再重复上述步骤(1)。
[0113] GPU显存缓冲池的设计使得Geometry Clipmap网格纹理更新时,不必和计算机硬盘、内存间进行数据交互,规避了数据从硬盘-GPU传输的问题。当一层Geometry Clipmap网格的GPU缓冲池使用完之后,等待一个合适的时间t后,CPU从计算机硬盘读取当前Geometry Clipmap网格下一步可能用到的36张纹理数据,将它们提前拼接成1536*1536的纹理,并存放于计算机内存中,再等待一个合适的时间t1,将这张拼接后的纹理上传至GPU显存缓冲池中。t和t1的取值和网格层数有关,等待时间t可以预防多层网格同时读取计算机硬盘,时间t1可以预防多层网格CPU内存缓冲池同步上传的问题。根据本方法进行实验,最精细层网格的最快更新速率约为2s一次,在这个2s的时间内,有足够的时间从计算机硬盘中寻找到36张地形和高程纹理,并加载到GPU显存缓冲池中。
[0114] 通过上述两个纹理数据缓冲池的层层分解,一次Geometry Clipmap网格纹理的更新操作被分成三个离散的操作:读硬盘、数据上传GPU、GPU纹理替换。而且多层网格纹理需要同时更新时,只有GPU显存中纹理替换这一步操作是同时进行的,而读硬盘、数据上传GPU这两个操作被分配在合适的时间段错开进行,有效的保证了地形绘制的效率。
[0115] 本方法最大限度地发挥了Geometry Clipmap算法的GPU友好性,将大量的计算转移到GPU上进行。还针对Geometry Clipmap的网格结构进行优化,调整优化网格L形区域的更新变化策略,降低算法复杂度。
[0116] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈