CN101976468A - 一种多分辨率动态地形可视化方法及系统 - Google Patents

一种多分辨率动态地形可视化方法及系统 Download PDF

Info

Publication number
CN101976468A
CN101976468A CN 201010523323 CN201010523323A CN101976468A CN 101976468 A CN101976468 A CN 101976468A CN 201010523323 CN201010523323 CN 201010523323 CN 201010523323 A CN201010523323 A CN 201010523323A CN 101976468 A CN101976468 A CN 101976468A
Authority
CN
China
Prior art keywords
landform
flag
terrain block
node
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.)
Granted
Application number
CN 201010523323
Other languages
English (en)
Other versions
CN101976468B (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.)
Institute of Software of CAS
Original Assignee
Institute of Software of CAS
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 Institute of Software of CAS filed Critical Institute of Software of CAS
Priority to CN201010523323A priority Critical patent/CN101976468B/zh
Publication of CN101976468A publication Critical patent/CN101976468A/zh
Application granted granted Critical
Publication of CN101976468B publication Critical patent/CN101976468B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Processing Or Creating Images (AREA)

Abstract

本发明提供了一种多分辨率地形可视化方法及系统,该方法包括预处理原始地形数据,将原始地形数据存入地形顶点数组;建立四叉树标记数组,其大小与地形顶点数组相同;并根据地形块误差为标记数组中的元素赋值,从而生成隐式四叉树;检查并修改隐式限制四叉树标记数组中会出现裂缝的标记值,消除地形模型中出现的裂缝;根据标记数组中的元素的标记值渲染地形块,生成表示地形的多分辨率三角形网格模型;对生成的三角形网格进行纹理贴图,生成可视化地形。本发明方法的隐式限制四叉树结构具有占用存储空间小和遍历速度快等优点,本发明构建的动态地形可视化系统可以实时处理大规模的动态改变的地形数据集。

Description

一种多分辨率动态地形可视化方法及系统
技术领域
本发明涉及一种新的多分辨率动态地形可视化方法和系统,属于计算机图形学领域中虚拟现实与仿真学科分支。
背景技术
地形可视化是一门研究数字地形模型(Digital Terrain Model,DTM)或数字高程模型(Digital Elevation Model,DEM)的表示、简化和显示等内容的学科,属于计算机图形学的一个分支。动态地形可视化是指对地形表面在动态地形可视化系统运行时所发生的动态变化(如弹坑、车辙等由于地形场景中物体与地面相互作用而产生的地表的动态形变以及纹理等属性的变化)进行仿真建模,从而真实地表现地形场景。目前,动态地形可视化技术在地理信息系统、游戏、模拟军事训练、飞行训练等很多领域都有广泛的应用。
与普通三维物体相比,地形建模需要处理数量庞大的输入数据;另一方面,为了表现真实的地形场景,地形不同部分对绘制的精度要求也存在很大差别。因此,从1976年James Clark提出离散的细节层次(Level of Detail,简称LOD)模型以后,针对地形数据的多分辨率LOD建模一直是研究的热点。根据多分辨率地形可视化算法所处理的数据集的不同,可以将地形可视化算法分为两大类:
1.非规则三角形网格结构(Triangulated Irregular Networks,简称TINs)
基于非规则三角形网格结构的地形可视化算法利用层次化结构的三角形剖分表示多分辨率地形。适合非规则三角形网格结构的地形模型简化方法主要有:
a)顶点聚合(Vertex Clustering)
b)面元聚合
c)顶点消去
d)边收缩(Edge Collapse)
e)顶点对收缩(Vertex Pair Contraction)
基于非规则三角形网格结构的地形建模方法可以用较少的三角形表现比较逼真的绘制效果,还可以较方便地优化网格形状,实现对原始地形数据的压缩。
但是以上基于非规则三角形网格结构的方法与连续LOD建模较难融和,处理时所用数据结构消耗内存较大,而且计算量较大,灵活性差,效率较低。由于需要存储顶点的位置坐标,所以在进行碰撞检测计算时比较困难,而且不适于进行动态地形可视化方向的扩展。
2.规则网格结构(Regular Square Grid,简称RSG)
基于规则网格结构的多分辨率地形可视化算法多采用二叉树或四叉树表示地形的层次结构。适合规则网格结构的地形简化算法主要有:
a)多边形金字塔建模法
b)基于四叉树的地形简化算法
c)基于二叉树的地形简化算法
d)聚类三角化方法(基于GPU的地形建模法)
基于规则网格结构的多分辨率地形可视化方法易于剪裁和自顶向下简化,方便碰撞检测计算,处理速度快,可以用简单紧凑的结构表示地形数据,方便处理动态地形。
但是,在相同的渲染精度下,基于规则网格结构的地形表示方法中所需顶点数、三角形数目比TINs方法多。
动态地形的可视化方法面临的挑战除了上面提到的大规模的输入数据集与地形的多分辨率表示之外,对方法的实时性也有很高的要求。但是,目前流行的多分辨率地形可视化方法由于大多采用指针操作表示地形网格中的顶点以及四叉树或二叉树的节点,在处理大规模的动态改变的地形数据集时很难达到令用户满意的实时性的交互要求。
发明内容
针对以上问题,本发明提出了一种新的基于绘制标记数组的隐式限制四叉树方法实现对大规模动态地形的仿真建模,并提供了一种用于实现该方法的系统。
为了实现本发明的目的之一,采用的技术方案如下:
一种多分辨率地形可视化方法,其步骤包括:
1)预处理原始地形数据,将原始地形数据存入地形顶点数组;
2)建立四叉树标记数组,其大小与地形顶点数组相同;并根据地形块误差为标记数组中的元素赋值,从而生成隐式四叉树;表示隐式限制四叉树的标记数组中每个元素有三种标记,分别为Node_Flag,Leaf_Flag和Unknown,其中,Node_Flag表示其在四叉树中所对应的节点是非叶子节点;Leaf_Flag表示其在四叉树中所对应的节点是叶子节点;Unknown是标记数组元素的初始值;
3)检查并修改隐式限制四叉树标记数组中会出现裂缝的标记值,消除地形模型中出现的裂缝;
4)根据标记数组中的元素的标记值渲染地形块,生成表示地形的多分辨率三角形网格模型;
5)对生成的三角形网格进行纹理贴图,生成可视化地形。
所述步骤2)中四叉树标记数组中元素位置与四叉树中各级节点之间的对应关系如下:
对于输入大小为n×n=(2k+1)×(2k+1)的地形块,设
Figure BSA00000322761100031
则对应于四叉树中第l(0≤l≤k-1)层中节点的四叉树标记数组中的元素的集合为Ml={mij|i,j∈{dl,3dl,...,(2α-1)dl},1≤α≤2l∧α∈N}。
所述步骤2)通过计算当前地形块的精度,得出当前地形块对应的元素的取值:若精度不满足误差限制,则当前地形块需要继续分割,标记当前地形块对应的元素为Node_Flag;若满足误差限制,则当前地形块不需要继续分割,标记当前地形块对应的元素为Leaf_Flag。
所述步骤3)消除地形模型中出现的裂缝的方法为:遍历隐式限制四叉树,检查标记数组中是否出现下述情况:
标记为Node_Flag的地形块,其相邻的同级地形块的标记为Unknown;
若出现,则将该标记为Unknown的地形块的父地形块的标记置为Node_Flag,将该标记为Unknown的地形块及其另外三个同级兄弟地形块的标记同时置为Leaf_Flag。
所述步骤4)若该地形块对应标记数组中的元素的标记为Leaf_Flag,则直接渲染该地形块;若该地形块的标记为Node_Flag,则检查其子地形块的标记。
所述步骤4)根据视点位置和方向对不在视线范围内的地形块进行裁剪。
当地形信息需要改变时,根据输入的参数生成地表形变模型,并在顶点数组中修改地形受地表形变模型所影响区域的高度值。
为了实现本发明的另一目的,采用的技术方案如下:
一种多分辨率地形可视化系统,包括预处理模块、四叉树生成与更新模块、裂缝检查与修复模块、三角形网格生成模块,所述预处理模块用于读取原始地形数据并将其存入地形顶点数组;所述四叉树生成与更新模块调用顶点数组的数据生成二维隐式限制四叉树标记数组;表示隐式限制四叉树的标记数组中每个元素有三种标记,分别为Node_Flag,Leaf_Flag和Unknown,其中,Node_Flag表示其在四叉树中所对应的节点是非叶子节点;Leaf_Flag表示其在四叉树中所对应的节点是叶子节点;Unknown是标记数组元素的初始值;所述裂缝检查与修复模块用于检查二维隐式限制四叉树标记数组中会出现裂缝的标记值;所述三角形网格生成模块用于根据标记数组中的元素的标记值渲染地形块,生成表示地形的多分辨率三角形网格;纹理贴图模块用于对生成的三角形网格进行纹理贴图,生成可视化地形场景。
上述系统还包括一地表形变模型生成模块,用于当地形信息需要改变时,根据输入的参数生成与参数相匹配的地表形变模型,并根据模型所生成的形变量修改地形受地表形变模型所影响区域的高度值。
与现有技术相比,本发明使用二维标记数组隐式地表示四叉树的结构,并设计了隐式限制四叉树的生成与更新算法、地形模型中裂缝检查与修复算法和地形网格生成算法,由于隐式限制四叉树结构具有占用存储空间小和遍历速度快等优点,该动态地形可视化系统可以实时处理大规模的动态改变的地形数据集。
附图说明
图1动态地形可视化体系结构示意图;
图2位于不同细节层次的地形网格中顶点的依赖关系示意图;其中,(a)表示点A依赖于点B和点C,(b)表示点A1,A2,A3,A4都依赖于点O;
图3渲染地形块北面三角形的示意图,其中,(a)、(b)、(c)、(d)分别表示渲染的不同的三角形;
图4渲染地形块南面三角形的示意图,其中,(a)、(b)、(c)、(d)分别表示渲染的不同的三角形;
图5渲染地形块东面三角形的示意图,其中,(a)、(b)、(c)、(d)分别表示渲染的不同的三角形;
图6渲染地形块西面三角形的示意图,其中,(a)、(b)、(c)、(d)分别表示渲染的不同的三角形。
具体实施方式
以下结合附图和具体实施方式详细说明本发明的方法和系统的结构。
动态地形可视化系统结构示意图如图1所示,包括预处理模块、四叉树生成与更新模块、裂缝检查与修复模块、三角形网格生成模块、纹理贴图模块。由于地形的多分辨率网格表示是整个地形可视化体系结构的核心,因此,表示不同地形块精度的四叉树的生成与更新以及表示多分辨率地形模型的三角形网格生成是决定地形可视化体系结构的效率的核心操作。基于二维数组的隐式限制四叉树由于具备存储结构紧密,占用存储空间小而且查询和遍历速度快等优点,可以极大地提高地形可视化体系结构的性能,使其可以实时地处理和表现地形的动态变化。
输入的地形数据经过预处理模块处理以后存入可以直接访问的地形顶点数组中,由四叉树生成与更新模块根据地形顶点数组中的数据以及预先设定的视点、地形起伏、误差等限制条件对表示四叉树的标记数组进行遍历和更新,生成隐式的限制四叉树结构(文献[1]“谭兵,徐青,马东洋。用约束四叉树实现地形的实时多分辨率绘制[J]。计算机辅助设计与图形学学报,2003,15(3):270-276”的2.3和2.4节介绍了误差的计算方法与根据误差建立四叉树的方法。简单来说,就是距离观察者即视点较近的区域,根据近大远小的原理,所需的精度比距离观察者较远的区域要高;地形起伏大的区域,所需的精度比平坦的区域要高;误差限制是指在构造四叉树之前先确定一个误差范围,如果根据文献[1]中的误差计算方法——当然这只是一种计算误差的方法,其他的方法与之相似——得到的当前地形区域的误差值大于之前给定的误差范围,则说明当前的地形块所需的精度还没有达到,需要对该地形块进一步细分);之后,为了避免因为相邻地形块之间分辨率相差过大而导致地形的近似模型中出现裂缝,裂缝检查与修复模块处理标记数组,对四叉树标记数组进行遍历,修改出现裂缝的地形块的标记值,生成无裂缝的四叉树标记数组;然后,根据四叉树标记数组,三角形网格生成模块将经过预处理的地形输入数据建模成多分辨率地形模型。对生成的三角形网格进行纹理贴图,最终生成带纹理的地形模型;以上过程循环进行,直到退出;另外,如果地形的拓扑结构发生动态改变,则由动态模型生成模块根据输入的参数生成特定的地表形变模型(如弹坑、车辙等),同时修改地表形变模型所影响到的地形顶点数组中的值。
以上介绍了地形可视化系统的结构,以下详细描述地形可视化方法。
1、首先输入的地形数据经过预处理模块处理以后存入可以直接访问的地形顶点数组中;
2、生成二维隐式限制四叉树;
a)标记数组的逻辑结构
表示隐式限制四叉树的标记数组中每个元素有三种取值,分别定义为Node_Flag,Leaf_Flag和Unknown。其中,Node_Flag表示与该元素对应的地形块尚未达到渲染标准,需要继续划分,其在四叉树中所对应的节点是非叶子节点;Leaf_Flag表示与该元素对应的地形块已经达到了渲染标准,不需要继续划分,其在四叉树中所对应的节点是叶子节点;Unknown是标记数组元素的初始值,表示目前尚未访问到该元素。
为了明确四叉树标记数组中元素位置与四叉树中各级节点之间的对应关系,提出了一种递推公式,定义如下:
对于输入大小为n×n=(2k+1)×(2k+1)的地形块,设
Figure BSA00000322761100061
则对应于四叉树中第l(0≤l≤k-1)层中节点的四叉树标记数组中的元素的集合为
Ml={mij|i,j∈{dl,3dl,...,(2α-1)dl},1≤α≤2l∧α∈N}
b)具体算法
输入:当前地形块对应的标记数组元素下标(x,z)和当前地形块的边长的一半width。
算法伪代码:
Update_quadtree(int x,int z,int width)
{
  int width2=width/2;
  计算当前地形块的精度;
  if((width>1)&&(精度不满足误差限制))//当前地形块可以而且需要继续分割
  {
      Matrix(x,z)=Node_Flag;//标记当前地形块对应的元素为Node_Flag
      //标记其四个子地形块对应的元素为Leaf_Flag
      Matrix(x-width2,z-width2)=Leaf_Flag;
      Matrix(x+width2,z-width2)=Leaf_lag;
      Matrix(x+width2,z+width2)=Leaf_Flag;
      Matrix(x-width2,z+width2)=Leaf_Flag;
      //递归遍历该地形块的四个子地形块
      Update_quadtree(x-width2,z-width2,width2);
      Update_quadtree(x+width2,z-width2,width2);
      Update_quadtree(x+width2,z+width2,width2);
      Update_quadtree(x-width2,z+width2,width2);
  }
  else
  {
     if((width==1)&&(精度不满足误差限制))
        Matrix(x,z)=Node_Flag;
    else
        Matrix(x,z)=Leaf_Flag;
  }
}
3、地形模型中裂缝检查与修复
a)裂缝出现的充要条件
裂缝是指由于相邻的两个地形块之间的分辨率差异过大(超过两级)而使生成的地形网格模型中出现了采样点与其相邻的连线之间无法正确匹配的问题。文献[2](参见文献[2]P.Lindstrom,D.Koller,W.Ribarsky,L.F.Hodges,N.Faust,and G.A.Turner.“Real-time,continuous level of detail rendering of height fields”.In ProceedingsSIGGRAPH 96,pages 109-118.ACM SIGGRAPH,1996.)介绍了地形网格模型中顶点的依赖关系,只有满足顶点依赖关系的地形网格才不会出现裂缝。图2中显示了顶点之间的依赖关系,即如果要添加位于地形块中心的顶点A,则必须满足该地形块两个角点B和C的高度已经确定;如果要添加位于地形块的边的中点处的点A1,A2,A3和A4,则需要与该点相邻的两个地形块的中心点的高度都已经确定。
由顶点依赖关系的定义可知,满足顶点依赖的地形网格中,处于地形外边界上的点只依赖于其所属地形块的中心顶点;处于地形内部的每个顶点都依赖于其他两个顶点,且这两个被依赖的顶点位于相同分辨率的地形分块中。在图2(a)中,点A依赖于点B和点C,图2(b)中点A1,A2,A3,A4都依赖于点O。
定理1:在基于四叉树标记数组的动态地形多分辨率可视化方法中,出现裂缝的充分必要条件是:
地形块A的标记为Node_Flag;
且与A相邻的同级地形块B的标记为Leaf_Flag或Unknown;
且地形块A中与B相邻的两个子地形块的标记分别为(Node_Flag,Leaf_Flag)或(Leaf_Flag,Node_Flag)或(Node_Flag,Node_Flag)。
证明:通过依次检查地形块A,A的相邻同级地形块以及A的子地形块的不同标记取值组合可以证明该定理。
当A的标记为Leaf_Flag或Unknown时,地形可视化体系结构的绘制模块将不会在地形块A的范围内添加中心点或边点,因此此时不会出现依赖性不满足的顶点;
当A的标记为Node_Flag时,由地形的生成算法可知可能出现的不能满足依赖性的顶点只有位于A块与B块相邻边界中点处的顶点M,因此,通过检查A的同级相邻地形块B以及A的与B相邻的子地形块的标记情况,即可确定是否引入M点以及M点的依赖性是否满足,详见表1。
表1地形块A中引入顶点的依赖性讨论
Figure BSA00000322761100081
综上,定理1成立,证明完成。
定理2:在基于四叉树标记数组的动态地形多分辨率可视化方法中,出现裂缝的充分必要条件是存在标记为Node_Flag的地形块,其相邻的同级地形块的标记为Unknown。
证明:根据定理1,要证明定理2成立,只需证明命题“地形块A的标记为Node_Flag;且与A相邻的同级地形块B的标记为Leaf_Flag或Unknown;且地形块A中与B相邻的两个子地形块的标记分别为(Node_Flag,Leaf_Flag)或(Leaf_Flag,Node_Flag)或(Node_Flag,Node_Flag)”是命题“存在标记为Node_Flag的地形块,其相邻的同级地形块的标记为Unknown”的充分必要条件。
设定理中所描述的标记为Node_Flag的地形块为O1,与其相邻的标记为Unknown的同级地形块为O2,则由于O1有相邻的同级地形块,因此,O1一定有父地形块,同理,O2也有父地形块;又由于O1的标记为Node_Flag而O2的标记为Unknown,因此O1与O2不属于同一个父地形块,因此可设O1为地形块A的子块,O2为地形块B的子块,则,
充分性:∵O1的标记为Node_Flag且O1是A的与B相邻的子地形块
∴A的标记为Node_Flag
∴A的子地形块的标记为Node_Flag或Leaf_Flag
∴A的与B相邻的两个子地形块的标记分别为(Node_Flag,Leaf_Flag)或(Leaf_Flag,Node_Flag)或(Node_Flag,Node_Flag)
∵O2的标记为Unknown且O2是B的子地形块
∴B的标记为Unknown或Leaf_Flag
充分性成立;
必要性:∵地形块A的标记为Node_Flag且地形块A中与B相邻的两个子地形块的标记分别为(Node_Flag,Leaf_Flag)或(Leaf_Flag,Node_Flag)或(Node_Flag,Node_Flag)
∴A的与B相邻的子地形块中存在标记为Node_Flag的地形块
∵地形块B的标记为Unknown或Leaf_Flag
∴B的子地形块的标记都是Unknown
∴存在标记为Node_Flag的地形块,其相邻的同级地形块的标记为Unknown必要性成立。
综上,定理2成立,证明完成。
由定理1和定理2可知,在地形模型中进行裂缝的检查和修复只需深度遍历隐式限制四叉树,检查标记数组中是否出现“存在标记为Node_Flag的地形块,其相邻的同级地形块的标记为Unknown”的情况;若出现,则将该标记为Unknown的地形块(设为O2)的父地形块的标记置为Node_Flag,将O2及其另外三个同级兄弟地形块的标记同时置为Leaf_Flag即可。
b)裂缝检查与修复算法
输入:当前地形块对应的标记数组元素下标(x,z)和当前地形块的边长的一半width。
算法伪代码:
Verify_dependency(int x,int z,int width)
{
   int width2=width/2;
   if(width>=1)
   {
       if(Matrix(x,z)==NodeFlag)
       {
           //处理地形块北面的点
           if((该地形块不是最北面的点)&&(Matrix(x,z-width*2)==Unknown))
           {//处理出现裂缝的情况
              修改Matrix(x,z-width*2)所对应的块的父地形块的标记值为Node_Flag;
              修改Matrix(x,z-width*2)及其三个同级兄弟地形块的标记值为Leaf_Flag;
            }
            //南面、西面和东面的情况与北面相似,在此不再一一列举
            ...
       }//end of if(Matrix(x,z)==NodeFlag)
       else
           return;
       if(width>1)
       {//检查四个子地形块
          Verify_dependency(x-width2,z-width2,width2);
          Verify_dependency(x+width2,z-width2,width2);
          Verify_dependency(x+width2,z+width2,width2);
          Verify_dependency(x-width2,z+width2,width2);
       }//end of if(width>1)
    }//end of if(width>=1)
}
4、生成多分辨率三角形网格
四叉树标记数组是渲染地形网格的重要依据。对地形块进行渲染,要检查该地形块所对应的标记,根据其标记选择适当的处理方式:若该地形块的标记为Leaf_Flag,则直接渲染该地形块;若该地形块的标记为Node_Flag,则检查其子地形块的标记。
网格渲染也是一个递归的操作。在递归过程中,仅对隐式限制四叉树进行一次深度优先遍历即可完成对整个地形的绘制。
在地形生成过程中,为了提高整体性能,根据视点位置和方向等裁剪参数对不在视线范围内的地形块进行裁剪(文献[3]“赵友兵,石教英,周骥,等。一种大规模地形的快速漫游算法[J]。计算机辅助设计与图形学学报,2002,14(7):624-628”和文献[4]“Duchaineau M,Wolinsky M,Sigeti D E,et al.ROAMing terrain:real-time optimally adapting meshes[C]//Proceedings IEEE Visualization′97.IEEE Computer Society Press,1997:81-88”中都提到了裁剪的介绍)。简单说来,绘制地形场景与用相机拍照类似。对一个大的地形场景而言,我们所关注的只是镜头所能拍摄到的区域。如果将整个地形都进行建模和绘制,所需的计算量很大,效率相对较低,而如果只绘制镜头能够拍摄到的部分区域,计算量就会大大减小,从而可以提高绘制效率。本发明所涉及的裁剪算法,就是一种计算镜头的“拍摄范围”的方法。
a)具体过程
图3~图6分别列举了在绘制地形北面,南面,东面和西面的三角形网格时可能出现的几种情况,在此仅就绘制地形块北面的情况进行详细阐述,其他三个方向的绘制方法与北面的绘制方法相同。
●当前地形块的东北、西北方向的子地形块标记都为Leaf_Flag时,若该地形块是最北面的地形块,或者该地形块所北邻的同级地形块的标记不为Node_Flag时,渲染如图3(a)所示的三角形;
●当前地形块的东北、西北方向的子地形块标记都为Leaf_Flag时,若该地形块不是最北面的地形块且该地形块所北邻的同级地形块的标记为Node_Flag时,渲染如图3(b)所示的三角形;
●当前地形块西北方向的子地形块标记为Leaf_Node,而东北方向的子地形块标记不是Leaf_Node时,渲染如图3(c)所示的三角形;
●当前地形块东北方向的子地形块标记为Leaf_Node,而西北方向的子地形块标记不是Leaf_Node时,渲染如图3(d)所示的三角形。
b)地形生成算法
输入:当前地形块对应的标记数组元素下标(x,z)和当前地形块的边长的一半。
算法伪代码:
Draw_mesh(int x,int z,int width)
{
  int width2=width/2;
  if(width>=1)
  {
      if(当前的地形块标记为Node_Flag)
      {
         //绘制地形北面的三角形
         if((width==1)||(东北、西北方向的子地形块标记都为Leaf_Flag))
         {
             if((当前地形块在最北面)||(当前地形块北面的同级块标记为Leaf_Flag))
                 画如图3(a)所示的三角形;
             else//当前地形块不在最北面且其北面的同级地形块标记为Node_Flag
                 画如图3(b)所示的三角形;
         }
         else if((width>1)&&(西北方向的子地形块标记为Leaf_Flag))
              画如图3(c)所示的三角形;
          else if((width>1)&&(东北方向的子地形块标记为Leaf_Flag))
               画如图3(d)所示的三角形;
          //绘制地形南面、西面和东面的三角形的方法与绘制北面三角形方法类似
          ...
      }//end of if(当前的地形块标记为Node_Flag)
      else//若标记为Leaf_Flag或Unknown
          return;
      //处理四个子地形块
      //半边长为1的地形块的子块不需要继续处理,因此不参与子地形块递归
      if(width>1)
      {
         Draw_mesh(x-width2,z-width2,width2);
         Draw_mesh(x+width2,z-width2,width2);
         Draw_mesh(x+width2,z+width2,width2);
         Draw_mesh(x-width2,z+width2,width2);
      }//end of if(width>1)
   }//end of if(width>=1)
}
5、对生成的三角形网格进行纹理贴图,生成可视化地形。
本发明地形可视化的方法不但保留了传统四叉树算法的优点,而且可以通过简单的数组下标操作完成四叉树的创建与遍历,大大提高了算法的效率;另外,该方法采用的标记数组中每个元素仅占2位,对大规模的地形数据而言,所需的存储空间至少可以减少108倍,大大降低了存储需求,有利于大规模地形可视化系统在普通配置的计算机上的应用。

Claims (9)

1.一种多分辨率地形可视化方法,其步骤包括:
1)预处理原始地形数据,将原始地形数据存入地形顶点数组;
2)建立四叉树标记数组,其大小与地形顶点数组相同;并根据地形块误差为标记数组中的元素赋值,从而生成隐式四叉树;表示隐式限制四叉树的标记数组中每个元素有三种标记,分别为Node_Flag,Leaf_Flag和Unknown,其中,Node_Flag表示其在四叉树中所对应的节点是非叶子节点;Leaf_Flag表示其在四叉树中所对应的节点是叶子节点;Unknown是标记数组元素的初始值;
3)检查并修改隐式限制四叉树标记数组中会出现裂缝的标记值,消除地形模型中出现的裂缝;
4)根据标记数组中的元素的标记值渲染地形块,生成表示地形的多分辨率三角形网格模型;
5)对生成的三角形网格进行纹理贴图,生成可视化地形。
2.如权利要求1所述的方法,其特征在于,所述步骤2)中四叉树标记数组中元素位置与四叉树中各级节点之间的对应关系如下:
对于输入大小为n×n=(2k+1)×(2k+1)的地形块,设
Figure FSA00000322761000011
则对应于四叉树中第l(0≤l≤k-1)层中节点的四叉树标记数组中的元素的集合为
Ml={mij|i,j∈{dl,3dl,...,(2α-1)dl},1≤α≤2l∧α∈N}。
3.如权利要求1所述的方法,其特征在于,所述步骤2)通过计算当前地形块的精度,得出当前地形块对应的元素的取值:若精度不满足误差限制,则当前地形块需要继续分割,标记当前地形块对应的元素为Node_Flag;若满足误差限制,则当前地形块不需要继续分割,标记当前地形块对应的元素为Leaf_Flag。
4.如权利要求1所述的方法,其特征在于,所述步骤3)消除地形模型中出现的裂缝的方法为:遍历隐式限制四叉树,检查标记数组中是否出现下述情况:
标记为Node_Flag的地形块,其相邻的同级地形块的标记为Unknown;
若出现,则将该标记为Unknown的地形块的父地形块的标记置为Node_Flag,将该标记为Unknown的地形块及其另外三个同级兄弟地形块的标记同时置为Leaf_Flag。
5.如权利要求1所述的方法,其特征在于,所述步骤4)若该地形块对应标记数组中的元素的标记为Leaf_Flag,则直接渲染该地形块;若该地形块的标记为Node_Flag,则检查其子地形块的标记。
6.如权利要求1所述的方法,其特征在于,所述步骤4)根据视点位置和方向对不在视线范围内的地形块进行裁剪。
7.如权利要求1所述的方法,其特征在于,当地形信息需要改变时,根据输入的参数生成地表形变模型,并在顶点数组中修改地形受地表形变模型所影响区域的高度值。
8.一种多分辨率地形可视化系统,其特征在于,包括预处理模块、四叉树生成与更新模块、裂缝检查与修复模块、三角形网格生成模块,所述预处理模块用于读取原始地形数据并将其存入地形顶点数组;所述四叉树生成与更新模块调用顶点数组的数据生成二维隐式限制四叉树标记数组;表示隐式限制四叉树的标记数组中每个元素有三种标记,分别为Node_Flag,Leaf_Flag和Unknown,其中,Node_Flag表示其在四叉树中所对应的节点是非叶子节点;Leaf_Flag表示其在四叉树中所对应的节点是叶子节点;Unknown是标记数组元素的初始值;所述裂缝检查与修复模块用于检查二维隐式限制四叉树标记数组中会出现裂缝的标记值;所述三角形网格生成模块用于根据标记数组中的元素的标记值渲染地形块,生成表示地形的多分辨率三角形网格;纹理贴图模块用于对生成的三角形网格进行纹理贴图,生成可视化地形场景。
9.如权利要求8所述的地形可视化系统,其特征在于,还包括一地表形变模型生成模块用于当地形信息需要改变时,根据输入的参数生成与参数相匹配的地表形变模型,并根据模型所生成的形变量修改地形受地表形变模型所影响区域的高度值。
CN201010523323A 2010-10-22 2010-10-22 一种多分辨率动态地形可视化方法及系统 Expired - Fee Related CN101976468B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201010523323A CN101976468B (zh) 2010-10-22 2010-10-22 一种多分辨率动态地形可视化方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201010523323A CN101976468B (zh) 2010-10-22 2010-10-22 一种多分辨率动态地形可视化方法及系统

Publications (2)

Publication Number Publication Date
CN101976468A true CN101976468A (zh) 2011-02-16
CN101976468B CN101976468B (zh) 2012-09-19

Family

ID=43576350

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201010523323A Expired - Fee Related CN101976468B (zh) 2010-10-22 2010-10-22 一种多分辨率动态地形可视化方法及系统

Country Status (1)

Country Link
CN (1) CN101976468B (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102074050A (zh) * 2011-03-01 2011-05-25 哈尔滨工程大学 大规模地形绘制的分形多分辨率简化方法
CN103035023A (zh) * 2012-11-29 2013-04-10 广东电网公司电力科学研究院 三维gis地形渲染方法和系统
CN106327577A (zh) * 2016-08-17 2017-01-11 中国地质大学(武汉) 基于局部曲率熵和四叉树结构的三维地形曲面优化方法
CN106373175A (zh) * 2016-08-29 2017-02-01 北京像素软件科技股份有限公司 一种地形高度图数据的加载方法
CN111773699A (zh) * 2020-07-20 2020-10-16 网易(杭州)网络有限公司 一种地形形变方法和装置
CN112002021A (zh) * 2020-10-30 2020-11-27 成都四方伟业软件股份有限公司 一种基于unity3d的聚合打点可视化方法及装置
CN112017286A (zh) * 2020-08-28 2020-12-01 北京国遥新天地信息技术有限公司 一种数字地球无裙边地形瓦块无缝拼接显示仿真方法
CN113066177A (zh) * 2020-01-02 2021-07-02 沈阳美行科技有限公司 一种地图数据处理方法、装置、设备及存储介质
CN113269882A (zh) * 2021-06-04 2021-08-17 福建天晴在线互动科技有限公司 一种基于虚拟纹理的地形渲染方案及系统
CN114170385A (zh) * 2021-12-10 2022-03-11 北京优锘科技有限公司 实时生成模型剖面带洞网格的方法、装置、介质和设备
CN117899474A (zh) * 2024-03-20 2024-04-19 深圳市迷你玩科技有限公司 画面渲染方法、装置、电子设备及可读介质
CN117899474B (zh) * 2024-03-20 2024-06-07 深圳市迷你玩科技有限公司 画面渲染方法、装置、电子设备及可读介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101082934A (zh) * 2007-06-19 2007-12-05 北京师范大学 网络环境下超大规模空间数据的三维可视化方法
KR100935886B1 (ko) * 2009-06-19 2010-01-07 인하대학교 산학협력단 그래픽스 처리 유닛을 이용한 사진트리 기반의 지형 렌더링 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101082934A (zh) * 2007-06-19 2007-12-05 北京师范大学 网络环境下超大规模空间数据的三维可视化方法
KR100935886B1 (ko) * 2009-06-19 2010-01-07 인하대학교 산학협력단 그래픽스 처리 유닛을 이용한 사진트리 기반의 지형 렌더링 방법

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
《proceedings SIGGRAPH 96 》 19961231 Peter Lindstorm,et al Real-time,continuous level of detail rendering of height fields 109-118 4 , 2 *
《中国体视学与图像分析》 20100925 张洁等 基于隐式限制四叉树的大规模动态地形建模与仿真方法 237-244 1-8 第15卷, 第3期 2 *
《中国图象图形学报》 20100816 余杰等 Delaunay三角网构建方法比较研究 1158-1167 第15卷, 第8期 2 *
《计算机应用研究》 20061231 殷宏等 基于限制四叉树的大规模地形可视化及其实现 151-153 1-9 , 2 *
《计算机辅助设计与图形学学报》 20030331 谭兵等 用约束四叉树实现地形的实时多分辨率绘制 270-276 1-9 , 2 *

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102074050A (zh) * 2011-03-01 2011-05-25 哈尔滨工程大学 大规模地形绘制的分形多分辨率简化方法
CN103035023A (zh) * 2012-11-29 2013-04-10 广东电网公司电力科学研究院 三维gis地形渲染方法和系统
CN103035023B (zh) * 2012-11-29 2015-09-16 广东电网公司电力科学研究院 三维gis地形渲染方法和系统
CN106327577A (zh) * 2016-08-17 2017-01-11 中国地质大学(武汉) 基于局部曲率熵和四叉树结构的三维地形曲面优化方法
CN106373175A (zh) * 2016-08-29 2017-02-01 北京像素软件科技股份有限公司 一种地形高度图数据的加载方法
CN113066177A (zh) * 2020-01-02 2021-07-02 沈阳美行科技有限公司 一种地图数据处理方法、装置、设备及存储介质
CN113066177B (zh) * 2020-01-02 2024-01-23 沈阳美行科技股份有限公司 一种地图数据处理方法、装置、设备及存储介质
CN111773699A (zh) * 2020-07-20 2020-10-16 网易(杭州)网络有限公司 一种地形形变方法和装置
CN111773699B (zh) * 2020-07-20 2023-11-17 网易(杭州)网络有限公司 一种地形形变方法和装置
CN112017286A (zh) * 2020-08-28 2020-12-01 北京国遥新天地信息技术有限公司 一种数字地球无裙边地形瓦块无缝拼接显示仿真方法
CN112002021A (zh) * 2020-10-30 2020-11-27 成都四方伟业软件股份有限公司 一种基于unity3d的聚合打点可视化方法及装置
CN113269882A (zh) * 2021-06-04 2021-08-17 福建天晴在线互动科技有限公司 一种基于虚拟纹理的地形渲染方案及系统
CN113269882B (zh) * 2021-06-04 2023-09-08 福建天晴在线互动科技有限公司 一种基于虚拟纹理的地形渲染方法及系统
CN114170385A (zh) * 2021-12-10 2022-03-11 北京优锘科技有限公司 实时生成模型剖面带洞网格的方法、装置、介质和设备
CN114170385B (zh) * 2021-12-10 2022-08-16 北京优锘科技有限公司 实时生成模型剖面带洞网格的方法、装置、介质和设备
CN117899474A (zh) * 2024-03-20 2024-04-19 深圳市迷你玩科技有限公司 画面渲染方法、装置、电子设备及可读介质
CN117899474B (zh) * 2024-03-20 2024-06-07 深圳市迷你玩科技有限公司 画面渲染方法、装置、电子设备及可读介质

Also Published As

Publication number Publication date
CN101976468B (zh) 2012-09-19

Similar Documents

Publication Publication Date Title
CN101976468B (zh) 一种多分辨率动态地形可视化方法及系统
CN103093499B (zh) 一种适用于网络传输的城市三维模型数据组织方法
CN105405166B (zh) 一种基于线性四叉树的lod模型生成方法
CN104835202A (zh) 一种三维虚拟场景快速构建方法
CN106383828B (zh) 一种绘图方法及电子设备
CN104778744A (zh) 基于Lidar数据的大规模三维森林可视化场景建立技术
CN104504742A (zh) 一种基于电子沙盘系统的三维军标标绘方法
CN111475597B (zh) 非刚性网格编码、空间对象唯一标识、查询方法及装置
CN104699946B (zh) 一种游戏场景的管理方法及装置
CN103871102A (zh) 一种基于高程点和道路轮廓面的道路三维精细建模方法
CN111028335B (zh) 一种基于深度学习的点云数据的分块面片重建方法
CN103256914B (zh) 一种基于dem计算淤地坝淹没面积的方法及系统
CN105005580B (zh) 一种用于显示水库地形的方法及其装置
CN104267940A (zh) 一种基于cpu+gpu的地图切片的快速生成方法
CN102682476B (zh) 三角网格数据的布尔运算方法及其系统
CN106294484A (zh) 一种更新电子地图数据的方法及装置
CN110111237A (zh) 一种基于Brep模型的三维模型坐标转换方法
Dyken et al. Semi‐Uniform Adaptive Patch Tessellation
CN117610354A (zh) 一种直六面体网格映射方法及装置
CN102254093B (zh) 基于泰森多边形的连通域统计相关算法
Liao et al. Grid partition variable step alpha shapes algorithm
Dou et al. An equal‐area triangulated partition method for parallel Xdraw viewshed analysis
CN116030100A (zh) 一种基于bim的高精度实景测绘系统
CN114399592A (zh) 点云空间数据的处理方法及装置
CN103927396B (zh) 利用辅助数据在三维渲染中获得三维空间信息的查找方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120919

Termination date: 20201022