CN111667572A - 一种毫秒级实时的大规模动态地形绘制方法 - Google Patents
一种毫秒级实时的大规模动态地形绘制方法 Download PDFInfo
- Publication number
- CN111667572A CN111667572A CN202010397280.XA CN202010397280A CN111667572A CN 111667572 A CN111667572 A CN 111667572A CN 202010397280 A CN202010397280 A CN 202010397280A CN 111667572 A CN111667572 A CN 111667572A
- Authority
- CN
- China
- Prior art keywords
- resolution
- value
- block
- terrain
- roughness
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/05—Geographic models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/04—Indexing scheme for image data processing or generation, in general involving 3D image data
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Remote Sensing (AREA)
- Computer Graphics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明公开了一种毫秒级实时的大规模动态地形绘制方法,其步骤包括:1)高程更新:对于虚拟环境中地形的高程数据变化区域内每一分辨率r的分辨率块b,计算块b下需要修改分辨率块粗糙度d2值的网格范围;如果r是最高分辨率,则对于需要修改d2值的每一块b,计算块b的d2值;如果r不是最高分辨率,则计算该块b的d2值以及与相关块的d2值,将d2最大值作为该块b的d2值;2)纹理更新:计算动态变化地形的图像范围并对齐,从libMini库中获取最高分辨率图像数据;然后对图像进行解压缩和修改后重新压缩;最后使用修改后的最高分辨率图像创建待处理虚拟环境中其他所有区域的图像,完成虚拟环境的绘制。
Description
技术领域
本发明属于地形可视化领域,具体涉及基于libMini毫秒级自底向上实时的动态地形绘制算法,该算法包括动态地形高程更新算法和纹理更新两项技术。
背景技术
地理信息系统、虚拟战场环境、模拟训练系统、室外场景游戏等多种应用中都需要地形可视化功能。许多静态地形可视化算法已经发表,如实时连续细节级绘制算法、递进网格算法、实时优化自适应网格算法(ROAM)和基于大规模地形的视相关快速实时生成算法。随着各种仿真应用对实时交互、仿真各实体实时交互作用和高逼真度实时虚拟环境构设需求的日益提高,动态地形实时可视化的研究变得越来越重要。
本发明主要针对动态地形可视化算法的研究。在战场模拟或其他情况下,由于三维模型与地形的相互作用,地形的高程数据和图像数据都会发生变化,例如,爆炸会迫使地面塌陷,暴露出与地面外观不同的深层土壤,从而限制车辆在现场的移动。为了解决这个问题,无数专家学者发明了一些动态地形绘制的方法。
Robert描述了一个地面模型,并解释了动画中的角色是如何使这些地面变形的。但是他们的地面模拟模型是一个基于统一分辨率的高度场,不能扩展到大规模的地形场景。
Shamir提出了一种多分辨率动态网格算法,该算法主要针对复杂的几何对象而不是大规模地形。他们使用有向无环图(DAG)来表示层次结构,并在对象在时间步上发生变形时更新DAG,形成T-DAG。这种相对昂贵的T-DAG更新限制了对对象的在线修改。
通过对ROAM的扩展和DEXTER(动态分辨率扩展)的使用,研究人员He提出了一种动态地形可视化算法。但其方法结合了地形变形的假特性,没有考虑地形的物理模型。他们只处理相对较小规模的地形。他们的地形被划分为不同的区域,但没有处理区域之间的连续性。
最近,Cai等人基于ROAM实现了一种在战场环境中绘制弹坑的动态地形方法,但没有解决该方法如何在实时环境中平滑运行的问题。Shiben利用现代GPU的强大功能,开发了一个大型地形实时绘制和操作系统,他们的系统在1024×1024块上实现了250微秒的地形变形。然而,该系统性能只能在GPU的帮助下才能达到,成本很高。
Reetlger等人提出了一种新的层次细节(LOD,Level of Detail)技术并形成了开源的libMini地形渲染库,虚拟地形工程并在开源地形软件(Virtual Terrain Project,VTP)中得到了应用,取得了很好的效果。但是,该库在处理动态地形时需要重复在预处理阶段时所做的大量计算,消耗了大量时间,从而无法满足实时性需求。
发明内容
针对上述问题,本发明目的是提供一种基于libMini库毫秒级自底向上实时的动态地形绘制方法,该方法主要包括高程更新和纹理更新。通过借鉴局部更新的思想,有效利用了原有计算数据,正确的局部更新了计算数据,减少了在地形动态变化时大量的重复计算;为了增加仿真的真实感,更新地理纹理来进行纹理贴图,更生动形象的表现了动态地形变化,实现了良好的LOD连续性和渲染效果,并在VTP和AquaNox游戏中得到了很好的应用。
本发明采取的技术方案是:
一种毫秒级实时的大规模动态地形绘制方法,其步骤包括:
1)对虚拟环境中地形进行高程更新:对于虚拟环境中地形的高程数据变化区域内每一分辨率r的分辨率块b,计算该分辨率块b下需要修改分辨率块粗糙度d2值的网格范围;如果当前分辨率r是该高程数据变化区域内的最高分辨率,则对于需要修改粗糙度d2值的每一个分辨率块b,计算该分辨率块b的粗糙度d2值;如果当前分辨率r不是该高程数据变化区域内的最高分辨率,则计算该分辨率块b的粗糙度d2值以及与该分辨率块b相关的高分辨率块的粗糙度d2值,将所得最大粗糙度d2值作为该分辨率块b的粗糙度d2值;
2)对虚拟环境中地形进行纹理更新:计算虚拟场景中高程更新后动态变化地形的图像范围,并将其对齐,从libMini库中获取属于该对齐图像范围内的最高分辨率图像数据;然后对对齐后的图像进行解压缩,并根据动态地形模型对解压缩后的图像像素进行修改;然后将修改后的数据重新压缩成libMini库可识别的格式;最后使用修改后的最高分辨率图像创建待处理虚拟环境中其他所有区域的图像,并使用修改后的数据完成虚拟环境的绘制。
进一步的,对虚拟环境中地形进行高程更新时,首先对高程数据变化区域内的分辨率块进行排序,然后每次从高程数据变化区域内取出变化区域内最低分辨率块bmin作为当前的分辨率块b。
进一步的,如果当前分辨率r是该高程数据变化区域内的最高分辨率,则对于需要修改粗糙度d2值的每一个分辨率块b,则根据公式计算该分辨率块b的粗糙度d2值;如果当前分辨率r不是该高程数据变化区域内的最高分辨率,则根据公式计算该分辨率块b的粗糙度d2值以及与该分辨率块b相关的高分辨率块的粗糙度d2值,将所得最大粗糙度d2值作为该分辨率块b的粗糙度d2值;其中,d是当前分辨率下网格的边长,dhi是第i个差值,所述差值包括网格四边的端点高程平均值与中点高程之差、网格两条对角线的端点高程平均值与中点高程之差。
进一步的,计算虚拟场景中高程更新后动态变化地形的图像范围,并将其对齐,以确保其宽度和高度均为n的倍数;其中n为一个分块最多所跨分块的个数。
进一步的,n大于或等于4。
一种服务器,其特征在于,包括存储器和处理器,所述存储器存储计算机程序,所述计算机程序被配置为由所述处理器执行,所述计算机程序包括用于执行上述任一所述方法中各步骤的指令。
本发明基于libMini库毫秒级自底向上实时的动态地形绘制方法,在更新高程方面流程如图8所示。首先,根据数学模型计算出虚拟环境中地形的高程数据变化区域内所有分辨率块的粗糙度d2(the roughness of the block)。其次,取出变化区域内最低分辨率块bmin并检查与该最低分辨率块bmin相关的所有高分辨率块,将最低分辨率块bmin以及与该最低分辨率块bmin相关的所有高分辨率块构成一分辨率块集合。
然后,调用bottom-up algorithm算法用于更新块b的粗糙度d2值。bottom-upalgorithm算法为:对于变化区域内每一个分辨率块b(分辨率为r),计算该分辨率块b下需要修改d2值的网格范围;如果r是最高分辨率,对于需要修改d2值的每一个块b,根据公式(2)计算b的d2值;如果r不是最高分辨率,根据公式(2)计算块b的d2值和影响块b的12个块的d2值,将此13个都值的最大值赋予块b的d2值。迭代这一过程直至变化区域内每一个分辨率块被更新完毕。
网格分裂的依据是网格到视点的距离和粗糙度(roughness),其计算公式如下,当f<1时进行分裂:
其中,l是网格到视点的距离,d2糙度(roughness),d是当前分辨率下网格的边长,C和c都是经验常量,dhi是网格四边和两条对角线的端点高程平均值与中点高程之差(参考文献Stefan Roettger,Wolfgang Heidrich,Philipp Slusallek,and Hans-PeterSeidel.Real-Time Generation of Continuous Levels of Detail for HeightFields.V.Skala,editor,Proc.WSCG'98,1998:pages 315-322),如图1所示。
基于d2值传播规律,通过对与低分辨率块相关的所有高分辨率块的简单检查过程,可以推断出低分辨率块的d2值仅受12个高分辨率块的影响。如图2所示:通过检查CDGH块周围的高分辨率块,其d2值受以下A'K'KC,K'B'DK,DD'LI',LG'GI',GNMM',MH'HM',HF'J'J,JJ'CE',CKIJ,KDI'I,II'GM',JIM'H块的d2值的影响。一般情况如图3所示。
地形动态变化时,纹理通常情况下都需要修改,例如弹坑爆炸时,需要把原来的纹理颜色改为焦土色。LibMini是以OpenGL为基础进行渲染的,因此本专利在OpenGL中处理纹理的方法基础上提出基于libMini库毫秒级自底向上实时的动态地形绘制更新纹理算法,流程如下:
(1)首先,计算虚拟场景中高程更新后动态变化地形的纹理修改范围,并将其对齐,以确保其宽度和高度都是4的倍数(更新纹理时需要考虑跨分块情况,一个分块最多跨四个分块,所以对齐后,图像范围宽度和高度是4的倍数,至少为4),并从libMini库中获取属于该对齐范围内的最高分辨率图像数据。
(2)第二步是对对齐后的图像调用OpenGL的glTexImage2D函数进行解压缩,并使用glGetCompressedTexImageARB函数来获取压缩后的数据,然后对这块数据进行解码,生成RGB数据,并根据需要调整的目标RGB数值对RGB数据进行修改。如弹坑爆炸时,需要把原来的纹理颜色改为焦土色,就是根据需要调整RGB数值,使原来纹理颜色的RGB改为焦土色的RGB数值。
(3)第三步是将修改后的数据重新压缩成libMini库可以识别的格式。
(4)最后,使用修改后的最高分辨率图像创建其他较低分辨率的图像(即利用修改后的最高分辨率图像创建待处理虚拟环境中其他所有区域的图像),并根据当前运行时LOD将修改后的图像数据重新加载到内存中,完成虚拟环境的绘制。整个过程如图4所示。
根据上面的纹理更新流程,总结出以下步骤来更新地形图像:1)计算所有分幅的受影响区域;2)对齐区域;3)从所有分幅中收集最高分辨率的图像数据;4)对其进行解压缩;5)然后将解压缩的数据合并到一个图像中根据动态地形模型对整幅图像进行修改;6)将整幅图像分成n个部分;7)对每个部分进行压缩;8)重新计算低分辨率图像;9)最后对图像进行重新渲染。
本发明的有益效果是:
本发明针对地形的高程数据和图像数据都会发生变化的情况下,建立能够快速高效地在变化的数据中实时建立动态地形绘制的智能模型。
附图说明
图1为dhi的计算图;
(a)网格俯视图,(b)dh的定义;
图2为影响CDGH块的d2值的所有块示意图;
图3为确定低分辨率块ABCD的d2值的所有12个高分辨率块的d2值示意图;
图4为图像交叉处理图;
图5为保持主要高程值不变示意图;
图6为火山口的交线示意图;
图7为a Cross-4-tile Crater高程更新效果图;
图8为本发明方案流程图。
具体实施方式
下面结合附图和发明内容进一步提供本发明的实施例。
基于本发明方法开发了基于VTP和libMini的软件产品,该产品包括输入模块,数据-模型转化模块,更新模块,可视化模块,下面是具体的操作过程。
(1)用户通过所述输入接口libMini API来获取变化地形的最高分辨率高程数据。
(2)软件产品通过所述数据-模型转化模块将数据转化为相应的陨石坑模型。模型参数由四元组<位置,方向,半径,深度>定义,其中位置表示陨石坠落的位置,方向表示陨石坑轨迹的方向,半径和深度分别表示陨石坑的半径和深度。纵剖面与火山口高程平面相交的交线如图5所示。这张图上的数字代表了距陨石坑中心点的距离。如果陨石坑的半径是r,那么数字2的含义是2r。
(3)软件产品通过所述更新模块,是指按照基于毫秒级自底向上实时libMini的动态地形绘制算法对陨石坑的高程和纹理进行更新。
(4)调用可视化模块显示更新结果。图6显示cross-4-tile陨石坑的高程是如何更新的。
图7显示了更新后的陨石坑图像。为了更清楚,一个块图像留空,火山口是减轻和标记mainly khaki。
将本发明的基于libMini库毫秒级自底向上实时的动态地形绘制算法与libMini库自带的算法进行效能对比,在算法的准确性上,由于都采用了d2值传递等价性,结果与libMini算法结果应保持一致。具体验证方法为:当地形动态变化后,调用本文所述算法局部更新d2值,把计算结果保存于一个二维数组中,然后再调用libMini中原有算法重新计算全部也值并将计算结果保存于另一个二维数组中,最后比较两个二维数组中的值。比较结果表明:两个二维数组完全相同。在统计算法运行时间时,采用本文算法通过50次计算(给出了前5次计算时间)取平均值得1.27毫秒,而采用libMini中原有算法重新计算整个地形的d2值所用时间取平均值为2521毫秒,时间比大约为1:2000。从表1可以看出,本发明在保持准确性的前提下具有高效性,搜索时间远远小于重复搜索方法。
表1为效果对比表
本发明针对在战场模拟中地形的高程数据和图像数据都会发生变化的情况下,建立能够快速高效地在变化的数据中实时建立动态地形绘制的智能模型,融合动态平铺地形绘制过程中产生的孔洞和缝隙。
本发明未详细阐述部分属于本领域技术人员的公知技术。
Claims (7)
1.一种毫秒级实时的大规模动态地形绘制方法,其步骤包括:
1)对虚拟环境中地形进行高程更新:对于虚拟环境中地形的高程数据变化区域内每一分辨率r的分辨率块b,计算该分辨率块b下需要修改分辨率块粗糙度d2值的网格范围;如果当前分辨率r是该高程数据变化区域内的最高分辨率,则对于需要修改粗糙度d2值的每一个分辨率块b,计算该分辨率块b的粗糙度d2值;如果当前分辨率r不是该高程数据变化区域内的最高分辨率,则计算该分辨率块b的粗糙度d2值以及与该分辨率块b相关的高分辨率块的粗糙度d2值,将所得最大粗糙度d2值作为该分辨率块b的粗糙度d2值;
2)对虚拟环境中地形进行纹理更新:计算虚拟场景中高程更新后动态变化地形的图像范围,并将其对齐,从libMini库中获取属于该对齐图像范围内的最高分辨率图像数据;然后对对齐后的图像进行解压缩,并根据动态地形模型对解压缩后的图像像素进行修改;然后将修改后的数据重新压缩成libMini库可识别的格式;最后使用修改后的最高分辨率图像创建待处理虚拟环境中其他所有区域的图像,并使用修改后的数据完成虚拟环境的绘制。
2.如权利要求1所述的方法,其特征在于,对虚拟环境中地形进行高程更新时,首先对高程数据变化区域内的分辨率块进行排序,然后每次从高程数据变化区域内取出变化区域内最低分辨率块bmin作为当前的分辨率块b。
5.如权利要求1所述的方法,其特征在于,计算虚拟场景中高程更新后动态变化地形的图像范围,并将其对齐,以确保其宽度和高度均为n的倍数;其中n为一个分块最多所跨分块的个数。
6.如权利要求1所述的方法,其特征在于,n大于或等于4。
7.一种服务器,其特征在于,包括存储器和处理器,所述存储器存储计算机程序,所述计算机程序被配置为由所述处理器执行,所述计算机程序包括用于执行权利要求1至6任一所述方法中各步骤的指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010397280.XA CN111667572A (zh) | 2020-05-12 | 2020-05-12 | 一种毫秒级实时的大规模动态地形绘制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010397280.XA CN111667572A (zh) | 2020-05-12 | 2020-05-12 | 一种毫秒级实时的大规模动态地形绘制方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111667572A true CN111667572A (zh) | 2020-09-15 |
Family
ID=72383348
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010397280.XA Pending CN111667572A (zh) | 2020-05-12 | 2020-05-12 | 一种毫秒级实时的大规模动态地形绘制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111667572A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20100073916A (ko) * | 2008-12-23 | 2010-07-01 | 인하대학교 산학협력단 | 사진트리 기반의 지형 시각화 방법에 있어서 그래픽처리유닛을 이용한 크랙 제거 방법 |
CN110852952A (zh) * | 2019-11-08 | 2020-02-28 | 四川大学 | 一种基于gpu的大规模地形实时绘制方法 |
US20200129862A1 (en) * | 2018-10-26 | 2020-04-30 | Electronics Arts Inc. | Terrain generation system |
-
2020
- 2020-05-12 CN CN202010397280.XA patent/CN111667572A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20100073916A (ko) * | 2008-12-23 | 2010-07-01 | 인하대학교 산학협력단 | 사진트리 기반의 지형 시각화 방법에 있어서 그래픽처리유닛을 이용한 크랙 제거 방법 |
US20200129862A1 (en) * | 2018-10-26 | 2020-04-30 | Electronics Arts Inc. | Terrain generation system |
CN110852952A (zh) * | 2019-11-08 | 2020-02-28 | 四川大学 | 一种基于gpu的大规模地形实时绘制方法 |
Non-Patent Citations (3)
Title |
---|
张敏等: "基于LOD纹理映射的三维场景实时渲染技术", 《闽江学院学报》 * |
杨凯等: "基于libMini的动态地形实时渲染算法", 《计算机仿真》 * |
王冬等: "基于GPU的动态地形实时可视化", 《计算机工程与应用》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101137107B1 (ko) | 그래픽 처리 유닛을 사용해 기계 학습 기술들의 처리를가속화하고 최적화하는 시스템 및 방법 | |
CN111127615A (zh) | 一种三维模型的数据调度方法、装置及电子设备 | |
Feng et al. | A parallel algorithm for viewshed analysis in three-dimensional Digital Earth | |
KR20080018404A (ko) | 게임 제작을 위한 배경 제작 프로그램을 저장한 컴퓨터에서읽을 수 있는 기록매체 | |
KR100959349B1 (ko) | 그래픽스 처리 유닛을 이용한 사진트리 기반의 지형 렌더링 방법을 가속화하는 방법 | |
KR100935886B1 (ko) | 그래픽스 처리 유닛을 이용한 사진트리 기반의 지형 렌더링 방법 | |
Zha et al. | A real-time global stereo-matching on FPGA | |
CN107170040A (zh) | 一种三维桥梁场景构建方法和装置 | |
CN117280387A (zh) | 用于光线和路径追踪的位移微网格 | |
CN114359269A (zh) | 基于神经网络的虚拟食品盒缺陷生成方法及系统 | |
CN110544318A (zh) | 一种基于显示窗口的场景分辨率的海量模型加载方法 | |
Lee et al. | Geometry splitting: an acceleration technique of quadtree-based terrain rendering using GPU | |
Dyken et al. | Semi‐Uniform Adaptive Patch Tessellation | |
CN111402422B (zh) | 三维表面重建方法、装置和电子设备 | |
CN115836317A (zh) | 增量三元组索引压缩 | |
CN110838167B (zh) | 模型的渲染方法、装置和存储介质 | |
CN112843700A (zh) | 地形图像的生成方法、装置、计算机设备和存储介质 | |
KR100937795B1 (ko) | 컴퓨터를 이용한 3차원 이미지의 형상화 처리방법 | |
CN111667572A (zh) | 一种毫秒级实时的大规模动态地形绘制方法 | |
Lee et al. | Bimodal vertex splitting: Acceleration of quadtree triangulation for terrain rendering | |
US10593111B2 (en) | Method and apparatus for performing high throughput tessellation | |
JPH10334054A (ja) | 並列画像生成方法とそのためのデータ分割手法 | |
González et al. | Combining displacement mapping methods on the GPU for real-time terrain visualization | |
JPH10198823A (ja) | 映像生成装置 | |
US7268788B2 (en) | Associative processing for three-dimensional graphics |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200915 |
|
RJ01 | Rejection of invention patent application after publication |