一种基于物理引擎的GIS数据可视化方法及装置
文献发布时间:2023-06-19 09:54:18
技术领域
本发明涉及可视化技术领域,特别是涉及一种基于物理引擎的GIS数据可视化方法以及一种基于物理引擎的GIS数据可视化装置。
背景技术
虽然说物理引擎是一个在游戏领域十分常见的技术,但这项技术运用在Web端的情况比较少,特别是运用在Web端的数据可视化表达上更加稀少,这就直接导致了目前市面上绝大部分Web端可视化产品可以表达的内容减少。
当前Web端的物理引擎使用方法比较杂乱,不同的三维引擎所引用的方式都各不相同。另外目前在Web端对于地图可视化的表达还过于粗糙,与用Unity,UE4呈现出来的可视化表达的效果相差较远,也不支持对每个物体自定义物理属性设置,这样在场景较为复杂时会存在一定的场景干扰。
在Web端中Three.js与Physi.js结合可以实现一定的物理效果,Babylon.js引擎自身支持物理引擎。这两款物理引擎实现的效果差不多,但实现方式各不相同,当前可视化厂常用Three.js,Babylon,WebGL原生作为Web端的三维引擎进行开发,但其调用物理引擎的方式各不相同,于是就需要一个将他们统一化的方法。
发明内容
本发明针对上述问题,一种基于物理引擎的GIS数据可视化方法及装置。
本发明的技术方案是:提供一种基于物理引擎的GIS数据可视化方法,包括如下步骤:
多引擎适配:对于WebGL集成的三维引擎库,通过调用Ammo.js引擎实现物理系统,通过将Ammo.js进行拆分实现多引擎匹配方法,将三维引擎库中各引擎的调用方法抽调出来,这样可以满足GIS数据可视化开发过程中,不管使用哪种三维引擎都可以用一套物理引擎,大大的节省了开发人员的开发时间;
可视化场景拆分:将整个物理引擎拆分成三部分:物理属性,场景属性和关节链接,其中,物理属性包括物体的重心、摩擦力和弹力,场景属性包括重力、浮力和外部作用力,关节链接表示两个连接的物体之间的关联操作,这种方法将物理引擎分别封装,让其作为一个物体的属性可以自由添加,这对于可视化场景多样性的情况,当有些场景的的可视化表达不需要过多的物理引擎进行处理时,该方法可以对物理引擎中的各个属性进行设置,做到开发人员需要什么属性才添加什么属性,不会造成场景的杂乱。
构建物理系统环境:将物理系统环境分为四大类,分别为自然灾难模拟、事故模拟、特殊作业和驾驶模拟,然后通过在每个大类中以不同的场景完成进一步划分,实现可视化效果,这样处理的好处是能够将GIS数据可视化开发的三维效果做的跟现实生活中场景类似。
本发明的进一步技术方案是:所述WebGL集成的三维引擎库包括Three.js引擎、Babylon.js引擎和原生WebGL引擎。
本发明的进一步技术方案是:所述构建物理系统环境中开发驾驶模拟场景时,需对包围盒进行设置。
本发明的技术方案是:构建一种基于物理引擎的GIS数据可视化装置,多引擎适配模块、可视化场景拆分模块、构建物理系统环境模块,所述多引擎适配模块对于WebGL集成的三维引擎库,通过调用Ammo.js引擎实现物理系统,通过将Ammo.js进行拆分实现多引擎匹配方法,将三维引擎库中各引擎的调用方法抽调出来;所述可视化场景拆分模块将整个物理引擎拆分成三部分:物理属性,场景属性和关节链接,其中,物理属性包括物体的重心、摩擦力和弹力,场景属性包括重力、浮力和外部作用力,关节链接表示两个连接的物体之间的关联操作;所述构建物理系统环境模块将物理系统环境分为四大类,分别为自然灾难模拟、事故模拟、特殊作业和驾驶模拟,然后通过在每个大类中以不同的场景完成进一步划分,实现可视化效果。
本发明的进一步技术方案是,所述多引擎适配模块中WebGL集成的三维引擎库包括Three.js引擎、Babylon.js引擎和原生WebGL引擎。
本发明的进一步技术方案是,所述构建物理系统环境模块中开发驾驶模拟场景时,需对包围盒进行设置。
本发明提供的一种基于物理引擎的GIS数据可视化方法及装置,与现有技术相比,具有如下改进及优点:
(1)通用性好:多引擎适配使主流的三维引擎都可以使用拆分好的物理引擎,这样在开发人员接触一个新的三维引擎的时候,可以大大减少开发时间.
(2)灵活性好:支持对每个物体进行物理属性设置,这样在场景较为复杂的时也不会造成物体干扰。
(3)效果丰富性强:设计了物理引擎能够适配的场景,进一步提高了可视化效果的丰富性。
附图说明
图1为本发明实施例的结构示意图;
图2为本发明实施例中多引擎适配示意图;
图3为本发明实施例中物理系统拆分示意图;
图4为本发明实施例中物理系统适用场景示意图;
图5为本发明实施例中驾驶模拟场景可视化实现流程图。
具体实施方式
下面结合具体实施例,对本发明技术方案进一步说明。
本发明的具体实施方式是:提供一种基于物理引擎的GIS数据可视化方法,包括如下步骤:
多引擎适配:对于WebGL集成的三维引擎库,通过调用Ammo.js引擎实现物理系统,通过多引擎匹配方法将三维引擎库中各引擎的通用调用方法抽调出来,这样可以满足GIS数据可视化开发过程中,不管使用哪种三维引擎都可以用一套物理引擎,大大的节省了开发人员的开发时间;
目前在Web端对于地图可视化的表达还过于粗糙,与用Unity,UE4呈现出来的可视化表达的效果相差较远。多引擎适配除了有通过用这些引擎开发达到性能优化以及提高渲染速度的优势,还能够将一些三维效果做的跟现实生活中场景类似。
本发明的优选实施方式是:所述WebGL集成的三维引擎库包括Three.js引擎、Babylon.js引擎和原生WebGL引擎。
具体实施过程是:如图2所示,目前用于作为Web端三维引擎库的主要有Three.js引擎,Babylon.js引擎以及WebGL原生开发,其中对于物理引擎的实现各不相同,实施例实现了将这三种引擎的物理方法进行统一,具体为用ammo.js作为所有三维引擎的物理实现方法库,Three.Js物理引擎的实现使用的是Physi.js,而Physi.js是从Ammo.js进一步集成得到,然后通过自行设计的多引擎匹配方法能够将三种引擎的通用调用方法抽调出来,从而实现多引擎匹配,其中多引擎匹配方法具体如图2所示,将原引入的Ammo.js进行拆分,拆分成对物体设置,对场景设置,关节链接以及一些常用的物理运算,保证原生WebGL程序在调用该方法时是可以正常进行物理属性的设置。Three.Js以及Babylon.Js有其自身的物理系统,并且其调用方式和Ammo.Js调用方式不同,分别有一个额外的转换方法将两者的调用方式进行统一。
可视化场景拆分:将整个物理引擎拆分成三部分:物理属性,场景属性和关节链接,其中,物理属性包括物体的重心、摩擦力和弹力,场景属性包括重力、浮力和外部作用力,关节链接表示两个连接的物体之间的关联操作,这种方法将物理引擎分别封装,让其作为一个物体的属性可以自由添加,这对于可视化场景多样性的情况,当有些场景的的可视化表达不需要过多的物理引擎进行处理时,该方法可以对物理引擎中的各个属性进行设置,做到开发人员需要什么属性才添加什么属性,不会造成场景的杂乱。
具体实施过程是:如图3所示,由于在数据可视化所表达的场景较多,在各个场景中进行效果表达时往往不是效果越复杂越好的,需要做一定的减法,于是在本发明中将整个物理引擎拆分成主要分成三大部分:物理属性,场景属性以及关节链接。其中每个物体的属性较多,但开发人员可以根据需要添加属性,不会让场景变得杂乱。而场景属性主要是对物体的所在场景进行设置,根据场景的需求设定相对应的参数。一般在场景中会有两个连接的物体,会有一定的关联操作,这种情况在可视化表达中也比较常见。
构建物理系统环境:将物理系统环境分为四大类,分别为自然灾难模拟、事故模拟、特殊作业和驾驶模拟,然后通过在每个大类中以不同的场景完成进一步划分,实现可视化效果,这样处理的好处是能够将GIS数据可视化开发的三维效果做的跟现实生活中场景类似。
具体实施过程是:如图4所示,目前还没有任何关于对物理系统在智慧城市中的适用场景进行构建的技术先例。本发明中就有对物理系统所适用的环境进行构建,目前主要将其分为四大类,再在每个大类中以不同的场景完成进一步的细分。这些加上了物理系统的灾难或者事故模拟能够将一些数据清晰的表达在用户眼前。以往的数据表达最多只能够将给出图表本身的数据表达出来。但如果运用了物理系统,用户能够看到除去数据以外的内容。比如说在表达洪涝灾害时,可以看到由于风力以及地理位置的关系导致的水流速度的加快以及冲力的加强。这是一般的数据并不能够告诉用户的。
本发明的优选实施方式是:所述构建物理系统环境中开发驾驶模拟场景时,需对包围盒进行设置。
具体实施过程是:如图5所示为本发明实施例中模拟驾驶状态时的开发流程,实施例以Three开发环境为例,在调用物理系统类库的同时,会自动根据开发人员使用的引擎选取相对应的处理方法。在大部分场景中物理参数的设置可以分为环境物理参数设置以及物体设置,开发人员根据需要调用在Three物理系统类库中的参数设置方法完成参数的设置。其中对于物体来说还会对其包围盒进行设置,为之后包围盒检测做准备。在对绝大部分参数进行设置之后,就会在Three物理系统类库中调用一些通用方法用于模拟一些常见的物理现象。在根据这些现象处理相关联的场景变化。在模拟驾驶中就是车辆的加速,减速过程,碰撞情况以及磨损情况。
如图1所示,本发明的具体实施方式是:构建一种基于物理引擎的GIS数据可视化装置,多引擎适配模块1、可视化场景拆分模块2、构建物理系统环境模块3,所述多引擎适配模块1对于WebGL集成的三维引擎库,通过调用Ammo.js引擎实现物理系统,通过多引擎匹配方法将三维引擎库中各引擎的通用调用方法抽调出来;所述可视化场景拆分模块2将整个物理引擎拆分成三部分:物理属性,场景属性和关节链接,其中,物理属性包括物体的重心、摩擦力和弹力,场景属性包括重力、浮力和外部作用力,关节链接表示两个连接的物体之间的关联操作;所述构建物理系统环境模块3将物理系统环境分为四大类,分别为自然灾难模拟、事故模拟、特殊作业和驾驶模拟,然后通过在每个大类中以不同的场景完成进一步划分,实现可视化效果。
本发明的优选实施方式是:所述多引擎适配模块1中WebGL集成的三维引擎库包括Three.js引擎、Babylon.js引擎和原生WebGL引擎。。
本发明的优选实施方式是:所述构建物理系统环境模块3中开发驾驶模拟场景时,需对包围盒进行设置。
本发明提供的一种基于物理引擎的GIS数据可视化方法及装置,多引擎适配方法使目前主流的三维引擎都可以使用拆分好的物理引擎,这样在开发人员接触一个新的三维引擎的时候,大大减少其开发时间;物理系统可视化场景拆分方法,支持对每个物体自定义物理属性设置,这样在场景较为复杂的时也不会造成物体干扰;物理系统适用场景设计,设计了物理引擎能够适配的场景,进一步提高了可视化效果的丰富性。
在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的步骤、方法、装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种步骤、方法、装置所固有的要素。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
- 一种基于物理引擎的GIS数据可视化方法及装置
- 一种基于GIS的生物信息大数据可视化展示装置