System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种Cesium三维可视化系统业务场景切换处理方法技术方案_技高网

一种Cesium三维可视化系统业务场景切换处理方法技术方案

技术编号:40580318 阅读:5 留言:0更新日期:2024-03-06 17:23
本发明专利技术公开了一种Cesium三维可视化系统业务场景切换处理方法,包含以下步骤:步骤1,开始切换场景,判断当前场景与新场景是否是同一场景,如果不是同一场景则执行步骤2;如果是同一场景则直接执行切换子场景流程,进入步骤5;步骤2,卸载当前子场景、卸载当前场景;步骤3,新场景初始化;步骤4,新场景业务数据加载,在完成后执行步骤6;步骤5,判断当前子场景与新子场景是否是同一子场景,如果不是则执行6,否则无操作;步骤6,切换新子场景;步骤7,新子场景初始化;步骤8,新子场景业务数据加载。该方法将三维可视化系统的业务需求进行抽象梳理,提炼为场景和子场景的概念以此降低系统性能占用,降低开发难度,便于程序后期维护。

【技术实现步骤摘要】

本专利技术涉及数据信息处理调度,尤其涉及一种cesium三维可视化系统业务场景切换处理方法。


技术介绍

1、随着计算机图形学技术的发展,人们对三维信息的需求与日俱增,三维可视化技术已经广泛应用于生活的各个领域,比如古迹保护、智慧园区、数字化城市、仓储物资等;三维可视化系统的建设复杂度也越来越高,单一场景已经无法满足需求;以检储配物资管理系统为例,业务涉及仓储网络、仓库监控、货物入库、货物送检、预约出库等多个场景;因此如何调度场景,减少系统程序的耦合变得十分重要;

2、三维可视化系统多场景的切换,对开发人员的研发能力提出了更高的要求,开发的门槛也变得更高,更容易造成系统隐患;通过分析目前三维可视化系统的组织架构及场景调度方式,发现还存在许多缺陷:(1)cesium是一个使用webgl的地图引擎;基于cesium的三维可视化系统运行期间会消耗大量的浏览器资源,而浏览器承载的资源有限,如果资源释放不及时容易出错,导致系统性能降低,情节严重会导致系统崩溃;(2)场景切换过程中,开发人员需要关注当前场景的状态及卸载、新场景的加载及状态更新、业务数据的加载时机等,加大了开发人员负担,增加了开发难度,致使开发效率低下;(3)多个场景的程序耦合,不利于程序的可读性及复用性,使得程序难以维护。

3、因此,如何实现cesium三维可视化系统中业务场景切换的有效调度处理,解决上述缺陷问题便成为本领域人员亟待解决的技术问题。


技术实现思路

1、本专利技术的目的在于,解决现有技术的不足之处,提出一种cesium三维可视化系统业务场景切换处理方法,该方法将三维可视化系统的业务需求进行抽象梳理,提炼为场景和子场景的概念,其中每个场景由若干个子场景构成;场景作为子场景的父级,存放子场景中公用数据;子场景中则只需加载本子场景内需要的三维资源及子场景业务数据;以此降低系统性能占用,降低开发难度,便于程序后期维护。

2、一种cesium三维可视化系统业务场景切换处理方法,进行场景切换前需初始化调度器,调用调度器的installmaproutes方法,生成路由与组件的映射关系,以便切换场景时进行组件查找及初始化;场景切换包含以下步骤:

3、步骤1,开始切换场景,判断当前场景与新场景是否是同一场景,如果不是同一场景则执行步骤2;如果是同一场景则直接执行切换子场景流程,进入步骤5;

4、步骤2,卸载当前子场景、卸载当前场景;

5、步骤3,新场景初始化;

6、步骤4,新场景业务数据加载,在完成后执行步骤6;

7、步骤5,判断当前子场景与新子场景是否是同一子场景,如果不是则执行6,否则无操作;

8、步骤6,切换新子场景;

9、步骤7,新子场景初始化;

10、步骤8,新子场景业务数据加载。

11、优选的,初始化调度器时,需在调度器内维护事件中心及状态管理器;事件中心用于场景切换过程中事件的发布订阅,状态管理器用于场景切换过程中更新场景及子场景的状态;另外,还需在调度器中定义invokescene方法,实现场景切换的逻辑;invokescene方法接收场景id、子场景id及sceneready场景初始化完成、sceneloaded场景加载完成、subsceneready子场景初始化完成、subsceneloaded子场景加载完成等生命周期函数;调用步骤1中调度器invokescene方法即可进入场景的切换流程。

12、优选的,步骤1中,进入场景切换流程首先判断当前场景与新场景是否是同一场景,判断方法是将调度器内维护的当前场景id与新场景id进行对比,一致则为同一场景,否则为不同场景;为同一场景时,执行步骤5,判断新子场景与当前子场景是否一致,判断方法是将调度器内维护的当前子场景id与新子场景id进行对比,一致为相同子场景不做任何操作,不一致则为不同的子场景,执行新子场景的切换6;为不同场景时继续执行步骤2,调度器调用当前子场景卸载的destroy方法及当前场景卸载的destroy方法;在当前子场景和场景卸载后,将当前场景的状态更新为scenepreload,当前子场景的状态更新为subscenepreload。

13、优选的,步骤3在新场景初始化之前,调度器会根据传入的生命周期函数调用addmapeventlistener方法在调度器事件中心注册sceneready场景初始化完成事件及sceneloaded场景加载完成事件;在步骤3进行过程中,调度器中调用新场景的初始化方法init,初始化场景中的3dtiles数据、模型数据、地图瓦片等,同时将新场景id保存至当前场景id,更新当前场景的状态为sceneloading;另外,需在cesium加载完成事件回调中完成新场景初始化,调度器调用emitmapeventlistener方法触发sceneready事件,将当前场景的状态更新为sceneready,执行sceneready生命周期函数。

14、优选的,步骤4中,新场景业务数据加载时,需用调用调度器中invokemethod方法;invokemethod方法接收加载业务数据的方法名称、场景方法从属及业务数据;调度器在新场景业务数据加载时,会判断当前场景的状态;当前场景的状态为sceneready状态或sceneloaded状态时,直接调用场景业务数据加载方法;否则在调度器事件中心注册sceneready事件,在新场景初始化完成触发sceneready事件时,调用场景业务数据加载方法;场景业务数据加载完成后触发sceneloaded事件,场景状态更新为sceneloaded,同时执行sceneloaded生命周期函数,更新父页面渲染,进行新子场景的切换。

15、优选的,步骤7进行新子场景初始化,调度器调用新子场景初始化方法init,加载初始化子场景中的3dtiles数据、模型数据、地图瓦片等,同时将新子场景id保存至当前子场景id,更新当前子场景的状态为subsceneloading;另外,需在cesium加载完成事件回调中完成新子场景初始化,触发subsceneready事件,将当前子场景的状态更新为subsceneready,同时执行subsceneready生命周期函数。

16、优选的,步骤8中调用调度器中invokemethod方法,接收加载业务数据的方法名称、子场景方法从属及业务数据;调度器在新子场景业务数据加载时,会判断当前子场景的状态;当前子场景的状态是subsceneready状态或subsceneloaded状态时,直接调用子场景业务数据加载方法;否则在调度器事件中心注册subsceneready事件,在新子场景初始化完成触发subsceneready事件时,调用子场景业务数据加载方法;子场景业务数据加载完成时,触发子场景subsceneloaded事件;子场景的状态更新为subsceneloaded,同时执行subsceneloaded生命周期函数,本文档来自技高网...

【技术保护点】

1.一种Cesium三维可视化系统业务场景切换处理方法,其特征在于:进行场景切换前需初始化调度器,调用调度器的installMapRoutes方法,生成路由与组件的映射关系,以便切换场景时进行组件查找及初始化;场景切换包含以下步骤:

2.根据权利要求1所述的一种Cesium三维可视化系统业务场景切换处理方法,其特征在于:初始化调度器时,需在调度器内维护事件中心及状态管理器;事件中心用于场景切换过程中事件的发布订阅,状态管理器用于场景切换过程中更新场景及子场景的状态;另外,还需在调度器中定义invokeScene方法,实现场景切换的逻辑;invokeScene方法接收场景Id、子场景Id及sceneReady场景初始化完成、sceneLoaded场景加载完成、subSceneReady子场景初始化完成、subSceneLoaded子场景加载完成等生命周期函数;调用步骤1中调度器invokeScene方法即可进入场景的切换流程。

3.根据权利要求1所述的一种Cesium三维可视化系统业务场景切换处理方法,其特征在于:所述步骤1中,进入场景切换流程首先判断当前场景与新场景是否是同一场景,判断方法是将调度器内维护的当前场景Id与新场景Id进行对比,一致则为同一场景,否则为不同场景;为同一场景时,执行步骤5,判断新子场景与当前子场景是否一致,判断方法是将调度器内维护的当前子场景Id与新子场景Id进行对比,一致为相同子场景不做任何操作,不一致则为不同的子场景,执行新子场景的切换6;为不同场景时继续执行步骤2,调度器调用当前子场景卸载的destroy方法及当前场景卸载的destroy方法;在当前子场景和场景卸载后,将当前场景的状态更新为scenePreLoad,当前子场景的状态更新为subScenePreLoad。

4.根据权利要求1所述的一种Cesium三维可视化系统业务场景切换处理方法,其特征在于:所述步骤3在新场景初始化之前,调度器会根据传入的生命周期函数调用addMapEventListener方法在调度器事件中心注册sceneReady场景初始化完成事件及sceneLoaded场景加载完成事件;在步骤3进行过程中,调度器中调用新场景的初始化方法init,初始化场景中的3DTiles数据、模型数据、地图瓦片等,同时将新场景Id保存至当前场景Id,更新当前场景的状态为sceneLoading;另外,需在Cesium加载完成事件回调中完成新场景初始化,调度器调用emitMapEventListener方法触发sceneReady事件,将当前场景的状态更新为sceneReady,执行sceneReady生命周期函数。

5.根据权利要求1所述的一种Cesium三维可视化系统业务场景切换处理方法,其特征在于:所述步骤4中,新场景业务数据加载时,需用调用调度器中invokeMethod方法;invokeMethod方法接收加载业务数据的方法名称、场景方法从属及业务数据;调度器在新场景业务数据加载时,会判断当前场景的状态;当前场景的状态为sceneReady状态或sceneLoaded状态时,直接调用场景业务数据加载方法;否则在调度器事件中心注册sceneReady事件,在新场景初始化完成触发sceneReady事件时,调用场景业务数据加载方法;场景业务数据加载完成后触发sceneLoaded事件,场景状态更新为sceneLoaded,同时执行sceneLoaded生命周期函数,更新父页面渲染,进行新子场景的切换。

6.根据权利要求1所述的一种Cesium三维可视化系统业务场景切换处理方法,其特征在于:所述步骤7进行新子场景初始化,调度器调用新子场景初始化方法init,加载初始化子场景中的3DTiles数据、模型数据、地图瓦片等,同时将新子场景Id保存至当前子场景Id,更新当前子场景的状态为subSceneLoading;另外,需在Cesium加载完成事件回调中完成新子场景初始化,触发subSceneReady事件,将当前子场景的状态更新为subSceneReady,同时执行subSceneReady生命周期函数。

7.根据权利要求1所述的一种Cesium三维可视化系统业务场景切换处理方法,其特征在于:所述步骤8中调用调度器中invokeMethod方法,接收加载业务数据的方法名称、子场景方法从属及业务数据;调度器在新子场景业务数据加载时,会判断当前子场景的状态;当前子场景的状态是subSceneReady状态或subSceneLoaded状态时,直接调用子场景业务数据加载方法;否则在调度器事件中心注册subSceneReady事件,在新子场景初始化完成触发subSce...

【技术特征摘要】

1.一种cesium三维可视化系统业务场景切换处理方法,其特征在于:进行场景切换前需初始化调度器,调用调度器的installmaproutes方法,生成路由与组件的映射关系,以便切换场景时进行组件查找及初始化;场景切换包含以下步骤:

2.根据权利要求1所述的一种cesium三维可视化系统业务场景切换处理方法,其特征在于:初始化调度器时,需在调度器内维护事件中心及状态管理器;事件中心用于场景切换过程中事件的发布订阅,状态管理器用于场景切换过程中更新场景及子场景的状态;另外,还需在调度器中定义invokescene方法,实现场景切换的逻辑;invokescene方法接收场景id、子场景id及sceneready场景初始化完成、sceneloaded场景加载完成、subsceneready子场景初始化完成、subsceneloaded子场景加载完成等生命周期函数;调用步骤1中调度器invokescene方法即可进入场景的切换流程。

3.根据权利要求1所述的一种cesium三维可视化系统业务场景切换处理方法,其特征在于:所述步骤1中,进入场景切换流程首先判断当前场景与新场景是否是同一场景,判断方法是将调度器内维护的当前场景id与新场景id进行对比,一致则为同一场景,否则为不同场景;为同一场景时,执行步骤5,判断新子场景与当前子场景是否一致,判断方法是将调度器内维护的当前子场景id与新子场景id进行对比,一致为相同子场景不做任何操作,不一致则为不同的子场景,执行新子场景的切换6;为不同场景时继续执行步骤2,调度器调用当前子场景卸载的destroy方法及当前场景卸载的destroy方法;在当前子场景和场景卸载后,将当前场景的状态更新为scenepreload,当前子场景的状态更新为subscenepreload。

4.根据权利要求1所述的一种cesium三维可视化系统业务场景切换处理方法,其特征在于:所述步骤3在新场景初始化之前,调度器会根据传入的生命周期函数调用addmapeventlistener方法在调度器事件中心注册sceneready场景初始化完成事件及sceneloaded场景加载完成事件;在步骤3进行过程中,调度器中调用新场景的初始化方法init,初始化场景中的3dtiles数据、模型数据、地图瓦片等,同时将新场景id保存至当前场景id,更新当前场景的状态为sceneloading;另外,需在cesium加载完成事件回调中完成新场景初始化,调度器调用emitmapeventlistener方法触发sceneready事件,将当前场景的状态更新为sceneready,执行sceneready生命周期函数。

5.根据权利要求1所述的一种cesium三维可视化系统业务场景切换处理方法,其特征在于:所述步骤4中,新场景业务数据加载时,需用调用调度器中invokemethod方法...

【专利技术属性】
技术研发人员:胡晓楠李景宇王卫东张海涛朱传晶李含芝祝良峰高保国陈振兴
申请(专利权)人:天津市普迅电力信息技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1