一种基于Cesium海量倾斜摄影模型加载优化方法与流程

文档序号:31297617发布日期:2022-08-27 04:21阅读:1303来源:国知局
一种基于Cesium海量倾斜摄影模型加载优化方法与流程
一种基于cesium海量倾斜摄影模型加载优化方法
技术领域
1.本发明公开一种化方法,涉及海量数据加载技术领域,具体地说是一种基于cesium海量倾斜摄影模型加载优化方法。


背景技术:

2.随着技术水平的提升和应用粒度的细分,实景三维越来越精细,具有更真实的模型数据支撑,倾斜数据获取分辨率也由原来的亚分米级(7-10公分),向更高分辨率过渡(3-5公分,1-2公分)。对应的模型数据量级也以指数级攀升,当前已普遍进入tb级,正不断迈向pb级。
3.倾斜摄影模型传统的加载方式采用金字塔式一次性加载,如最常见context capture软件生成的倾斜采用分块的方式,比如100多平方公里的数据,生成的倾斜块大约在5000块左右。但针对海量数据,受限于处理机器的性能,倾斜摄影生成工具无法将海量数据一次性生成金字塔模型,且对系统资源的消耗巨大,容易出现海量倾斜摄影模型加载缓慢及浏览器崩溃问题,很难在项目中有效使用。


技术实现要素:

4.本发明针对现有技术的问题,提供一种基于cesium海量倾斜摄影模型加载优化方法,解决对系统资源的消耗巨大,出现海量倾斜摄影模型加载缓慢及浏览器崩溃的问题,高效加载倾斜摄影模型。
5.本发明提出的具体方案是:
6.本发明提供一种基于cesium海量倾斜摄影模型加载优化方法,基于cesium,获取3dtiles数据集,根据3dtiles数据集获取tileset中所有子节点几何误差和世界坐标信息,根据所述子节点几何误差和世界坐标信息获得每个子节点的sse屏幕空间误差,根据所述每个子节点的sse屏幕空间误差获得最大屏幕空间误差,
7.根据需要加载优化的当前场景,获取多层次b3dm模型数据集,遍历每个节点,比较节点外包盒与当前场景范围,若所述节点不在当前场景范围内,则剔除所述节点及所有子节点,若所述节点在当前场景范围内则计算所述节点的sse屏幕空间误差,
8.比较所述节点的屏幕空间误差与所述最大屏幕空间误差,确定需要加载的节点及子节点,其中若所述节点的屏幕空间误差小于所述最大屏幕空间误差,则无需加载所述节点的更高分辨率的子节点,若所述节点的屏幕空间误差大于所述最大屏幕空间误差,则需要加载所述节点的更高分辨率的子节点,
9.根据需要加载的节点及子节点加载当前场景的海量倾斜摄影模型数据。
10.进一步,所述的一种基于cesium海量倾斜摄影模型加载优化方法中所述根据3dtiles数据集获取tileset中所有子节点几何误差和世界坐标信息,包括:
11.获取roottile根节点,在while循环中遍历树,获取所有子节点的几何误差和世界坐标信息。
12.进一步,所述的一种基于cesium海量倾斜摄影模型加载优化方法中所述若所述节点在当前场景范围内则计算所述节点的屏幕空间误差,包括:
13.利用公式计算所述节点的sse屏幕空间误差,公式如下:
14.sse=(geometricerror*height)/(distance*ssedenominator),geometricerror为所述节点的几何误差,height为像素高度,distance为相机距离所述节点的最近距离,ssedenominator为默认的像素宽高比。
15.进一步,所述的一种基于cesium海量倾斜摄影模型加载优化方法中所述加载当前场景的海量倾斜摄影模型数据,包括:
16.获取当前场景的所有b3dm数据模型地址根据需要加载的节点及子节点通过异步请求以zip压缩方式进行数据传输。
17.本发明还提供一种基于cesium海量倾斜摄影模型加载优化系统,包括分析比较模块和加载模块,
18.分析比较模块基于cesium,获取3dtiles数据集,根据3dtiles数据集获取tileset中所有子节点几何误差和世界坐标信息,根据所述子节点几何误差和世界坐标信息获得每个子节点的sse屏幕空间误差,根据所述每个子节点的sse屏幕空间误差获得最大屏幕空间误差,
19.根据需要加载优化的当前场景,获取多层次b3dm模型数据集,遍历每个节点,比较节点外包盒与当前场景范围,若所述节点不在当前场景范围内,则剔除所述节点及所有子节点,若所述节点在当前场景范围内则计算所述节点的sse屏幕空间误差,
20.比较所述节点的屏幕空间误差与所述最大屏幕空间误差,确定需要加载的节点及子节点,其中若所述节点的屏幕空间误差小于所述最大屏幕空间误差,则无需加载所述节点的更高分辨率的子节点,若所述节点的屏幕空间误差大于所述最大屏幕空间误差,则需要加载所述节点的更高分辨率的子节点,
21.加载模块根据需要加载的节点及子节点加载当前场景的海量倾斜摄影模型数据。
22.进一步,所述的一种基于cesium海量倾斜摄影模型加载优化系统中所述分析比较模块根据3dtiles数据集获取tileset中所有子节点几何误差和世界坐标信息,包括:
23.获取roottile根节点,在while循环中遍历树,获取所有子节点的几何误差和世界坐标信息。
24.进一步,所述的一种基于cesium海量倾斜摄影模型加载优化系统中若所述节点在当前场景范围内则所述分析比较模块计算所述节点的屏幕空间误差,包括:
25.利用公式计算所述节点的sse屏幕空间误差,公式如下:
26.sse=(geometricerror*height)/(distance*ssedenominator),geometricerror为所述节点的几何误差,height为像素高度,distance为相机距离所述节点的最近距离,ssedenominator为默认的像素宽高比。
27.进一步,所述的一种基于cesium海量倾斜摄影模型加载优化系统中所述加载模块加载当前场景的海量倾斜摄影模型数据,包括:
28.获取当前场景的所有b3dm数据模型地址根据需要加载的节点及子节点通过异步请求以zip压缩方式进行数据传输。
29.本发明的有益之处是:
30.本发明提供一种基于cesium海量倾斜摄影模型加载优化方法,基于cesium三维引擎实现海量倾斜数据的高效加载及模型操作反应速度,针对不同分辨率海量数据加载前自适应调整最大屏幕空间误差值,解决了由于设置最大屏幕空间误差值过小,导致浏览器内存开销大,出现崩溃问题。
附图说明
31.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
32.图1是本发明方法流程示意图。
具体实施方式
33.下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定。
34.本发明提供一种基于cesium海量倾斜摄影模型加载优化方法,基于cesium,获取3dtiles数据集,根据3dtiles数据集获取tileset中所有子节点几何误差和世界坐标信息,根据所述子节点几何误差和世界坐标信息获得每个子节点的sse屏幕空间误差,根据所述每个子节点的sse屏幕空间误差获得最大屏幕空间误差,
35.根据需要加载优化的当前场景,获取多层次b3dm模型数据集,遍历每个节点,比较节点外包盒与当前场景范围,若所述节点不在当前场景范围内,则剔除所述节点及所有子节点,若所述节点在当前场景范围内则计算所述节点的sse屏幕空间误差,
36.比较所述节点的屏幕空间误差与所述最大屏幕空间误差,确定需要加载的节点及子节点,其中若所述节点的屏幕空间误差小于所述最大屏幕空间误差,则无需加载所述节点的更高分辨率的子节点,若所述节点的屏幕空间误差大于所述最大屏幕空间误差,则需要加载所述节点的更高分辨率的子节点,
37.根据需要加载的节点及子节点加载当前场景的海量倾斜摄影模型数据。
38.本发明方法针对cesium三维引擎加载海量倾斜摄影模型的应用,可以通过对根据不同分辨率3dtiles数据动态计算相应最大屏幕空间误差,实现以3dtiles各节点外包盒和最大屏幕空间误差筛选优化海量倾斜摄影模型加载过程中的数据节点,动态调度加载过程。
39.具体应用中,在本发明方法的一些实施例中,具体执行过程如下:
40.步骤1:根据cesium三维引擎,可以获得现有的3dtiles数据集,根据数据集获取json对象叶节点几何误差和世界坐标信息,其中获取roottile根节点,然后在while循环中,以广度优先的方式遍历树,每个节点都有一个parenttile属性绑定父节点(根节点除外),同时存在children数组,保存所有叶节点即子节点的几何误差和世界坐标信息。
41.步骤2:根据步骤1获取的叶节点几何误差和世界坐标信息,计算每个叶节点的sse屏幕空间误差,可以选取相机离叶节点100-200米的距离计算sse屏幕空间误差,运用公式sse=(geometricerror*height)/(distance*ssedenominator)进行计算。
42.步骤3:对步骤2计算出的每个叶节点的sse屏幕空间误差进行平均差计算获取最大屏幕空间误差。
43.步骤4:获取当前场景需要加载的多层次b3dm模型数据,可以采用深度优先算法遍历每个节点,分别比较节点外包盒与当前场景范围,如果节点不在当前场景范围内,则剔除该节点及所有子节点,如果节点在当前场景范围内则计算当前相机离该节点的最近距离(distance),运用公式:sse=(geometricerror*height)/(distance*ssedenominator),计算屏幕空间误差(sse),
44.geometricerror为节点的几何误差,可通过cesium获得,height为html中canvas的像素高度,可以通过jquery插件获得,ssedenominator根据当前相机状态下,视锥体的张角(fov)、长宽比参数确定,通常状态下,默认使用cesium给出的固定值,上述参数除特殊说明,均可参考现有技术解释,
45.将计算获得的所述节点的屏幕空间误差与步骤3获取的最大屏幕空间误差进行比较,如果小于步骤3获取的最大屏幕空间误差则满足要求精度,无需加载更高分辨率的瓦片,如果大于步骤3获取的最大屏幕空间误差,则继续读取层次更深、精度更高的子瓦片及相机的相关参数进行重复计算,直到计算的节点屏幕空间误差小于等于步骤3获取的最大屏幕空间误差时终止计算;
46.步骤5:获取步骤4的需要加载的节点及子节点的所有b3dm数据模型地址,通过异步请求以zip压缩方式进行数据传输,高效快速完成海量倾斜摄影模型数据加载渲染。
47.本发明还提供一种基于cesium海量倾斜摄影模型加载优化系统,包括分析比较模块和加载模块,
48.分析比较模块基于cesium,获取3dtiles数据集,根据3dtiles数据集获取tileset中所有子节点几何误差和世界坐标信息,根据所述子节点几何误差和世界坐标信息获得每个子节点的sse屏幕空间误差,根据所述每个子节点的sse屏幕空间误差获得最大屏幕空间误差,
49.根据需要加载优化的当前场景,获取多层次b3dm模型数据集,遍历每个节点,比较节点外包盒与当前场景范围,若所述节点不在当前场景范围内,则剔除所述节点及所有子节点,若所述节点在当前场景范围内则计算所述节点的sse屏幕空间误差,
50.比较所述节点的屏幕空间误差与所述最大屏幕空间误差,确定需要加载的节点及子节点,其中若所述节点的屏幕空间误差小于所述最大屏幕空间误差,则无需加载所述节点的更高分辨率的子节点,若所述节点的屏幕空间误差大于所述最大屏幕空间误差,则需要加载所述节点的更高分辨率的子节点,
51.加载模块根据需要加载的节点及子节点加载当前场景的海量倾斜摄影模型数据。
52.上述系统内的各模块之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
53.同样地,本发明系统基于cesium三维引擎实现海量倾斜数据的高效加载及模型操作反应速度,针对不同分辨率海量数据加载前自适应调整最大屏幕空间误差值,解决了由于设置最大屏幕空间误差值过小,导致浏览器内存开销大,出现崩溃问题。
54.需要说明的是,上述各流程和各系统结构图中不是所有的步骤和模块都是必须的,可以根据实际的需要忽略某些步骤或模块。各步骤的执行顺序不是固定的,可以根据需
要进行调整。上述各实施例中描述的系统结构可以是物理结构,也可以是逻辑结构,即,有些模块可能由同一物理实体实现,或者,有些模块可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。
55.以上所述实施例仅是为充分说明本发明而所举的较佳的实施例,本发明的保护范围不限于此。本技术领域的技术人员在本发明基础上所作的等同替代或变换,均在本发明的保护范围之内。本发明的保护范围以权利要求书为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1