CN110852952A - 一种基于gpu的大规模地形实时绘制方法 - Google Patents
一种基于gpu的大规模地形实时绘制方法 Download PDFInfo
- Publication number
- CN110852952A CN110852952A CN201911087567.6A CN201911087567A CN110852952A CN 110852952 A CN110852952 A CN 110852952A CN 201911087567 A CN201911087567 A CN 201911087567A CN 110852952 A CN110852952 A CN 110852952A
- Authority
- CN
- China
- Prior art keywords
- texture
- image
- grid
- terrain
- precision
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 45
- 238000009877 rendering Methods 0.000 title claims abstract description 25
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 29
- 238000012545 processing Methods 0.000 claims abstract description 27
- 238000005516 engineering process Methods 0.000 claims abstract description 10
- 239000010410 layer Substances 0.000 claims description 49
- 230000000007 visual effect Effects 0.000 claims description 11
- 230000008569 process Effects 0.000 claims description 9
- 230000004927 fusion Effects 0.000 claims description 7
- 230000009467 reduction Effects 0.000 claims description 5
- 230000011218 segmentation Effects 0.000 claims description 4
- 238000004321 preservation Methods 0.000 claims description 3
- 239000002356 single layer Substances 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 8
- 238000004088 simulation Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 210000003746 feather Anatomy 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/40—Scaling of whole images or parts thereof, e.g. expanding or contracting
- G06T3/4038—Image mosaicing, e.g. composing plane images from plane sub-images
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/50—Image enhancement or restoration using two or more images, e.g. averaging or subtraction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20021—Dividing image into blocks, subimages or windows
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20112—Image segmentation details
- G06T2207/20132—Image cropping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20212—Image combination
- G06T2207/20221—Image fusion; Image merging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/30—Subject of image; Context of image processing
- G06T2207/30181—Earth observation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02A—TECHNOLOGIES FOR ADAPTATION TO CLIMATE CHANGE
- Y02A90/00—Technologies having an indirect contribution to adaptation to climate change
- Y02A90/10—Information and communication technologies [ICT] supporting adaptation to climate change, e.g. for weather forecasting or climate simulation
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明属于计算机图形学技术领域,公开了一种基于GPU的大规模地形实时绘制方法,选定LOD技术中的Geometry Clipmap算法作为地形绘制的基础,并需要对地球影像纹理进行处理:获取到地球区域上的不同分辨率的纹理图像;将纹理图像按小块区域一块块地的纹理信息截图保留;将小块区域的纹理信息拼接成一张纹理图;将纹理图分成大小一致的不同等级的小图像,包括高精度图像和与高精度图像对应的低精度图像;重新设定精度来获取低精度图像,将高精度图像和低精度图像进行对应处理,得到所有需要的地形纹理数据;将所述地形纹理数据加载到GPU。本方案提出了一整套地形纹理获取、处理流程,最终生成的纹理图像大小格式统一,方便程序的管理、加载和使用。
Description
技术领域
本发明属于计算机图形学技术领域,尤其涉及一种基于GPU的大规模地形实时绘制方法。
背景技术
对飞行员的培养,人们提出利用飞行模拟机来模拟飞行过程,从而保障飞行员如此训练的安全性和可靠性。作为直接与飞行员进行视觉交互的窗口,飞行模拟机视景系统研发成为了重中之重。在飞行视景系统中,地形实时绘制一直都是一个非常重要的方面。
为模拟飞机的飞行过程,地形需要具有超大的表示范围和足够的响应更新速度,为此,现有技术采用地形LOD技术来简化地形网格,以加快地形渲染速度,LOD(多细节层次)全称Level Of Details,指在不影响模型视觉效果的前提下,使用一定的规则对三维场景的网格进行简化,降低顶点和三角形的数量,降低场景的复杂度,从而提高绘制效率。传统的地形LOD技术需要在CPU端进行大量的复杂运算,导致CPU使用率过高,影响了地形绘制效率。为了尽可能的发挥GPU(图形专用处理器)的强大运算处理能力,现已采有转向GPU端的地形LOD技术解决方案。其中极具代表性的就是Chunked LOD和Geometry Clipmap这两种地形LOD算法。其中,Geometry Clipmap算法得益于其简单且巧妙的网格构成,高效的更新策略,在地形绘制范围和速度上具有优势。
在将Geometry Clipmap算法作为地形绘制的基础上,飞行视镜地形模拟中还存在一个非常重要的问题就是如何获取和组织地球影像纹理,并使还原后的地形效果与实际地球景色误差较小。为了在电脑中存储地球的影像纹理,通常会将地球投影到一个平面上去,然后再分割成小块以利于存储和调度。在地形投影中有两个非常重要的衡量标准:保形、等大。将曲面投影到平面上往往会产生形变,而且面积也经常会发生变化,许多地球投影算法都无法做到以上两个标准中的任何一条,而只是试图获得一个形变较小,或者是具有其他特征的地球影像。
发明内容
针对现有技术存在的问题,本发明提供了一种基于GPU的大规模地形实时绘制方法,提出了一整套地形纹理获取、处理流程,最终生成的纹理图像大小格式统一,方便程序的管理、加载和使用。
本发明的基础方案:一种基于GPU的大规模地形实时绘制方法,生成地形模型顶点,通过底层的接口语言将顶点从CPU端送到带有着色器的图形专用处理器GPU的处理管线中;采用地形多细节层次LOD技术绘制地形网格,其中选定所述LOD技术中的地形绘制Geometry Clipmap算法作为地形绘制的基础,并需要对地球影像纹理进行处理:
S1:获取地球区域上的不同分辨率的纹理图像;
S2:将所述纹理图像按小块区域一块块地将所需的纹理信息截图保留;
S3:将所述小块区域的纹理信息拼接成一张纹理图;
S4:将所述纹理图分成大小一致的不同等级的小图像,包括高精度图像和与所述高精度图像对应的低精度图像;
S5:重新设定精度来获取低精度图像,将高精度图像和低精度图像进行对应处理,得到所有需要的地形纹理数据;
S6:将所述地形纹理数据加载到GPU。
进一步,在步骤S5中,高精度图像和低精度图像进行对应处理流程如下:
(1)对高精度图像进行剪裁,使得长宽分辨率均相等,且均为2的幂次;
(2)将剪裁好的图像切分为小图片并将其保存;
(3)切分完成之后,再对剪裁好的图像进行降分辨率处理,以形成下一步处理的目标图;
(4)所述目标图再进行第(2)(3)步操作,使得所述目标图分辨率达到要求的水准,且保留最后一次降分辨率后未切分的图像;
(5)统一高精度图像与低精度图像的纹理分辨率;
(6)对低精度图像进行剪裁,使其长宽相等,且均为2的幂次;
(7)对高精度图像和低精度图像进行羽化融合;
(8)将羽化融合后的图像进行操作第(2)(3)(4)步骤,便可以处理出所有需要的地形纹理数据。
进一步,在地球影像纹理处理完成之后,建立一个物理地球模型来确保纹理能够正确地贴到对应的位置上去,借助地心坐标系WGS84与所述Geometry Clipmap算法的二者统一,使其正确地显示地球纹理图像,具体流程如下:
(2)以视点为中心绘制Geometry Clipmap网格,并确定Geometry Clipmap网格中各点的纹理坐标;
(3)根据当前视点的经纬度位置,计算出Geometry Clipmap网格上各点的形变后的世界坐标;
(4)根据视点的经纬度坐标,选择出适当的纹理,贴到对应所述网格上去,完成地形的绘制工作。
进一步,所述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网格代替,将GeometryClipmap网格每个边的顶点数均设定为2n-1;
第19部分为包围整个Geometry Clipmap网格的退化三角形,消除内外两层Geometry Clipmap网格顶点无法一一对应而产生裂缝的现象。
进一步,使用Triangle-strip的方法加快所述三角形网格的绘制速度。
进一步,2n-1中的n设定为6。
进一步,当视点在高空或高速运动时,取消绘制内层的高精度网格,其对GeometryClipmap网格进行层次隐藏,设定层次隐藏满足的公式为2.5*h>length,h为当前视点距离地面的高度,length为某层Geometry Clipmap网格物理长度或宽度间的较大值。
进一步,在进行Geometry Clipmap网格层次隐藏中,设置Geometry Clipmap算法当前显示Geometry Clipmap网格的最多层数为7层,最少层数为4层。
进一步,在各层Geometry Clipmap网格使用视椎体剪裁技术,当飞机和水平线间的俯仰角小于-20度时,不进行视椎体剪裁工作;当俯仰角大于-20度时,针对90度的视野范围,首先将视线角度按照范围分组,再预先存储各组视线角度所需要绘制的块号,然后在顶点着色器中快速的做出选择,加快渲染效率;其中最内层Geometry Clipmap网格不进行视椎体剪裁工作。
进一步,每层Geometry Clipmap网格均设计两个纹理数据缓冲池,一个位于GPU显存中,一个位于CPU内存中:
在GPU显存中的缓冲池,每层Geometry Clipmap网格均设置一个附加的1536*1536的纹理,附加的纹理能够存储36张256*256的纹理数据:针对当前Geometry Clipmap网格使用的纹理,将下一步可能用到的1-36张的纹理数据全部存储到附加的纹理中,当前Geometry Clipmap网格纹理需要更新时,使用附加的纹理替换原有的纹理;
在CPU内存中的缓冲池,用于将下一步需要的纹理提前从计算机硬盘读取到CPU内存中去,并选定时间上传到GPU显存中的缓冲池。
与现有技术相比,本发明的有益效果:1、针对地形纹理处理困难的问题,提出一整套地形纹理获取、处理流程,最终生成的纹理图片大小格式统一,非常方便程序的管理、加载和使用。
2、本方法建立了一个基于WGS-84的地球物理模型,以对绘制出来的地形进行变形操作,使最终的地形仿真效果和实际的地球样貌相吻合。
3、最大限度的发挥了Geometry Clipmap算法的GPU友好性,将大量的计算转移到GPU上进行。还针对Geometry Clipmap的网格结构进行优化,调整优化网格中L形区域的更新变化策略,降低算法复杂度。
4、提出了一种CPU内存缓冲池、GPU显存缓冲池的双缓冲池解决方案,以解决地形纹理数据在硬盘-CPU-GPU之间的传输瓶颈。
附图说明
图1是实施例一中地形纹理处理的示意图;
图2是实施例一中纹理处理流程图;
图3是实施例一中某高原机场附近区域500m高空的高精度图像;
图4是实施例一中某高原机场附近区域25km高空的高精度图像;
图5是实施例一中高精度图像和低精度图像羽化融合后的图像;
图6是实施例一中Geometry Clipmap网格形变计算的示意图;
图7是实施例二中多层金字塔形式的三角形网格的示意图;
图8是实施例二中Geometry Clipmap网格模型的示意图;
图9是实施例二中Geometry Clipmap网格中L形区域出现的四种情况图;
图10是实施例二中退化三角形生成方法的示意图;
图11是实施例二中视椎体剪裁的示意图;
图12是实施例二中Geometry Clipmap网格纹理预存的示意图;
图13是实施例二中CPU缓冲池操作的逻辑流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
下面结合附图及具体实施例对本发明的应用原理作进一步描述:
实施例一:
一种基于GPU的大规模地形实时绘制方法,生成地形模型顶点,通过选择OpenGL作为底层的接口语言将顶点从CPU端送到带有着手器的GPU的处理管线中,采用地形多细节层次LOD技术绘制地形网格,其中选定LOD技术中的地形绘制Geometry Clipmap算法作为地形绘制的基础,并需要对地球影像纹理进行处理,其中GPU先用NVIDIA GeForce6800显卡:
S1:获取地球区域上的不同分辨率的纹理图像;在本实施例中,通过采用虚拟地球软件Google earth获取纹理图像,Google earth是由Google公司开发的虚拟地球软件,通过将卫星遥感图片、GIS等数据部署在一个虚拟的三维地球模型上,来向用户展示地球信息。
S2:将纹理图像按小块区域一块块地将所需的纹理信息截图保留;
S3:将小块区域的纹理信息拼接成一张纹理图;
其中,可以利用插件进行截图拼接,如GetScreen插件、水经注等,在本实施例中,采用GetScreen插件。具体地,选定好纹理图像的某一区域和精度后,便开始展开截图,GetScreen插件会自动在Googleearth上按小块区域进行一块块的截图,并将这些小块区域截图按照经纬度信息拼接在一起。
由于原始截图拼接后的地形纹理数据通常较大,在现有的硬件水平下不可能直接加载到GPU中,所以进行了以下处理:
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,且等高级的每份纹理图像均对应低等级的四份纹理图像。当需要低精度图像时,可以使用高等的纹理图像;当其中某高等级图片需要更高分辨率时,便可以用四份低等级的纹理图像来代替。
S5:在Google earth上,重新设定精度来获取低精度图像,将高精度图像和低精度图像进行对应处理,得到所有需要的地形纹理数据,如图2所示,其流程如下:
(1)对高精度图像进行剪裁,使得长宽分辨率均相等,且均为2的幂次;其中,使用地图绘制软件Global Mapper进行剪裁处理,剪裁处理后的图像分辨率为217*217;
(2)将剪裁好的图像切分为小图片并将其保存;在本实施中,选取一个适当的分辨率为256*256,剪裁好的图像根据该分辨率能被切分成512*512块;
(3)切分完成之后,再对剪裁好的图像进行降分辨率处理,以形成下一步处理的目标图;在本实施例中,将剪裁好的图像分辨率降为原来的四分之一,即第一次降分辨率后成为216*216大小图像的目标图;
(4)目标图再进行第(2)(3)步操作,使得目标图分辨率达到要求的水准,且保留最后一次降分辨率后未切分的图像;如图3所示,图3的分辨率为131072*131072,将图3供进行了6次切分及降分辨率,最终图像的分辨率降成2048*2048,被切分成了64小块;
(5)统一高精度图像与低精度图像的纹理分辨率;在本实施例中,将低精度图像命名为Y,利用地图绘制软件Global Mapper获取到X的每像素经纬度大小Rx及Y的每像素像素经纬度大小Ry,获取到二者的比值n=Ry/Rx,用n乘以低精度图像的分辨率,作为低精度图像的目标分辨率。如图4所示,图4的分辨率为14962*14962,图3的目标分辨率为14962*n=20788,然后将图3的分辨率提升到20788*20788,命名为Y1;
(6)对低精度图像进行剪裁,使其长宽相等,且均为2的幂次;重新确定低精度图像的可用范围,以高精度图像的经纬度坐标中心作为低精度图像的经纬度参考点,确定以经纬度参考点作为中心点时最大的可截取到的大小为2幂次乘以2的幂次的纹理图;按照此步骤,图3的最终切割后的分辨率为16384*16384,将其命名为Y2;
(7)对高精度图像和低精度图像进行羽化融合;根据X和Y2的精确经纬度坐标,将二者放到一起,进行羽化融合操作,最终形成低精度图像Z;如图5所示,图中黑框边缘即为羽化融合部分;
(8)将羽化融合后的图像,即低精度图像Z,进行操作第(2)(3)(4)步骤,便可以处理出所有需要的地形纹理数据;
S6:将地形纹理数据加载到GPU。
根据提出一整套地形纹理获取、处理流程,可以获得一整套的大范围地形纹理数据,可以保证获取到的地球纹理形变较小,处理后的多层纹理可以一一对应。针对地形纹理高低精度之间的偏移误差,提出羽化融合的解决方案,最终生成的纹理图像大小格式统一,方便程序的管理、加载和使用;低精度图像具有足够大的表示范围,高精度图像则可以表现出局部地形的细节信息。
在地球影像纹理处理完成之后,建立一个物理地球模拟来确保纹理能够正确地贴到对应的位置上去,借助地心坐标系WGS84与Geometry Clipmap算法的二者统一,使其正确地显示地球纹理图像,如图6所示,具体流程如下:
(1)获取当前视点的准确经纬度位置P0(θ,)及其世界坐标系下的位置P0(x,y,z);利用以下公式计算出P0点的地心坐标系位置为(x0,y0,z0):
(2)以视点为中心绘制Geometry Clipmap网格,并确定Geometry Clipmap网格中各点的纹理坐标;
(3)根据当前视点的经纬度位置,计算出Geometry Clipmap网格上各点的形变后的世界坐标;如图6中,对Geometry Clipmap网格上点P1(θ1,),再由上述公式顺序计算出其他地心坐标系位置P1(x1,y1,z1),再计算出地心坐标系下的向量P0P1,并将此向量转换到世界坐标系下,将转换后的向量加上P0点的世界坐标位置便是P1点新的世界坐标位置;
(4)根据视点的经纬度坐标,选择出适当的纹理,贴到对应所述网格上去,完成地形的绘制工作。
为了保证地形仿真的真实性,利用WGS84建立了一个仿真的地球物理模型,通过这个物理模型,绘制出来的地形可以根据其经纬度信息发生类地形变,满足地形绘制的精准性,高空飞行时可以观察到地形的类地球变效果。
实施例二:
基于GPU的大规模地形实时绘制方法,本实施例二与实施例一的区别在于,如图7所示,根据现有技术Geometry Clipmap算法构建多层金字塔形式的三角形网格,使用Triangle-strip的方法加快所述三角形网格的绘制速度。如图8所示,将单层的GeometryClipmap网格分成19部分,其中:
第1-16部分均为16个规则的四边形网格,16个网格绕Geometry Clipmap网格的围成一圈;其中,第1-12部分的每一块都是64*64顶点的正方形网格,第13-16部分的每一块都是64*3顶点的长方形网格;
第17部分为L形区域,L形区域贴在16个网格围成一圈的内层里,L形区域存在四种不同的方式贴在所述内层里,需要实时变化;L形区域每条外侧边上均由129个顶点,边的宽度均为两个顶点,Geometry Clipmap算法中每一次的更新都是由L形区域的变化来首先响应的,L形区域有多种实现方法,比如利用环形数组和取模的方式计算,还可以采用翻转平移的方式来处理L形区域,如图9所示,从(a)到(c)变化时,可以直接通过将(a)的左侧和下侧平移相应距离,或者是由中心点翻转即可;
如图8所示,第18部分为中心网格区域,中心网格区域的长和宽为整个GeometryClipmap网格长宽的一半;在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;
第19部分为包围整个Geometry Clipmap网格的退化三角形(如图8中虚线部分),消除内外两层Geometry Clipmap网格顶点无法一一对应而产生裂缝的现象;由于GeometryClipmap算法为嵌套性网格,即外层网格的第18部分会被内层网格所替代,内外两层网格之间就会出现顶点无法一一对应的情况,导致裂缝现象的产生,所以,本方法直接使用了退化三角形的方法来解决裂缝问题。退化三角形的三个顶点在一个直线上,所以它的面积为0,如图10所示,假设内部正方形某边上有7个顶点:0、1、2、3、4、5、6,则覆盖这条边的退化三角形有三个,分别为:021、243、465。
在民航飞行模拟机的视景当中,客机万米高空可视觉范围常常可以达到上百千米远,为了满足这一特性,Geometry Clipmap算法在实现的过程中,使用多层的GeometryClipmap网格。但是在飞行模拟中,视点在高空或者高速运动时,内层的高精度网格会显得多余,而且会因为分辨率过高而产生闪烁现象,并且,高空或者高速运动时观察一个物体,经常会损失物体的细节信息,这也是人眼视觉的特点。通过人眼这一特点出发,也为了加快绘制渲染的速度,基于Geometry Clipmap算法选择性的隐藏精细层来加快视景地形的渲染效率,具体如下:
当视点在高空或高速运动时,取消绘制内层的高精度网格,其对GeometryClipmap网格进行层次隐藏,设定层次隐藏满足的公式为2.5*h>length,h为当前视点距离地面的高度,length为某层Geometry Clipmap网格物理长度或宽度间的较大值。
同时由于飞机飞行高度降低时,所看到的视景范围也会减小,根据这一特性,为了有效降低绘制开销,本实施例中设置Geometry Clipmap算法当前可现实Geometry Clipmap网格的最多层数为7层,最少层数为4层。
考虑到民用客机的飞行路线比较平滑,一半以上的时间都是水平向前飞行,航向角和俯仰角的变化也比较温和,对于Geometry Clipmap网格来说,会有一半以上的区域处在看不见的位置,所以,在方法中提出了一种简化的视椎体剪裁方案,使其在进入GPU的片元着色器之间先进行视椎体剪裁,可以避免绘制不可见物体,降低了渲染开销。
如图11所示,在各层Geometry Clipmap网格使用视椎体剪裁技术,当飞机和水平线间的俯仰角小于-20度时,不进行视椎体剪裁工作;当俯仰角大于-20度时,针对90度的视野范围,首先将视线角度按照范围分组,再预先存储各组视线角度所需要绘制的块号,然后在顶点着色器中快速的做出选择,加快渲染效率;其中最内层Geometry Clipmap网格不进行视椎体剪裁工作。
如下表所示,视线角度被分为8组,各组范围内需要显示的块号如下:
视线角度范围 | 可视块号 |
[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 |
为了尽可能的降低顶点信息更新的频率,在本方案中,Geometry Clipmap算法使用了分层的方法,将地形网格划分成嵌套的多层金字塔形式的三角形网格,但是当一层网格需要更新时,其内层网格也会随之发生更新,为了解决这一问题,避免影响地形绘制效率,以提高纹理数据传输的速度:
每层Geometry Clipmap网格均设计两个纹理数据缓冲池,一个位于GPU显存中,一个位于CPU内存中;
在GPU显存中的缓冲池,为了提前加载下一步可能使用到的纹理数据,每层Geometry Clipmap网格均设置一个附加的1536*1536的纹理,附加的纹理能够存储36张256*256的纹理数据:如图12所示,针对当前Geometry Clipmap网格使用的纹理,将下一步可能用到的1-36张的纹理数据全部存储到附加的纹理中,当前Geometry Clipmap网格纹理需要更新时,使用附加的纹理替换原有的纹理;这一步的操作时完全在GPU显存中进行的,GPU的显存带宽可以达到上百GB/s,能够满足这一步的操作要求。
在CPU内存中的缓冲池,用于将下一步需要的纹理提前从计算机硬盘读取到CPU内存中去,并选定时间上传到GPU显存中的缓冲池,如图13所示,具体流程如下:
(1)当GPU的缓冲池标志为0时,等待时间t后,CPU计算下一层可能使用到的纹理数据,提前加载到CPU内存中;
(2)等待时间t1,CPU上传内存缓冲池至GPU显存缓冲池中,置GPU缓冲池标志为1,再重复上述步骤(1)。
GPU显存缓冲池的设计使得Geometry Clipmap网格纹理更新时,不必和计算机硬盘、内存间进行数据交互,规避了数据从硬盘-GPU传输的问题。当一层Geometry Clipmap网格的GPU缓冲池使用完之后,等待一个合适的时间t后,CPU从计算机硬盘读取当前GeometryClipmap网格下一步可能用到的36张纹理数据,将它们提前拼接成1536*1536的纹理,并存放于计算机内存中,再等待一个合适的时间t1,将这张拼接后的纹理上传至GPU显存缓冲池中。t和t1的取值和网格层数有关,等待时间t可以预防多层网格同时读取计算机硬盘,时间t1可以预防多层网格CPU内存缓冲池同步上传的问题。根据本方法进行实验,最精细层网格的最快更新速率约为2s一次,在这个2s的时间内,有足够的时间从计算机硬盘中寻找到36张地形和高程纹理,并加载到GPU显存缓冲池中。
通过上述两个纹理数据缓冲池的层层分解,一次Geometry Clipmap网格纹理的更新操作被分成三个离散的操作:读硬盘、数据上传GPU、GPU纹理替换。而且多层网格纹理需要同时更新时,只有GPU显存中纹理替换这一步操作是同时进行的,而读硬盘、数据上传GPU这两个操作被分配在合适的时间段错开进行,有效的保证了地形绘制的效率。
本方法最大限度地发挥了Geometry Clipmap算法的GPU友好性,将大量的计算转移到GPU上进行。还针对Geometry Clipmap的网格结构进行优化,调整优化网格L形区域的更新变化策略,降低算法复杂度。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
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算法的二者统一,使其正确地显示地球纹理图像,具体流程如下:
(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网格代替,将GeometryClipmap网格每个边的顶点数均设定为2n-1;
第19部分为包围整个Geometry Clipmap网格的退化三角形,消除内外两层GeometryClipmap网格顶点无法一一对应而产生裂缝的现象。
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算法当前显示GeometryClipmap网格的最多层数为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张的纹理数据全部存储到附加的纹理中,当前GeometryClipmap网格纹理需要更新时,使用附加的纹理替换原有的纹理;
在CPU内存中的缓冲池,用于将下一步需要的纹理提前从计算机硬盘读取到CPU内存中去,并选定时间上传到GPU显存中的缓冲池。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911087567.6A CN110852952B (zh) | 2019-11-08 | 2019-11-08 | 一种基于gpu的大规模地形实时绘制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911087567.6A CN110852952B (zh) | 2019-11-08 | 2019-11-08 | 一种基于gpu的大规模地形实时绘制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110852952A true CN110852952A (zh) | 2020-02-28 |
CN110852952B CN110852952B (zh) | 2023-07-14 |
Family
ID=69600082
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911087567.6A Active CN110852952B (zh) | 2019-11-08 | 2019-11-08 | 一种基于gpu的大规模地形实时绘制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110852952B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111494944A (zh) * | 2020-04-22 | 2020-08-07 | 浙江无端科技股份有限公司 | 一种地形纹理加载方法及相关装置 |
CN111667572A (zh) * | 2020-05-12 | 2020-09-15 | 中国科学院软件研究所 | 一种毫秒级实时的大规模动态地形绘制方法 |
CN113269882A (zh) * | 2021-06-04 | 2021-08-17 | 福建天晴在线互动科技有限公司 | 一种基于虚拟纹理的地形渲染方案及系统 |
CN114494562A (zh) * | 2022-01-20 | 2022-05-13 | 北京中航双兴科技有限公司 | 用于地形渲染的数据处理方法和装置 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050253843A1 (en) * | 2004-05-14 | 2005-11-17 | Microsoft Corporation | Terrain rendering using nested regular grids |
US7324117B1 (en) * | 2004-03-29 | 2008-01-29 | Nvidia Corporation | Method and apparatus for using non-power of two dimension texture maps |
CN101261743A (zh) * | 2007-10-19 | 2008-09-10 | 北京航空航天大学 | 一种基于规则网格的大规模地形漫游模拟方法 |
CN101593361A (zh) * | 2009-06-25 | 2009-12-02 | 北京航空航天大学 | 一种基于双层嵌套网格的大规模地形绘制系统 |
CN102737097A (zh) * | 2012-03-30 | 2012-10-17 | 北京峰盛博远科技有限公司 | 基于lod透明纹理的三维矢量实时动态叠加技术 |
CN102867331A (zh) * | 2012-08-31 | 2013-01-09 | 电子科技大学 | 面向gpu的大规模地形快速绘制方法 |
CN102890829A (zh) * | 2011-10-24 | 2013-01-23 | 克拉玛依红有软件有限责任公司 | 一种基于gpu的渲染地形的方法 |
US20130114910A1 (en) * | 2010-06-29 | 2013-05-09 | Fittingbox | Method for compressing/decompressing a three-dimensional mesh |
US20140152664A1 (en) * | 2012-11-30 | 2014-06-05 | Thales | Method of rendering a terrain stored in a massive database |
CN103903274A (zh) * | 2014-04-22 | 2014-07-02 | 四川川大智胜软件股份有限公司 | 一种小半径大曲率畸变曲面投影校正融合的方法 |
CN105336003A (zh) * | 2015-09-28 | 2016-02-17 | 中国人民解放军空军航空大学 | 结合gpu技术实时流畅绘制出三维地形模型的方法 |
CN106780698A (zh) * | 2016-12-23 | 2017-05-31 | 深圳市刑天科技开发有限公司 | 基于图形处理器加速的地形渲染方法 |
CN109064556A (zh) * | 2018-08-10 | 2018-12-21 | 四川大学 | 一种面向isr的地貌高精度仿真建模系统 |
-
2019
- 2019-11-08 CN CN201911087567.6A patent/CN110852952B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7324117B1 (en) * | 2004-03-29 | 2008-01-29 | Nvidia Corporation | Method and apparatus for using non-power of two dimension texture maps |
US20050253843A1 (en) * | 2004-05-14 | 2005-11-17 | Microsoft Corporation | Terrain rendering using nested regular grids |
CN101261743A (zh) * | 2007-10-19 | 2008-09-10 | 北京航空航天大学 | 一种基于规则网格的大规模地形漫游模拟方法 |
CN101593361A (zh) * | 2009-06-25 | 2009-12-02 | 北京航空航天大学 | 一种基于双层嵌套网格的大规模地形绘制系统 |
US20130114910A1 (en) * | 2010-06-29 | 2013-05-09 | Fittingbox | Method for compressing/decompressing a three-dimensional mesh |
CN102890829A (zh) * | 2011-10-24 | 2013-01-23 | 克拉玛依红有软件有限责任公司 | 一种基于gpu的渲染地形的方法 |
CN102737097A (zh) * | 2012-03-30 | 2012-10-17 | 北京峰盛博远科技有限公司 | 基于lod透明纹理的三维矢量实时动态叠加技术 |
CN102867331A (zh) * | 2012-08-31 | 2013-01-09 | 电子科技大学 | 面向gpu的大规模地形快速绘制方法 |
US20140152664A1 (en) * | 2012-11-30 | 2014-06-05 | Thales | Method of rendering a terrain stored in a massive database |
CN103903274A (zh) * | 2014-04-22 | 2014-07-02 | 四川川大智胜软件股份有限公司 | 一种小半径大曲率畸变曲面投影校正融合的方法 |
CN105336003A (zh) * | 2015-09-28 | 2016-02-17 | 中国人民解放军空军航空大学 | 结合gpu技术实时流畅绘制出三维地形模型的方法 |
CN106780698A (zh) * | 2016-12-23 | 2017-05-31 | 深圳市刑天科技开发有限公司 | 基于图形处理器加速的地形渲染方法 |
CN109064556A (zh) * | 2018-08-10 | 2018-12-21 | 四川大学 | 一种面向isr的地貌高精度仿真建模系统 |
Non-Patent Citations (4)
Title |
---|
CAO HUANG: "A practical updating background method in moving target detection", pages 2322 - 2324 * |
ZHENG GUPING: "Real-Time Terrain Rendering Based on Geometry Clipmap", pages 593 - 595 * |
宋歌: "基于细分着色的飞行仿真地形建模方法", pages 197 - 204 * |
王振武 等: "基于四叉树分割的地形LOD技术综述", pages 34 - 45 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111494944A (zh) * | 2020-04-22 | 2020-08-07 | 浙江无端科技股份有限公司 | 一种地形纹理加载方法及相关装置 |
CN111667572A (zh) * | 2020-05-12 | 2020-09-15 | 中国科学院软件研究所 | 一种毫秒级实时的大规模动态地形绘制方法 |
CN113269882A (zh) * | 2021-06-04 | 2021-08-17 | 福建天晴在线互动科技有限公司 | 一种基于虚拟纹理的地形渲染方案及系统 |
CN113269882B (zh) * | 2021-06-04 | 2023-09-08 | 福建天晴在线互动科技有限公司 | 一种基于虚拟纹理的地形渲染方法及系统 |
CN114494562A (zh) * | 2022-01-20 | 2022-05-13 | 北京中航双兴科技有限公司 | 用于地形渲染的数据处理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110852952B (zh) | 2023-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110852952B (zh) | 一种基于gpu的大规模地形实时绘制方法 | |
US6747649B1 (en) | Terrain rendering in a three-dimensional environment | |
US20170090460A1 (en) | 3D Model Generation From Map Data | |
US20170091993A1 (en) | 3D Model Generation From Map Data and User Interface | |
US9171402B1 (en) | View-dependent textures for interactive geographic information system | |
CN102289845B (zh) | 一种三维模型绘制方法以及装置 | |
CN107452048A (zh) | 全局光照的计算方法及装置 | |
US7098915B2 (en) | System and method for determining line-of-sight volume for a specified point | |
US9123160B1 (en) | Concurrent mesh generation in a computer simulation | |
CN110908510B (zh) | 一种倾斜摄影建模数据在沉浸式显示设备中的应用方法 | |
TW200926060A (en) | Geospatial modeling system providing user-selectable building shape options and related methods | |
KR101591427B1 (ko) | 3차원 지형 영상 가시화에서의 적응형 렌더링 방법 | |
CN113593027B (zh) | 一种三维航电显控界面装置 | |
Okura et al. | Mixed-reality world exploration using image-based rendering | |
JP2010541050A (ja) | インペインティング及び誤り算出の構成を備えた地球空間モデリング・システム及び関連した方法 | |
CN115690336A (zh) | 一种卫星波束覆盖区域可视化方法、服务器及存储介质 | |
US9147283B1 (en) | Water surface visualization during a simulation | |
CN115760667A (zh) | 一种弱约束条件下3D WebGIS视频融合方法 | |
US9401044B1 (en) | Method for conformal visualization | |
CN110866964A (zh) | 一种gpu加速的椭球裁剪图地形渲染方法 | |
CN111798364B (zh) | 一种基于全景预烘焙的快速渲染方法及视景成像系统 | |
CN112330806B (zh) | 一种基于低功耗硬件平台的视景合成方法及系统 | |
CN105931286A (zh) | 三维视景仿真gis地理信息系统中的地形阴影实时仿真方法 | |
US10275939B2 (en) | Determining two-dimensional images using three-dimensional models | |
JP2007041692A (ja) | 三次元地形データ制御装置及び三次元地形データ制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |