Computer Science and Application
Vol. 13  No. 04 ( 2023 ), Article ID: 64734 , 13 pages
10.12677/CSA.2023.134088

城市三维模型通用格式转换与可视化研究

饶加旺,周 松,邢策梅,尹跃强,于 琳,袁 星,陶金梅

江苏省测绘工程院江苏时空大数据建设中心,江苏 南京

收稿日期:2023年3月22日;录用日期:2023年4月21日;发布日期:2023年4月28日

摘要

目前,城市三维模型有多种数据格式,格式间相互转换除了带来较高成本以外,还会导致模型部件信息与属性信息发生变化,以及模型精度损失等不足。3D tiles格式以其WebGL渲染机制为基础,能够实现海量三维数据的快速加载,因此被作为城市三维模型数据转换的目标格式和通用格式,但在实践过程中,其三维格式数据无法直接被获取,给模型的通用性带来一定阻碍。为此,本文以某县级市商品住宅小区为例,基于开源语言与工具,探索一套城市三维模型(IFC格式)向通用格式3D tiles转换解决方案与可视化优化研究,完成了坐标转换、空间索引构建、视域剔除,以解决城市三维模型在大规模应用中存在的使用成本较高、平台与数据不兼容等问题。

关键词

三维模型,可视化,智慧城市,格式转换,WebGL,BIMServer

Research on Universal Format Transformation and Visualization of Urban 3D Model

Jiawang Rao, Song Zhou, Ceimei Xing, Yueqiang Yin, Lin Yu, Xing Yuan, Jinmei Tao

Jiangsu Spatiotemporal Big Data Construction Center, Jiangsu Province Surveying & Mapping Engineering Institute, Nanjing Jiangsu

Received: Mar. 22nd, 2023; accepted: Apr. 21st, 2023; published: Apr. 28th, 2023

ABSTRACT

At present, many data formats were presented in three-dimensional urban models. In addition to high cost, conversion between formats will also result in changes in the information of model parts and attributes, and loss of model accuracy too. The 3D tiles format was based on its WebGL rendering mechanism and can realize fast loading of massive three-dimensional data. Therefore, it was the target format and common format for data conversion of the city three-dimensional model. However, its three-dimensional format data cannot be obtained directly in practice, which hinders the universality of the model. For this reason, based on the open source language and tools, this paper takes a commercial residential district in a county-level city as an example, and explored a set of technical process and solution for lossless transformation from the three-dimensional urban model (IFC format) to a universal format 3D tiles, coordinate conversion, spatial index and viewing frustum culling were completed during the conversion process, in order to solve the problems of high cost, incompatible platform and data in large-scale application of the three-dimensional urban model.

Keywords:3D Model, Visualization, Smart City, Format Conversion, WebGL, BIMServer

Copyright © 2023 by author(s) and Hans Publishers Inc.

This work is licensed under the Creative Commons Attribution International License (CC BY 4.0).

http://creativecommons.org/licenses/by/4.0/

1. 引言

随着科技的快速发展,城市三维模型逐步向语义化和拓扑化发展 [1] ,不仅日益成为智慧城市建设的一项重要工作,也是构建自然资源三维立体时空数据库的重要组成部分,在三维不动产、二三维一体化、实景三维等应用领域发挥重要作用 [2] 。城市三维模型数据包含两类信息:几何信息(存储了建筑物的组成部分)、语义属性信息。IFC (Industry Foundation Classes)标准能够较好地支持模型中建筑物对象层中实体语义描述、空间定位、几何形态、属性特征、要素相互关系及演化的表达 [3] 。Cesium所使用的3D tiles,以WebGL渲染机制为基础,能够实现海量三维数据的快速加载,因此被作为城市三维模型数据转换的目标格式,也是OGC (Open Geospatial Consortium)组织的标准化格式与通用格式之一 [4] 。

在三维模型建模过程中,3D tiles格式无法直接被获取 [5] ,因此国内外多家单位与研究人员在三维模型通用格式转换及优化方面进行了探索与实践,主要有以下三个特点:1) 以Bentley公司研发的Cesium Sandcastle功能包为例,在实现三维格式的转换后,将3D tiles格式文件以URL地址封装,转换过程完全“黑盒”,价格较为昂贵 [6] ;2) AutoDesk公司研发出商用的格式工厂软件FormItConverter,在转换过程中存在三维模型的渲染效果降低和改变原模型的几何纹理等问题 [7] ;3) Chen等人开发了一套开源转换方案 [1] ,在转换过程中需要预先获知模型的结构信息 [8] 。OBJ、IFC、glTF等格式的模型数据在几何表达、属性信息、展示范围、和坐标系统等方面均与3D tiles格式存在明显差异 [1] ,使得当前城市三维模型在大规模应用中具有较大局限。为解决城市三维模型在大规模应用中存在的使用成本较高、平台与数据不兼容、模型渲染加载慢等问题,本研究以国内某县级城市商品住宅小区为例,基于开源语言与工具,探索一套城市三维模型格式向3D tiles转换技术流程与可视化优化方法。

2. 研究方法

以某县级市的商品住宅小区为例,该小区包含17幢楼,如图1所示,其中1~8幢为花园洋房、12~13幢为高层建筑(层高33层)、14~15幢为小高层、16幢为售楼处、9幢和17幢为商铺,本文以该小区5幢、13幢、15幢三栋为例,建模软件为Revit,模型格式为IFC 2 × 3 TC,将IFC格式的模型按照实际建筑物构件进行拆分,分解成包含模型部件属性的JSON格式文件和包含部件几何形状信息的IFC文件,转化为OBJ格式,再转换为glTF格式,由于3D tiles数据内嵌了二进制的glTF (glb),并完成坐标转换和空间索引构建,最终将glTF文件和包含模型部件属性信息的JSON文件封装得到瓦片格式的b3dm文件,获得3D tiles格式的成果。具体转换流程如图2所示。

Figure 1. Three dimensional overview of the community

图1. 小区三维概况

Figure 2. The conversion flowchart of IFC to 3D tiles format

图2. IFC向3D tiles格式转换流程图

2.1. IFC文件分解

将较大的IFC模型直接转换成OBJ格式会导致属性信息的缺失 [1] ,因此需要将IFC模型按照部件进行分解。实践中首先要解决IFC部件查询的问题,其次是分解过程中信息无丢失,第三是保留各个部件属性的完整性与关联性。已有转换工具可直接将较大的IFC文件按部件转换成单个、较小的OBJ格式的文件,如Open 3D Model Viewer软件和BIMServer,前者转换过程中存在部件信息缺失、无法关联等问题;后者作为一个开源开发项目,用于存储与管理BIM模型,具有模型检查、版本控制、合并与过滤BIM模型并动态输出IFC文件等功能 [9] ,通常将IFC文件上传至BIMServer,其次按照建筑物部件进行分解,对IFC文件内所有对象进行遍历,将包含几何信息的对象按照模型分解成较小的IFC文件导出,同时以JSON文件保留对象的属性信息,是较为常用的方法之一,但该方法需要对IFC对象模型模式以及结构等有先验知识,在查询过程中容易存在部件丢失的情况。综上,本文结合图论方法 [10] 对IFC模型实施查询与分解,将获取的IFC部件信息与BIMServer内的部件信息进行匹配,从而获得与其对应的JSON文件。

首先将IFC模型按照各部件的关系转换成有向图G(V, E),如图3所示,将墙体(IFCWall)关联的所有材质、附属设备关联图3(a)映射成了有向图,如图3(b)所示;其次利用最短路径算法确定各对象的关联关系,从而实现对整个IFC模型的遍历,实现对IFC的分解。

(a) (b)

Figure 3. Transformation of IFC model into directed graph: (a) IFC model graph; (b) Directed graph

图3. 将IFC模型转换成有向图:(a) IFC模型图;(b) 有向图

以5幢首层为例,IFC模型格式为IFC 2 × 3,从IFCRelationship、IFCRelAssigns、IFCRelDecomposes、IFCRelAssociates、IFCRelDefines、IFCRelConnects类型中获取的56个目标对象,例如需要获取标记为wal#1的IFCWall的材质信息,计算wal#1与IFCMaterial的最短距离(wal#1, relc#1, wal#2, relm#2, mat#3)值为5,但其语义上正确路径是(wal#1, relm#1, mlsu#1, matls#1, matl#1, mat#2)值为6,两者的最短距离不一致,如图4所示。

Figure 4. Paths of directed graph of 5#’s first floor

图4. 5幢首层的有向路径图

为避免错误的语义结果输出,引入了关系主图GM、关系子图GR和模型查询图GS三个部分,其中V为顶点集合、E为结点集合,各目标对象对应的主图、关系子图和模型查询图如图5所示。

关系主图GM作为IFC模型查询的基础,由模型所有的顶点VM及其关系组成,无需获知IFC模型的格式、也无需预先定义。模型查询图GS用于实际查询,是主图与所有关系子图的并集,定义如式(1)所示:

G S ( V S , E S ) = G M G S | G S G R (1)

关系子图GR由所有的顶点Vsub,i及其继承顶点Vsub,j和两者的关系组成。

每个关系子图GSub由代表IFC模型对象化的顶点及对应各个关系属性和边组成,关系子图的定义为 G R { G S u b , 1 ( V S u b , 1 , E S u b , 1 ) , , G S u b , n ( V S u b , n , E S u b , n ) } 图5中的关系子图GSub(IFCRelAssMat)定义如式(2)。

Figure 5. Model search graph using relation subgraphs and main graphs

图5. 使用关系子图与主图生成模型搜索图

G S u b ( I F C R e l A s s M a r ) = ( V S , E S ) (2)

其中:

V S = ( r e l m # 1 , w a l # 1 , m l s u # 1 , r e l m # 2 , w a l # 2 , m a t # 3 ) (3)

E S = ( ( r e l m # 1 , w a l # 1 ) , ( w a l # 1 , r e l m # 1 ) , ( r e l m # 1 , m l s u # 1 ) , ( m l s u # 1 , r e l m # 1 ) , ( r e l m # 2 , w a l # 2 ) , ( w a l # 2 , r e l m # 2 ) , ( r e l m # 2 , m a t # 3 ) , ( m a t # 3 , r e l m # 2 ) ) (4)

最短路径算法参考Dijkstra提出的(具体请参考文献 [11] ),用于IFC模型的查询,在5幢首层的结构上,IFCWall(wal#1)与IFCMaterial(mat#3)对象的最短路径已确定,IFCMaterial的属性已确定,例如为“石膏板”,因此可知所有的IFCWall对象由石膏板组成。利用模型查询图依次遍历,最终获取了IFC模型的各个部件的名称及对应的ID。

2.2. IFC文件向OBJ格式转换

IFC和OBJ文件,因为它们都是常见的数据格式。如前所述,IFC包含三维模型和大量有关建筑的语义信息。OBJ文件仅包含几何图形信息和材料,因此可以作为用于转换3D建筑模型的介质。

2.3. IBJ格式转换成glTF

glTF代表GL传输格式,这种格式是开源的,结构如图6所示,模型的属性信息包括材质、节点的级别等存放在JSON格式文件中,bin文件包含了模型的元数据信息、坐标等;glsl包含了着色信息。

Figure 6. Format structure diagram of glTF

图6. glTF格式结构图

2.4. glTF转换成3D Tiles格式

3D tiles数据中内嵌了二进制的glTF,3D tiles生成器首先为提供的每个glTF文件创建一个实例,当生成器开始创建实例时,它会解析每个glTF文件并找到其对应的JSON文件,由于该实例的类名与不带扩展名的文件名相同,并且其属性是从JSON文件中提取的,因此每个组件的文件中的第一个JSON对象包含诸如“对象名称”、“IFC类型”、“GUID”和“BATID”之类的信息,通过在每个文件中查询名称为“Dimensions”和“Constraints”的IFCPropertySets来提取剩余的属性;然后将这些实例包含在批处理表层次结构中的b3dm头文件中,最终由glTF格式转换后的b3dm数据与瓦片数据集文件(Tileset.json)文件共同组成3D tiles数据。

2.5. 坐标转换

由于数据范围不同,使得IFC模型与3D tiles展示数据的坐标差异问题,因此需要将IFC的几何信息向三维数字地球对应的世界坐标系进行转换。通常假设IFC模型中坐标原点在3D tiles格式的世界坐标系的坐标为(x1, y1, z1),Z轴垂直地面向上,Y轴指北,各坐标轴对应的转换矩阵是Rx、Ry、Rz;θx、θy、θz是转换矢量与X轴、Y轴、Z轴的夹角。两坐标系之间的转换矩阵Tt的计算方法如式(5)~式(9)所示:

T t = R x R y R z T (5)

R x = [ 1 0 0 0 cos θ x sin θ x 0 sin θ x cos θ x ] (6)

R y = [ cos θ y 0 sin θ y 0 1 0 sin θ y 0 cos θ y ] (7)

R z = [ 1 0 0 0 cos θ z sin θ z 0 sin θ z cos θ z ] (8)

T = [ 1 0 0 0 1 1 x 1 y 1 z 1 ] (9)

2.6. 空间索引构建

通过空间索引的构建,使得瓦片数据集存在合理的LOD层级划分,确保三维模型数据在加载效率的同时,提高模型渲染速率,由于3D tiles瓦片空间索引结构存在相同层级之间可以交互存在,且可以不规则分布,因此本文选用八叉树结构构建空间索引,使用三个正交拆分平面将tile细分为八个子级来扩展四叉树。

2.7. 视域剔除

三维模型在加载与渲染时往往只有小部分数据被用于展示,在空间索引建立的基础上,需要对其他数据进行视域剔除,以减少渲染时的干扰,提高数据的加载速率,包括视锥体剔除、背面剔除两个部分。

1) 剔除视锥体

剔除包围盒与视锥体不相交的数据,如图7所示,(x, y)为视点的坐标,h为视域范围半径, α 为夹角,r为几何误差,h由以下几何关系构建,如式(10)所示。

Figure 7. Schematic diagram of culling frustum

图7. 剔除视锥体示意图

h = ( y x × tan α 2 ) × cot α 2 (10)

若h < r,则不加载该节点;若h > r,加载该节点。

2) 剔除背面

在模型加载与渲染时,物体A的实线面是可见的,如图8所示,虚线面不可见。利用WebGL提供的接口函数,可剔除虚线面。

Figure 8. Schematic diagram of culling backface

图8. 背面剔除示意图

3. 实施流程

3.1. IFC分解

选择5幢、13幢、15幢三幢IFC格式的BIM为测试数据,测试电脑的性能:处理器Intel(R) Core(TM) I7-11800H @ 2.30 GHz,内存:16 GB,操作系统:Windows 10 64位专业版。

利用JGraphT [12] 软件执行IFC模型的查询与分解,该步骤主要完成三类部件的拆分,首先是IFC部件类别,包含了IfcWindow、IfcDoor、IfcColumn、IfcBuildingElementProxy、IfcBeam、IfcCovering、IfcRailing、IfcFlowTerminal、IfcFurnishingElement;其次是部件的墙体信息,包含了IfcSlab、IfcWall;第三是部件的组合部件,包含IfcStair、IfcSite等,部分执行代码如下:

#1= IFCWALL('2kdjgs2dDDfGGFD7dfjg3D',#41,'drywall',$,'STD 16.0:3918',#457,#90);

#2= ICRELASSOCIATESMATERIAL('3DKFdgdkfdg34DFldfdg',#4,$,$,(#43303),#91);

#3= IFCMATERIALLAYER(#930,0.02,$);

#4= IFCMATERIALLAYER(#,0.5,$);

...

#20= IFCMATERIALLAYERSET((#925,#921,#956),$);

#21= IFCMATERIAL('plasterboard');

#22= IFCMATERIAL('plaster');

获取了IFC模型的各个部件的名称及对应的ID,并按照ID对各IFC部件文件进行命名,保存至本地,待下一步转换使用。

将其与BIMServer [13] 中部件信息进行匹配,得到各部件对应的JSON格式的属性信息。经测试通过使用图论的搜索方法,查询与分解速率比使用BIMServer均有不同程度的提高,如图9所示。

经分解后,各类IFC部件名称以及各自的数量如表1所示。

3.2. IFC向3D Tiles格式转换

IfcOpenShell是一个开源(LGPL)软件库,用于处理IFC文件格式到OBJ格式的转换框架,使用IfcConvert [14] 工具将分解后的IFC文件批量转换成每个OBJ格式的文件,同时生成MLF格式的每个部件的材质信息。

Figure 9. Comparison time of IFC decomposition

图9. IFC分解时间对比

Table 1. IFC component name and quantity statistics

表1. IFC部件名称以及数量统计

表1所示,由于拆分后每个部件数据较多,为确保转换的高效运行,本文基于R语言,编写shell语句,执行IfcConvert工具的IfcConvet.exe程序,批量化实现IFC格式向OBJ格式转换处理。

obj2glTF [15] 工具是由Cesium团队开发,用于将OBJ格式转换成glTF格式的工具,本文使用obj2glTF工具将上一步生成的OBJ格式文件转换成glTF格式。

使用Cesium发布的“3D-tiles-tool Sample Generator” [16] (3D tiles生成器)开源工具,将glTF和JSON (Streaming)文件分组为具有批处理表层次结构的b3dm文件,由于各部件的几何形状与属性信息具有一一对应关系,由此在转换过程中不存在信息丢失的情况。IFC文件分解与格式转换、5幢IFC各部件分解及转换结果如表2表3所示,在由IFC向OBJ,以及OBJ向glTF、glTF向3D tiles转换的过程中,仍然存在耗时比较长的情况。

Table 2. Time and file size required for IFC file decomposition and format conversion

表2. IFC文件分解以及格式转换所需时间、文件大小

Table 3. Decomposition and conversion of IFC documents

表3. 5幢IFC文件分解及转换情况

3.3. 可视化优化

利用WebGL可视化软件对转换后的结果经剔除视锥体和剔除背面可视化的模型进行加载渲染测试,如图10所示。以5幢为例优化前后加载的帧数均在55 fps左右,经可视化优化后,加载帧数稳定且加载时间更短,当模型较大时,帧数不稳定与加载时长较长将会导致用户体验不佳,且优化前后不改变模型的大小,本方法与传统使用几何算法以减少三维模型大小的轻量化方法 [17] 相比,更适用于较大模型的Web端加载与渲染。

Figure 10. Compare graph of frame rate before and after visual optimization procession

图10. 优化前后帧数对比图

在Cesium环境下,为转换的b3dm文件添加Tileset.json瓦片集文件,在Chrome浏览器下直接使用URL地址访问,5幢的模型效果图(3D tiles格式)如图11所示。

Figure 11. Effect of converting to 3D tiles format

图11. 转换成3D tiles格式效果

以5幢的Slab (厚板)信息为例,IFC格式的原始模型几何形状与属性信息如图12所示,经上述IFC的分解和转换,最终生成3D tiles格式,在Cesium环境下查询该厚板信息,返回的属性信息与原始模型的相同,如图13所示,表明本文方法在较好实现格式转换的同时,保持了各部件属性信息。

Figure 12. Information of slab in origin IFC model (Green highlight)

图12. IFC原始模型厚板信息(绿色高亮部分)

Figure 13. Information of slab in 3D tiles format (Gray part)

图13. 3D Tiles格式下厚板信息(灰色部分)

4. 结论与讨论

本文基于开源语言R、开源软件JGraphT、BIMServer、IfcConvert、Obj2glTF、3D-tiles-tool Sample Generator设计了三维模型IFC格式按照部件进行分解,通过格式转换最终得到通用的3D tiles格式文件,并保留了模型的属性信息,且在转换过程中无需预知模型的结构信息。在模型可视化优化方面,通过格式转换将模型转换成以瓦片加载的方式,提高了模型加载与渲染效率,实现了对模型的可视化优化。由表2表3可知,IFC到3D tiles的转换是一个耗时且资源密集型的过程,在最终的glTF到b3dm转换步骤中,从单个组件构造b3dm文件的方式在很大程度上取决于模型的复杂程度,为了优化转换结果,本文下一步考虑使用层次细节层次(HLOD),这对于提高渲染性能至关重要。本文方法主要对IFC 2 × 3 TC格式进行了尝试,对IFC4格式支持较少,对3D模型的渲染材料考虑较少,这些将作为后续改进的动力。

致谢

感谢江苏省测绘工程院刘许清高级工程师为本文提供部分素材。

基金项目

江苏省自然资源厅指导性科研项目。

文章引用

饶加旺,周 松,邢策梅,尹跃强,于 琳,袁 星,陶金梅. 城市三维模型通用格式转换与可视化研究
Research on Universal Format Transformation and Visualization of Urban 3D Model[J]. 计算机科学与应用, 2023, 13(04): 902-914. https://doi.org/10.12677/CSA.2023.134088

参考文献

  1. 1. Chen, Y., Shooraj, E., Rajabifard, A. and Sabri, S. (2018) From IFC to 3D Tiles: An Integrated Open-Source Solution for Visualising BIMs on Cesium. International Journal of Geo-Information, 7, Article 393. https://doi.org/10.3390/ijgi7100393

  2. 2. 自然资源部. 自然资源三维立体时空数据库主数据库设计方案(2021版) [EB/OL]. http://search.mnr.gov.cn/axis2/download/P020211015565071755006.pdf, 2021-10-15.

  3. 3. Industry Foundation Clas-ses (IFC)—An Introduction. International Building Smart. http://technical.buildingsmart.org/standards/ifc/?sfw=pass1651025936

  4. 4. 3D Tiles. Open Geospatial Consortium. https://www.ogc.org/standards/3DTiles

  5. 5. 徐照, 张路, 索华, 迟英姿. 基于工业基础类的建筑物3D Tiles数据可视化[J]. 浙江大学学报(工学版), 2019, 53(6): 1047-1056.

  6. 6. Buyukdemircioglu, M. and Kocaman, S. (2021) Geovisualizaiton of Aerial Photogrammetric Flights for Data Auqlity Assessment. The International Archives of the Photogrammetry, Remote Sensing and Spatial Information Sciences, 43, 333-338.

  7. 7. Huang, X.-Y., Yang, S.-F. and Lee, K.-F. (2020) Research on 4D Visualized Dynamic Construction of BIM Building Decoration. IOP Conference Se-ries: Earth and Environmental Science, 619, Article ID: 012081. https://doi.org/10.1088/1755-1315/619/1/012081

  8. 8. Tauscher, E. and Smarsly, K. (2016) Generic BIM Queries Based on the IFC Object Model Using Graph Theory. The 16th International Conference on Computing in Civil and Building Engineering, Osaka, 6-8 July 2016, 1-8.

  9. 9. Moyano, J., León, J., Nieto-Julián, J.-E. and Bruno, S. (2021) Semantic Interpretation of Architectural and Archaeological Geometries: Point Cloud Segmentation for HBIM Parame-terisation. Automation in Construction, 130, Article ID: 103856. https://doi.org/10.1016/j.autcon.2021.103856

  10. 10. Gradišar, L. and Dolenc, M. (2021) IFC and Monitoring Data-base System Based on Graph Data Models. Advances in Civil Engineering, 2021, Article ID: 4913394. https://doi.org/10.1155/2021/4913394

  11. 11. Bulut, O., Shin, J. and Cormier, D.C. (2022) Learning Analytics and Computerized Formative Assessments: An Application of Dijkstra’s Shortest Path Algorithm for Personalized Test Scheduling. Mathematics, 10, Article 2230. https://doi.org/10.3390/math10132230

  12. 12. JGraphT: A Java Library of Graph Theory Data Structures and Algo-rithms. JGraphT. https://jgrapht.org/

  13. 13. BIMServer API. BIM Server. https://github.com/opensourceBIM/BIMServer

  14. 14. IfcOpenShell. IfcOpenShell. https://github.com/IfcOpenShell/IfcOpenShell

  15. 15. Obj2gltf. AnalyticalGraphics Inc. https://github.com/AnalyticalGraphicsInc/obj2gltf

  16. 16. 3D-Tiles-Tools Sample Generator. Cesium Inc. https://github.com/AnalyticalGraphicsInc/3d-tiles-tools

  17. 17. 高喆, 王佳, 周小平, 等. 跨平台的建筑信息模型展示技术研究[J]. 建筑技术, 2017, 48(4): 405-407.

期刊菜单