李爽 刘苇 章啸程 宋百川
上海勘测设计研究院有限公司 上海 200335
三维可视化平台[1]是利用计算机图形学和图像处理技术,将数据、图纸转换成三维图形,通过显示终端进行可视化描述,是可视化应用开发中最为基础也最为重要的部分[2]。现有GIS与BIM服务采用的三维可视化技术较多[3],包括但不限于Bentley厂商的iModel平台[4]、北京华创的三维可视化平台、开建BIMBOX,Cesium[5]等。随着可视化技术厂商的增多,以及落地项目数量的逐渐积累,导致使用的引擎也越来越多,引擎众多导致图形操作接口繁杂,单套图形操作接口只能在对应引擎技术下使用,其他引擎下服务无法使用该图形操作接口进行可视化功能开发,极大的提高了开发成本与开发难度。
因此,有必要开展BIM+GIS可视化开发框架的集成研究,建设一套支持多种引擎并支持无限扩展的图形操作接口,最大限度的实现各类服务在可视化图形操作接口层面的技术统一,并以底层接口的方式为后续项目提供BIM和GIS服务接口支撑技术与工具。
为了保证模型三维在BIM引擎读取时接口统一,首先需要将模型的几何、材质信息进行标准化。
2.1.1 可视化信息标准化
对于模型几何信息,需要将原始的dgn、rvt模型中的几何数据转化为由三角面片组成的Mesh,每一个构件转化为一个独立的Mesh体,每个Mesh由若干个Primitive(图元)组成,其中Primitive保存了二进制的三角面的顶点数据和索引信息。
对于材质信息,将整个模型中的所有不同材质保存在材质集中,并对每种材质创建Material Id,与构件的Element Id创建关联。材质属性暂时划分为不透明材质:包括颜色、贴图、反光度等属性;半透明材质:包括颜色、透明度等属性。
图1 BIM内部几何信息结构
2.1.2 数据标准化
设定一套数据标准,现阶段简单设定模型的ID、空间、系统、分类几个信息的所在字段,并用标准属性来输出
为了方便对模型数据进行检索,并提高模型加载速度,我们需要对模型属性数据进行标准化独立存储,每个模型的属性数据通过构件的Element ID与三维模型进行关联。现阶段定义模型的属性表结构如下:
2.1.3 其他三维格式支持
支持通用的标准三维格式例如obj、3ds、gltf等。这些三维格式都是国际化通用标准,因此可以通过研究对应的格式说明文档,编写模型解析加载器,以扩展插件的形式嵌入BIM引擎中。
现有多引擎并行的方式能够撷取各引擎的优点,在合适的场景中使用合适的引擎加载数据和服务,然而对于开发人员来说会增加引擎接入的工作量,写不同引擎采用的依赖版本也可能对前端调用产生影响,因此研究设计一套可视化标准框架,将不同引擎的调用方法封装为同一套开发接口,既能屏蔽不同引擎带来的依赖库混乱问题,也能统一上层应用开发过程,减少开发人员对不同引擎架构的学习过程。
图形引擎的封装可以分为两个部分,前端方法的封装和数据接口的封装。
2.2.1 前端方法封装
前端方法分为二三维前端操作和前端集成组件:
二/三维前端操作
这部分前端操作将被封装为标准方法(其中一部分既适用于二维和三维,一部分仅在三维中有效),这些方法可以采用方法函数调用,也提供相应的触发的按钮图标前端。
(1)前端集成组件
表3 前端集成组件列表
(2)GIS相关组件
表4 GIS相关前端组件列表
2.2.2 数据接口封装
表5 数据接口列表
2.2.3 三维操作接口
依据接口调用标准,以下是三维视图操作的接口。
表6 常用三维操作列表
表7 常用三维工具列表
表8 高级三维工具列表
通过建设本框架,可将多种GIS服务、BIM服务可视化引擎技术与内部搭建的BIM+GIS数据集成管理平台结合,实现了从数据上传->数据管理->服务发布->服务管理->服务可视化->图形可视化操作功能开发->场景搭建的全过程统一纳管,为后续项目在三维可视化服务层面的系统研发、服务管理等方面提供了平台支持与接口支持,减少了开发人员对不同引擎架构的学习过程,提高了工作效率并降低了项目成本。