CN110852952B - 一种基于gpu的大规模地形实时绘制方法 - Google Patents

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

Info

Publication number
CN110852952B
CN110852952B CN201911087567.6A CN201911087567A CN110852952B CN 110852952 B CN110852952 B CN 110852952B CN 201911087567 A CN201911087567 A CN 201911087567A CN 110852952 B CN110852952 B CN 110852952B
Authority
CN
China
Prior art keywords
texture
grid
image
gpu
terrain
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.)
Active
Application number
CN201911087567.6A
Other languages
English (en)
Other versions
CN110852952A (zh
Inventor
黄操
季玉龙
陈怀歆
张婷婷
吴志红
王一
周思源
龚昱宁
罗子奇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sichuan University
Original Assignee
Sichuan University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sichuan University filed Critical Sichuan University
Priority to CN201911087567.6A priority Critical patent/CN110852952B/zh
Publication of CN110852952A publication Critical patent/CN110852952A/zh
Application granted granted Critical
Publication of CN110852952B publication Critical patent/CN110852952B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformation in the plane of the image
    • G06T3/40Scaling the whole image or part thereof
    • G06T3/4038Scaling the whole image or part thereof for image mosaicing, i.e. plane images composed of plane sub-images
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/50Image enhancement or restoration by the use of more than one image, e.g. averaging, subtraction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20021Dividing image into blocks, subimages or windows
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20112Image segmentation details
    • G06T2207/20132Image cropping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20212Image combination
    • G06T2207/20221Image fusion; Image merging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30181Earth observation
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02ATECHNOLOGIES FOR ADAPTATION TO CLIMATE CHANGE
    • Y02A90/00Technologies having an indirect contribution to adaptation to climate change
    • Y02A90/10Information and communication technologies [ICT] supporting adaptation to climate change, e.g. for weather forecasting or climate simulation

Abstract

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

Description

一种基于GPU的大规模地形实时绘制方法
技术领域
本发明属于计算机图形学技术领域,尤其涉及一种基于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算法的二者统一,使其正确地显示地球纹理图像,具体流程如下:
(1)获取当前视点的准确经纬度位置P0(θ,
Figure BDA0002265892570000031
)及其世界坐标系下的位置P0(x,y,z);利用以下公式计算出P0点的地心坐标系位置为(x0,y0,z0):
Figure BDA0002265892570000032
Figure BDA0002265892570000033
Figure BDA0002265892570000034
Figure BDA0002265892570000035
公式中,a代表地球长半轴,b代表地球短半轴,θ为纬度,
Figure BDA0002265892570000036
为经度,h为当前位置海拔高度;
(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(θ,
Figure BDA0002265892570000091
)及其世界坐标系下的位置P0(x,y,z);利用以下公式计算出P0点的地心坐标系位置为(x0,y0,z0):
Figure BDA0002265892570000092
Figure BDA0002265892570000093
Figure BDA0002265892570000094
Figure BDA0002265892570000095
公式中,a代表地球长半轴,b代表地球短半轴,θ为纬度,
Figure BDA0002265892570000096
为经度,h为当前位置海拔高度;
(2)以视点为中心绘制Geometry Clipmap网格,并确定Geometry Clipmap网格中各点的纹理坐标;
(3)根据当前视点的经纬度位置,计算出Geometry Clipmap网格上各点的形变后的世界坐标;如图6中,对Geometry Clipmap网格上点P11
Figure BDA0002265892570000097
),再由上述公式顺序计算出其他地心坐标系位置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 (8)

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

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 CN110852952A (zh) 2020-02-28
CN110852952B true 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)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111494944A (zh) * 2020-04-22 2020-08-07 浙江无端科技股份有限公司 一种地形纹理加载方法及相关装置
CN111667572A (zh) * 2020-05-12 2020-09-15 中国科学院软件研究所 一种毫秒级实时的大规模动态地形绘制方法
CN113269882B (zh) * 2021-06-04 2023-09-08 福建天晴在线互动科技有限公司 一种基于虚拟纹理的地形渲染方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101593361A (zh) * 2009-06-25 2009-12-02 北京航空航天大学 一种基于双层嵌套网格的大规模地形绘制系统
CN102737097A (zh) * 2012-03-30 2012-10-17 北京峰盛博远科技有限公司 基于lod透明纹理的三维矢量实时动态叠加技术

Family Cites Families (11)

* Cited by examiner, † Cited by third party
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
US7436405B2 (en) * 2004-05-14 2008-10-14 Microsoft Corporation Terrain rendering using nested regular grids
CN101261743B (zh) * 2007-10-19 2010-12-01 北京航空航天大学 一种基于规则网格的大规模地形漫游模拟方法
FR2961930B1 (fr) * 2010-06-29 2013-01-04 Fittingbox Procede de compression / decompression de maillage tridimensionnel
CN102890829B (zh) * 2011-10-24 2015-05-27 克拉玛依红有软件有限责任公司 一种基于gpu的渲染地形的方法
CN102867331A (zh) * 2012-08-31 2013-01-09 电子科技大学 面向gpu的大规模地形快速绘制方法
FR2999005B1 (fr) * 2012-11-30 2022-06-10 Thales Sa Procede de rendu d'un terrain stocke dans une base de donnees massive
CN103903274B (zh) * 2014-04-22 2016-09-21 四川川大智胜软件股份有限公司 一种小半径大曲率畸变曲面投影校正融合的方法
CN105336003B (zh) * 2015-09-28 2018-05-25 中国人民解放军空军航空大学 结合gpu技术实时流畅绘制出三维地形模型的方法
CN106780698A (zh) * 2016-12-23 2017-05-31 深圳市刑天科技开发有限公司 基于图形处理器加速的地形渲染方法
CN109064556B (zh) * 2018-08-10 2022-07-08 四川大学 一种面向isr的地貌高精度仿真建模系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101593361A (zh) * 2009-06-25 2009-12-02 北京航空航天大学 一种基于双层嵌套网格的大规模地形绘制系统
CN102737097A (zh) * 2012-03-30 2012-10-17 北京峰盛博远科技有限公司 基于lod透明纹理的三维矢量实时动态叠加技术

Also Published As

Publication number Publication date
CN110852952A (zh) 2020-02-28

Similar Documents

Publication Publication Date Title
US6747649B1 (en) Terrain rendering in a three-dimensional environment
US9041711B1 (en) Generating reduced resolution textured model from higher resolution model
US20170090460A1 (en) 3D Model Generation From Map Data
CN110852952B (zh) 一种基于gpu的大规模地形实时绘制方法
US20170091993A1 (en) 3D Model Generation From Map Data and User Interface
CN102289845B (zh) 一种三维模型绘制方法以及装置
US8466915B1 (en) Fusion of ground-based facade models with 3D building models
CN110908510B (zh) 一种倾斜摄影建模数据在沉浸式显示设备中的应用方法
US20060066608A1 (en) System and method for determining line-of-sight volume for a specified point
CN107220372B (zh) 一种三维地图线要素注记自动放置方法
US9123160B1 (en) Concurrent mesh generation in a computer simulation
KR101591427B1 (ko) 3차원 지형 영상 가시화에서의 적응형 렌더링 방법
CN113593027B (zh) 一种三维航电显控界面装置
CN115690336A (zh) 一种卫星波束覆盖区域可视化方法、服务器及存储介质
CN107170040A (zh) 一种三维桥梁场景构建方法和装置
CN110310367A (zh) 基于大场景实景三维多角度2.5d影像轻量级浏览方法
CN110866964A (zh) 一种gpu加速的椭球裁剪图地形渲染方法
JP2007041692A (ja) 三次元地形データ制御装置及び三次元地形データ制御方法
CN114140593B (zh) 数字地球和全景图融合显示方法和装置
US10275939B2 (en) Determining two-dimensional images using three-dimensional models
Crues et al. Digital Lunar Exploration Sites (DLES)
JP3024666B2 (ja) 高々度撮影々像の三次元表示映像生成方法および生成システム
CN112734924B (zh) 一种路基边坡实景三维模型可视化建模方法
CN114494563B (zh) 航拍视频在数字地球上的融合显示方法和装置
CN115760667A (zh) 一种弱约束条件下3D WebGIS视频融合方法

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