使用Cesium集成展示DGN模型数据的关键技术研究

2021-12-23 06:12张耀允
工程与建设 2021年5期
关键词:数据格式图形空间

张耀允,戴 玮,孙 莉

(1.安徽省交通规划设计研究总院股份有限公司,安徽 合肥 230088;2.公路交通节能环保技术交通运输行业研发中心,安徽 合肥 230088)

0 引 言

近年来,BIM应用的深度逐渐增加,在建筑的全生命周期都开始应用。BIM的核心是信息流,三维模型的角色是信息载体,因此,如何将BIM模型从规划设计阶段推广到施工和运维阶段,是设计人员一个努力的重要方向。

在各类施工和运维管理系统中,大多数是浏览器/服务器结构,通过互联网和Web网页运行。要实现在页面中浏览查询三维模型,从而更加方面、快捷、形象地管理建筑信息,离不开Web 3D技术的支持,而WebGL则是当前主流的Web 3D解决方案[1]。

设计模型的数据格式主要是针对设计阶段,包含很多设计参数和历史信息,因此不适合直接应用在施工和运维阶段进行Web开发。因此,探索从设计模型输出成WebGL支持的数据格式,是解决问题的关键所在。

1 DGN、WebGL与Cesium介绍

DGN数据格式是美国Bentley工程系列软件的通用格式,广泛应用于交通、水利、建筑等工程建设领域。DGN数据格式适应建筑信息模型(BIM)的需求,通过其EC Framework支持工程属性的定制和开发。

WebGL是一种3D绘图标准,这种绘图技术标准允许把JavaScript和OpenGL ES 2.0结合在一起,为HTML5 Canvas提供硬件3D加速渲染,可被用于创建具有复杂3D结构的网站页面。由于各大浏览器和移动系统都对WebGL标准有着良好的支持,使得在Web页面上展现三维场景不再需要另外安装插件,WebGL的应用前景非常可观。

当前流行的WebGL的JavaScript框架很多,基于这些函数库,可以快速搭建效果很好的三维Web应用,其中CesiumJS是比较流行的开源框架。CesiumJS是一个三维地理信息WebGL函数库。CesiumJS的三维图形数据格式为gltf,具有数据体积小、读入快等优点。基于gltf开发的3D Tiles建立了空间索引,实现了大量三维图形的分步分块加载。

2 关键点

2.1 数据格式的转换

三维建模软件及三维CAD软件的数据格式不同于用于渲染的数据格式,一般存储的是图形参数和工程属性信息。在图形方面,这种数据格式可以方便建模及模型修改,但是显示及渲染效率远不如面片格式;在工程属性方面,存储在设计文件中的工程属性数据结构需要解析才能读取。因此,需要将设计模型的图形三角化为面片格式,同时将设计模型的工程属性转换输出,从而实现web端的渲染显示及属性显示。

因为三维建模软件及三维CAD软件的格式一般是不公开的,借助中间格式会有很多的信息丢失[3],所以需要使用其API编写专门的程序完成图形三角化、数据优化及输出工作[4]。

2.2 空间索引的建立

在输出为3D Tiles时,首先需要根据三维数据的空间分布特点,建立空间索引。常用的空间索引有规则格网、四叉树、八叉树和kd树等形式,如图1所示。每个索引单元的大小,可以根据数据量或空间尺寸确定。

图1 空间索引示例(四叉树)

在空间索引建立后,每一个块的数据,根据细节的不同,可以输出成不同精细或丰富程度的模型。三维信息模型不同于数字地表模型,属于三维的矢量数据,每个元素代表一个构件,所以在细节展示方面,综合使用三角面片简化和细节子元素删减两种策略。

三角面片简化对于曲面的简化效果较好,根据角度、弦弧差、三角面尺寸等参数,可以有效地简化组成元素的曲面,如图2所示。细节子元素删减适用于复杂的元素简化,通过尺寸、重要性等参数的选定,可以简化不必要的子元素,如图3所示。

同一块索引单元内的模型,输出不同精度的文件,通过空间索引机制,根据屏幕的实际地理尺度,调取不同精度的模型文件。

图2 三角面片简化(吊索锚固端)

图3 细节子元素删减(索塔段)

2.3 地理坐标的换算

三维建模软件及三维CAD软件中,使用的大都是笛卡尔直角坐标系。而在建筑信息模型的生产中,一般采用局部坐标系或空间投影坐标系。因此需要将模型区域的基点转换为地理坐标系,才能实现三维地理信息场景中数据的地理叠加。

基准点换算完毕后,需要计算该点在地理椭球面上的法向量,从而得到旋转矩阵,实现模型的地理叠加。CesiumJS及大多数三维地理信息场景的地球使用的是WGS 84地理坐标系,而加载模型使用的是地心直角坐标系(earth-centered,earth-fixed,ECEF)。因此总体的换算流程如图4所示。

图4 坐标转换流程

2.4 CAD平台软件的二次开发

MDL是Microstation提供的二次开发语言及其函数库,借助MDL实现对DGN文件中图形及其属性的获取,转换为gltf格式[5]。根据已经建立的空间索引规则,判断该元素所属的文件块,并输出为3D Tiles的切片文件b3dm格式。

2.5 显示程序的开发和优化

显示程序在CesiumJS基础上进行二次开发,实现设计模型交付成果的加载显示。由于设计模型转换为3D Tiles之后,为保证显示效果,图形显示压力一般比较大。信息模型用户浏览三维图形的习惯明显不同于三维游戏用户,其特点包括关注模型位置及相互关系、鼠标交互操作频率较低、一般全局视角、浏览随意、场景变换频繁、模型元素需要从网络下载等。

针对这些特点开发场景加速器程序,减少场景旋转显示压力,按需加载各类数据,明显提升了图形显示效率。

3 项目应用

以某长江公路大桥左汊悬索桥为例,其设计模型使用Bentley的Microstation和Open Bridge Modeler完成三维信息模型创建。内容包含大桥所有的结构物,以及支座、护栏、排水设施、伸缩缝、楼梯、标志标线等主要设施,设计文件大小总计2.81 GB。

使用基于Microstation二次开发的程序,提取场景的几何中心为模型的基准点,换算为WGS 84下的ECEF坐标并完成旋转矩阵的计算。读取与解析DGN文件中的工程属性字段,输出为mongodb数据库。

空间索引采用规则格网加四叉树,模型文件建立L3、L4、L5三种精细程度。转换为3D Tiles后,模型文件总数量超过1 000个,总大小为3.17 GB。将数据加载至Web前端进行渲染,如图5所示,并在此基础上开发了桥梁养护相关的应用功能,总体运行效果良好。

图5 利用WebGL渲染长江大桥

4 结束语

在DGN模型的处理及加载显示过程中,还有一些问题尚未得到理想的解决:

(1)设计模型不标准。同一文件中,有的构件以组形式存在,有的以图层形式存在,造成在转换过程中构件划分方法不一致。因此,需要建立统一的三维设计标准,保证图形、属性的规范化。

(2)内存释放机制。受限于Cesium的基础框架限制,很多模型虽然不在场景中渲染,但是依旧会保留在内存中。这一方面是保证模型再次显示的效率,但是也加大了内存的存储压力。如何在二者之间寻求平衡需要进一步研究。

此外,随着倾斜摄影测量及实景建模、遥感、GPS、BIM集成的需求越来越多[6],如何更加高效地进行数据交换是需要一直研究解决的关键问题。

猜你喜欢
数据格式图形空间
空间是什么?
创享空间
分图形
世界首个可记录物体内部结构等复杂信息的3D打印数据格式问世
找图形
图形变变变
论子函数在C语言数据格式输出中的应用
基于特征库的测井数据格式自动识别与转换方法
图形配对
基于ArcGIS的规划数据格式转换研究