一种三维模型数据的瓦片式快速加载方法与流程

文档序号:13915876阅读:4001来源:国知局
一种三维模型数据的瓦片式快速加载方法与流程

本发明属于地理空间信息系统技术领域,特别是涉及一种三维模型数据的瓦片式快速加载方法。



背景技术:

三维GIS(Geographic Information System)是目前GIS的一个重要发展方向,它能进行多分辨率、多尺度和多时空的三维场景的直观表达,在精确建模和虚拟现实等高新技术的驱动下得到了稳步的发展。建立高精度、多分辨率、多时空、多细节层次模型的三维场景产生了海量、结构复杂和多尺度的三维模型数据,使得大范围三维场景的加载显示出现卡顿、缓慢的现象。而三维场景的高效加载是最为基础和关键的技术之一,直接影响着三维技术应用的发展前景。

为了加快三维场景的显示,提高渲染效率,将三维模型数据进行简化,按照一定的规则格网分割处理为三维瓦片虽然可以有效地减少内存消耗、计算量,但是随着三维模型的增长,其瓦片数量级十分庞大,通常可达到T甚至P数量级。面对如此庞大的数据,将其全部缓存到内存中是不现实的,因此进行大范围场景的高效可视化对计算机硬件和应用软件都提出了非常高的要求。

解决三维场景的快速加载难题,对于提升大范围三维场景的漫游速度、三维场景的流畅、逼真显示和人机交互体验有着重要意义。

目前,加快三维场景数据的加载可以通过提高缓存性能来实现:

(1)利用缓存置换算法剔除缓存中最不可能使用的瓦片。

良好的缓存置换策略可在很大程度上提高三维瓦片数据的访问与传输效率,缩短访问响应时间。三种最直接的置换策略是:第一种,最近最少使用LRU(Least Recently Used),将最长时间未被访问的瓦片移除,但是可能将用户偶尔访问的瓦片保留在缓存中;第二种,最不经常使用LFU(Least Frequently Used),将总访问次数最少的瓦片移除,但是可能将前期经常访问但以后不经常访问的瓦片长期保留在缓存中;第三种,先进先出FIFO(First In First Out),将最先存储的瓦片移除,但是忽略了某一用户对特定区域长时间、高频度的访问,可能删除用户感兴趣的某一区域。此外,基于瓦片寿命和访问热度的缓存置换策略TCLEPR(Tile Cache Life TimeExcess and Popularity Replacement)将当前缓存中瓦片存活寿命超出平均缓存寿命最多的且访问热度最低的瓦片置换出缓存;面向网络GIS的最小价值空间数据缓存置换算法GDLVF(Lowest-Value First Cache Replacement for Geospatial Data)依据,[时间、访问频率、文件大小、空间数据的空间位置特征计算数据价值,移除价值最小的瓦片。但是这些方法在三维场景中只考虑了访问过的瓦片,未能考虑到预缓存数据的置换处理(文献1、2、3);

(2)利用瓦片预测策略提高缓存数据的有效性。

最为常用的瓦片预测方法是邻近区域预取,即在空闲时下载与当前浏览区域相邻的瓦片,但是只考虑了平移操作,准确率低且容易导致网络拥塞。而Markov模型对用户的浏览进行预测,其准确率可以达到70%左右。采用一个Markov链描述所有用户的浏览特征,存储转移概率矩阵的复杂度是瓦片数量的平方,而且采用高阶转移矩阵所需的存储空间还会成倍增加。多Markov链将用户分为不同类别并用不同的马尔可夫链表示不同类别用户的浏览特征,减少存储空间、提高预测准确性。邻近选择Markov链(neighborselectionmarkovchain,NSMC)用前k次瓦片移动方向作为转移状态,假定所有瓦片具有相同的转移概率,模型简单,存储开销小,但是未充分考虑空间数据组织形式和空间地物的重要性。

[文献1]涂振发,孟令奎,张文.面向网络GIS的最小价值空间数据缓存替换算法研究.华中师范大学学报(自然科学版),2012.

[文献2]褚信,蔡阳军,杜震洪.用户行为选择参与的五层十五级瓦片缓存置换策略研究.浙江大学学报(理学版),2016.

[文献3]王浩,喻占武,曾武.基于瓦片寿命和访问热度的海量空间数据缓存置换策略.武汉大学学报信息科学版,2009.



技术实现要素:

本发明目的在于针对三维模型数据由于贴图精度高、数据量大,在三维平台加载的过程中出现卡顿、显示不友好等现象,难以实现快速加载的难题,提出了一种三维模型数据的瓦片式快速加载方法,通过进行三维瓦片数据的及时、有效的缓存,提高了三维瓦片的加载效率。

本发明所采用的技术方案是:一种三维模型数据的瓦片式快速加载方法,其特征在于:包括以下步骤,

步骤1:将三维模型数据瓦片化;

步骤2:通过八叉树技术对瓦片数据进行空间组织,建立瓦片数据的空间八叉树索引,并分离瓦片的索引部分和数据部分,实现对瓦片数据的空间组织和分离存储,映射索引部分到内存以提高查询检索的性能;

步骤3:程序等待直到发生场景变换,则执行下述步骤4;若程序退出,则本流程结束;

步骤4:计算视场的锥体裁减范围,即由视场角定义的上下左右四个面和由投影矩阵定义的远近剪切平面;

步骤5:根据步骤4中的锥体裁减范围确定视锥体内部的地理范围,利用瓦片LOD原理,从八叉树根节点开始遍历,判断节点所指瓦片的精细程度是否满足分辨率的要求,确定当前视锥体范围内的八叉树节点;

步骤6:按层级从低到高遍历需要加载的瓦片信息;

步骤7:对视锥体中所需瓦片依次判断瓦片的缓存状态是否为true,缓存状态为true表明该瓦片在缓存中,为false则不在缓存中;

若是true,则请求数据在缓存中,请求数据命中,直接在缓存中读取数据,并同时更新最后访问时间、存储时间、访问次数和访问状态;

若为false,则添加对该瓦片的请求到请求队列,建立子线程加载请求的数据,并将返回的数据写入缓存,并更新该瓦片索引的访问状态、缓存状态、最后访问时间、访问次数、瓦片大小、地理范围、存储时间;

步骤8:判断是否完成遍历;

若否,并回转执行上述步骤6;

若是,则绘制并刷新视图,缓存置换删除部分瓦片,进行瓦片预测并加载,同时更新预测瓦片的索引信息;并回转执行上述步骤3。

本发明以三维场景的快速加载为目的,将三维模型进行瓦片化,通过进行八叉树组织建立索引并组成金字塔模型,提高了三维瓦片的检索效率;通过将八叉树索引映射到内存,提高三维瓦片的检索效率;通过对视场的范围进行计算,获取场景显示所需要的不同层级的三维瓦片信息;通过对缓存内的瓦片进行置换预缓存,使三维瓦片的可视化更流畅、高效。

附图说明

图1本发明实施例的总体流程图;

图2本发明实施例的八叉树组织结构图;

图3本发明实施例的瓦片索引以及数据文件结构图;

图4本发明实施例的三维瓦片加载流程图;

图5本发明实施例的三维瓦片的置换预缓存流程;

图6本发明实施例的三维瓦片的价值计算流程图。

具体实施方式

为了便于本领域普通技术人员理解和实施本发明,下面结合附图及实施例对本发明作进一步的详细描述,应当理解,此处所描述的实施示例仅用于说明和解释本发明,并不用于限定本发明。

参见图1,图4,本发明提供一种技术方案:首先将三维模型瓦片化,将三维瓦片按照八叉树结构进行组织,将索引文件和瓦片文件分别存储,本发明的重点是三维瓦片的快速加载方法,针对大量的三维瓦片的加载显示缓慢的现象探讨了利用缓存置换、缓存预测算法来减少瓦片数据的加载调用时间,使瓦片数据的显示更高效、流畅。

本发明实施例的实现过程采用计算机实现自动化处理,包括以下步骤,步骤1-步骤2属于三维模型瓦片化以及存储组织过程,步骤3-步骤8属于三维瓦片的快速加载过程。

步骤1,把三维模型数据按照全球格网剖分方法瓦片化;

步骤2,通过八叉树技术对瓦片数据进行空间组织,参见图2,每个节点指向相应的瓦片数据。通过建立瓦片数据的空间八叉树索引,并分离瓦片的索引部分和数据部分,实现对瓦片数据的空间组织和分离存储。将其索引映射到内存空间,可加速瓦片的查询检索。瓦片的查询检索通过索引数据块查询到瓦片数据在数据文件中的位置,然后由数据文件读取相应数据。索引文件由索引文件头和多个索引数据块组成,文件头包含文件标示字段和该瓦片的元信息:瓦片的地理范围、瓦片的最大层级和最小层级、瓦片的大小和0层瓦片的索引位置;索引数据块包含节点瓦片的地理范围、八个子节点的索引位置和节点瓦片数据在数据文件中的存储位置、瓦片大小、访问状态、缓存状态、最后访问时间、访问次数、存储时间。数据文件由数据文件头和多个瓦片数据块组成,文件头包含文件标示字段和关联索引文件字段等;瓦片数据块包含瓦片数据;参见图3;

步骤3:程序等待直到发生场景变换,则执行下述步骤4;若程序退出,则本流程结束;

步骤4,计算视场的锥体裁减范围,即由视场角定义的上下左右四个面和由投影矩阵定义的远近剪切平面;

步骤5,每个八叉树节点对应的瓦片有一个地理范围和层级,根据步骤4中的锥体裁减范围确定视锥体内部的地理范围,利用瓦片LOD原理,从八叉树根节点开始遍历,判断节点所指瓦片的精细程度是否满足分辨率的要求,确定当前视锥体范围内的八叉树节点。

步骤6:按层级从低到高遍历需要加载的瓦片信息;

步骤7:对视锥体中所需瓦片依次判断瓦片的缓存状态是否为true,缓存状态为true表明该瓦片在缓存中,为false则不在缓存中;

若是true,则请求数据在缓存中,请求数据命中,直接在缓存中读取数据,并同时更新最后访问时间、存储时间、访问次数和访问状态;

若为false,则添加对该瓦片的请求到请求队列,建立子线程加载请求的数据,并将返回的数据写入缓存,并更新该瓦片索引的访问状态、缓存状态、最后访问时间、访问次数、瓦片大小、地理范围、存储时间;

步骤8:判断是否完成遍历;

若否,并回转执行上述步骤6;

若是,则绘制并刷新视图,缓存置换删除部分瓦片,进行瓦片预测并加载,同时更新预测瓦片的索引信息;并回转执行上述步骤3。

本步骤通过对三维瓦片进行置换预缓存,可缩短三维瓦片的加载时间,具体流程参见图5。本发明在面向网络GIS的最小价值空间数据缓存置换算法GDLVF的基础上进行算法改进,对缓存中的瓦片数据分类并进行价值计算,流程参见图6。本发明综合考虑可视化范围与缓存中的数据对三维瓦片预测的影响进行三维瓦片预缓存。本发明置换预缓存的具体步骤如下;

步骤A.1:将缓存中的瓦片分为三类;第一类瓦片为访问过的不在视场中的瓦片,第二类瓦片为未被访问过的预缓存瓦片,第三类瓦片为视场中的正在显示的瓦片;

步骤A.2:对于第一类瓦片进行访问次数、已缓存时间、最后缓存时间,瓦片大小,与视点中心的距离的统计;本发明考虑时间、访问效率、文件大小、空间位置特征,使用价值函数计算缓存中第一类瓦片的数据价值V1(i),移除其中数据价值最小的三维瓦片;

V1(i)=Vspacial(i)*Vtime(i)*Vsize(i);

V1(i)为瓦片i的数据价值,Vspacial(i)为瓦片i的空间位置价值,Vtime(i)为瓦片i的时间价值,Vsize(i)为瓦片i的数据大小价值。

空间价值:数据距离是影响缓存置换算法的重要因素,指瓦片数据的中心点距离当前可视窗口中心点的距离,数据距离越小的数据被再次访问的可能性越大,瓦片i的空间位置价值的计算公式:

其中,D(i)为瓦片的数据距离,当0≤D(i)<1时,设定D(i)=1。

时间价值:通过假定越长时间未被访问的数据再次被访问的概率越小,越被频繁访问的数据其再次被访问的概率越大,瓦片再次被访问的概率与瓦片被访问时刻与当前时刻的时间间隔成反比,定义了瓦片i的时间价值的计算公式:

last_internal(i)=current_time-last_time;

式中,Vtime(i)为瓦片数据的时间价值,avg_access_time(i)为瓦片数据的平均访问间隔时间,last_internal(i)为瓦片的最后访问时刻与当前时刻的时间间隔;,current_time为系统当前时间,store_time(i)为瓦片首次存储时间,access_count(i)为瓦片被访问次数;current_time为系统当前时间,last_time为瓦片最后一次被访问的时间。

数据大小价值:缓存中瓦片数据大小能够影响缓存数据的数量,通常移除那些较大的数据以容纳更多的小数据,考虑到栅格影像金字塔瓦片的数据从几kb到几百kb不等,GDLVF算法使用加权数据大小代替数据大小,并提出瓦片i的数据大小价值的计算公式:

其中,Vsize(i)为瓦片数据大小价值,WDZ(i)为瓦片数据的加权数据大小,size(i)为瓦片数据大小,benchmark_size为基准数据,基准数据为缓存瓦片数据的平均值;

步骤A.3:第二类瓦片则通过获取访问次数、已缓存时间、最后缓存时间,瓦片大小,并分别计算与视点中心的距离;使用价值函数计算缓存中第二类瓦片的数据价值V2(i),移除其中数据价值最小的三维瓦片;

V2(i)=Vspacial(i)*Vsize(i),其中Vspacial(i)和Vsize(i)的计算与第一类瓦片的计算方法一致;

步骤A.4:设置预缓存前的内存临界值为maxCacheCapacity1,判断当前内存缓存的容量是否大于临界值maxCacheCapacity1,如果是,释放整个内存中瓦片缓存的N%的空间,其中0<N<100,对缓存中的第一类三维瓦片数据和第二类三维瓦片数据分别按照瓦片的数据价值从低到高提出各自N%的内存占用量,直到符合内存要求。

步骤A.5,当前缓存中的瓦片的范围以及当前可视化区域范围进行计算;

步骤A.6,以缓存中瓦片地理范围向外扩充,东、西、南、北方向分别扩大M%(根据预缓存的范围进行设置)作为缓冲区的边界;

步骤A.7,根据边界瓦片的层级以邻近原则设定所有缓冲区的瓦片层级,即以应预缓存瓦片距离最近的边界瓦片等级为该点的瓦片等级;

步骤A.8,计算缓冲区中所有应预缓存瓦片的数据价值V(i),本发明综合考虑预测瓦片的大小、空间位置特征,邻近边界瓦片特征,依据这些因素使用特定的价值函数计算数据价值,对这些瓦片进行价值计算:

V(i)=Vspacial(i)*Vsize(i)*Vnear(i)

V(i)为瓦片i的数据价值,Vspacial(i)为瓦片i的空间位置价值,Vsize(i)为瓦片i的数据大小价值,Vnear(i)为瓦片i的邻近边界瓦片的数据价值。其中,Vspacial(i)和Vsize(i)的计算方法与步骤8.3中的方法一致。

步骤A.9,对预测的瓦片以数据价值进行从大到小排序;

步骤A.10:设置预缓存后的内存临界值为maxCacheCapacity2;

步骤A.11:按照应预缓存瓦片的数据价值从高到低进行瓦片的请求加载并更新索引;

步骤A.12:判断内存量是否达到临界值maxCacheCapacity2;

否是,则退出,本流程结束;

若否,则执行下述步骤A.13;

步骤A.13:判断是否加载完成;

若是,则退出,本流程结束;

若否,则回转执行上述步骤A.11。

本发明考虑到现有的瓦片数据可视化方法、三维瓦片数据的组织方式以及显示特点,从尽可能的减少实时瓦片请求加载次数和提高缓存有效性的角度出发,提出的一种三维模型数据的瓦片式快速加载方法,对于解决大量三维场景数据加载缓慢的难题具有现实意义。

应当理解的是,本说明书未详细阐述的部分均属于现有技术。

应当理解的是,上述针对较佳实施例的描述较为详细,并不能因此而认为是对本发明专利保护范围的限制,本领域的普通技术人员在本发明的启示下,在不脱离本发明权利要求所保护的范围情况下,还可以做出替换或变形,均落入本发明的保护范围之内,本发明的请求保护范围应以所附权利要求为准。

当前第1页1 2 3 
网友询问留言 已有1条留言
  • 访客 来自[中国] 2023年07月21日 15:39
    一般使用的三维模型都是基于2.5D坐标系统,有那些软件或者插件可以支持2.5D坐标系统中的瓦片化呢
    0
1