Demand-oriented dynamic loading method based on IFC
-
摘要: 为解决Web端建筑信息模型(BIM,Building Information Modeling)场景数据加载技术面向复杂模型数据时存在的加载时间过长、用户体验不佳的问题,提出一种Web端基于工业基础类(IFC,Industry Foundation Classes)标准的面向需求的动态加载方法。以IFC模型文件作为研究对象,在遵从建筑语义前提下,以建筑构件为粒度,将层次关系、几何特性、材质、属性等信息拆分存储;结合构件可见性和几何相关性,设计出基于图形处理器(GPU,Graphics Processing Unit)加速的面向需求的动态加载方法;搭建实验测试环境,选取若干IFC模型文件,进行方法验证。以初始加载构件个数、内存占用和初始加载时间作为性能评价指标,与使用BIMServer开源服务器平台加载的方法相比,文章所提方法的初始加载组件数量减少了约71%,内存占用减少了约40%,初始加载时间缩短了约78%,有效减少了用户因加载而等待的时间,改善了用户交互体验,可为铁路行业开展Web端BIM大场景应用提供快速加载技术支持。
-
关键词:
- 建筑信息模型(BIM) /
- 工业基础类(IFC)标准 /
- IFC模型文件 /
- 分时动态加载 /
- 图形处理器(GPU)
Abstract: In order to solve the problems of long loading time and poor user experience when building information modeling (BIM) scene data loading technology on the Web side faced complex model data, this paper proposed a IFC (Industry Foundation Classes) based demand-oriented dynamic loading method on the Web side. The paper took IFC model files as the research object, took building components as the granularity, split and stored hierarchical relationship, geometric features, material, properties and other information, combined component visibility and geometric correlation components, designed a demand-oriented dynamic loading method based on GPU (Graphics Processing Unit) acceleration, build an experimental test environment, selected several IFC model files, and verified the method. The paper used the number of initially loaded components, memory consumption and initial loading time as performance evaluation indicators. Compared with the method of loading using the BIMServer, the experimental results show that the proposed method improves the number of initially loaded components, memory consumption and initial loading time by about 71%, 40% and 78% respectively, reduces the time users wait for loading, and improves the user interaction experience. It can provide fast loading technical support for railway industry to carry out Web-end BIM big scene application. -
建筑信息模型(BIM,Building Information Model)已成为工业互联网在智慧建筑方向的研究热点,特别是BIM软件之间的数据交换技术和Web渲染技术备受相关研究人员的关注。BuildingSMART[1]提出并成为BIM数据交换国际标准的工业基础类(IFC,Industry Foundation Classes)标准 [2],进一步加快了BIM应用的研究与成果落地。Web端BIM大场景应用是未来发展趋势,IFC标准在实际应用中存在以下问题:IFC模型文件数据并非直接可渲染数据,为满足渲染要求,其数据需要经过转换处理;BIM场景数据体量较大时,受制于网络带宽、浏览器性能、网页渲染技术等多方面因素,Web端BIM应用的用户体验不佳。
为解决上述问题,近年来的研究主要集中在IFC模型文件数据解析与转换优化、BIM可视化应用等方面。在IFC模型文件转换方面,刘强等人[3]提出一种基于键值缓存的IFC模型文件Web应用技术,将IFC模型文件解析成JSON格式,为数据在网络传输提供基础;徐照等人[4]提出一种基于WebGL的渲染方法,开发了IFC-OBJ转换工具,但未考虑OBJ模型文件不可分割、过大时加载时间过长,甚至无法完成加载等问题。BIM可视化应用方面,Hong-Lei Lu等人[5]在Scully T等人[6-7]提出的大模型分割策略基础上考虑语义划分,提出了基于语义对IFC大模型划分,实现构件语义划分并对模型进行分割后,利用空间索引完成场景加载,其划分策略依赖语义数据集,数据集收集和语义划分模型训练实现较为复杂,且需要为特定场景定制算法模型;李柯等人[8]提出云边页协同的Web端BIM多粒度在线可视化框架,定义构件兴趣度,在复杂遮挡场景中,效果不佳;刘小军等人[9]提出一种面向手机网页的大规模Web端BIM场景实时漫游算法,该算法从构件实例冗余、构件及空间混合索引、多粒度数据动态装/卸载策略3个方面对场景进行管理和加载,其空间划分剔除算法,仅适合遮挡关系较强的构件,需要提前设定遮挡物,设定遮挡物工作量较大,且通用性受限;BIMServer[10]为开源的IFC模型文件处理、Web端BIM场景加载工具集,作为BuildingSMART推荐的工具集,将IFC模型文件层次关系、几何特性、材质、属性等数据分开加载,在一定程度上解决了BIM大场景应用问题,但未考虑构件加载优先级。基于上述研究,本文提出基于IFC标准的面向需求的动态加载(IFC based Demand-Oriented Dynamic Loading,DODL)方法。对IFC数据进行解析转换,将层次关系、几何特性、材质、属性等数据拆分存储,在原数据基础上,拓展辅助场景加载的字段;为优化Web端BIM大场景加载,提出基于GPU加速实现构件需求计算方法,计算需要加载的构件集合,并利用几何相关性设计构件加载优先级,计算构件加载顺序;通过网络服务,完成BIM大场景加载。
1 铁路BIM应用流程
根据铁路BIM应用实际情况,BIM应用流程可分为3部分,如图1所示。
1.1 数据源
建模人员使用CATIA等设计软件完成三维模型后,导出IFC格式模型数据,为数据共享和应用奠定基础。
1.2 数据处理
读取IFC模型文件,解析层次关系、几何特性、材质、属性等数据,重点处理无法直接渲染的拓扑几何,并将结构化JSON格式数据存储在数据库中,为后续场景加载提供支撑。IFC模型文件无法直接用于计算机图形渲染,需要对其进行解析和处理,此过程耗时且对硬件资源要求较高,为减少数据处理时间,可利用云服务器资源完成此过程。
1.3 数据应用
搭建Web应用,Web端通过网络服务,加载BIM场景,结合铁路业务开展应用。
2 IFC模型文件处理
2.1 处理过程
IFC模型文件处理即是对IFC模型文件解析、转换、拆分、存储的过程,该过程主要分为2部分:
(1)使用python脚本,制定特定类型正则表达式,过滤IFC.exp文件中的基本类型、枚举类型、select类型、实体类型,并根据类型定义与继承关系,生成可用于编译的CPP文件,为IFC模型文件读取与解析奠定基础;
(2)读取IFC模型文件,根据CPP文件,在运行时动态生成IFC实例对象,通过查询IFC实例对象,将层次关系、几何特性、材质、属性等数据进行拆分与转换,并将结果存储到数据库。
2.2 拆分过程
IFC实例对象拆分过程如下:
(1)为构建模型层次关系,以IfcProject实例对象为入口,筛选IfcProduct类型实例对象,区分出空间结构元素和非空间结构元素(构件节点),将空间结构元素构造为组节点对象,处理节点属性和局部矩阵等信息,递归处理空间结构元素包含的节点和关联的节点,直至非空间结构元素的节点;
(2)对非空间结构元素处理,判断其包含的Items属性的实例类型,分别处理几何、拓扑、映射、材质类型数据,几何和拓扑类型数据需要借助几何算法库Open CASCADE[11]实现几何、拓扑生成与网格剖分,进而构造叶子节点存储几何数据,并建立几何与叶子节点间的关联关系。
拆分后数据结构如图2所示。
表 1 字段含义说明字段名 含义 bits 数据长度 box 包围盒 edge_count 边个数 face_count 面个数 geom_uuid 几何标识 localMatrix 局部矩阵 mate 材质标识集 name 名字 p_uuid 父节点标识 type 类型 uuid 节点标识 version 版本 visible 可见性 childrens 子节点集 texture 纹理贴图 transparency 透明度 color 颜色 diffuse 漫反射光 index 顶点索引 normal 顶点法向 position 顶点坐标 uv 顶点二维坐标 tag 边/面标签 3 DODL方法
在网络资源有限的情况下,BIM大场景无法通过一次网络请求完成整个场景加载时,有必要考虑构件的加载优先级。用户通过计算机外设与模型进行交互,定位到特定视角查看模型,用户视角范围内的模型构件即用户需求的构件,应具有较高加载优先级,需要优先完成加载。
3.1 基于GPU加速的构件需求计算
初始加载过程如下。
(1)根据模型标识,请求模型层次关系数据;从网络加载层次关系;根据层次关系中叶子节点的box字段,构建可用于渲染的辅助box网格。
(2)根据模型包围盒初始化视角,获取相机视锥参数,进而对场景进行视锥剔除,得到视锥内可见性构件集合。
(3)综合考虑效率与剔除精确性,采用WebGL 2.0接口,基于GPU对视锥剔除后集合box网格进行渲染查询,计算视锥体内box网格是否被遮挡。
(4)过滤出未遮挡构件集合,即需要加载的构件集合,根据构件几何唯一标识与优先级,完成加载。初始加载过程如图3所示。用户交互改变视角时,与初始加载不同,不需要网络请求模型、解析层次关系和构造可渲染box网格,只需要从视角剔除开始,加载未加载的构件数据。
3.2 基于几何相关性的构件加载优先级
构件自身的几何数据量比其他数据量大,因此,几何特性是影响构件加载优先级主要因素之一,例如,包围盒box的大小、复杂度等,其中,复杂度是指构件几何网格数据存储所占用的空间情况。本文层次关系定义中,bits字段可用于描述复杂度,单位为字节(byte)。因几何特性是影响加载优先级的主要因素,在设计构件加载优先级时,需重点关注几何特性。
几何相关性(CG,Correlation of Geometry)是构件包围盒体积与其复杂度的比值,表示为
$$ CG\left({c}_{i}\right)=\frac{\text{volume}\left({c}_{i}\right)}{bits\left({c}_{i}\right)} $$ (1) 公式(1)中,
$ CG\left({c}_{i}\right) $ 为构件$ {c}_{i} $ 的几何相关性;$ \text{bits}\left({c}_{i}\right) $ 为构件$ {c}_{i} $ 的复杂度;$ \text{volume}\left({c}_{i}\right) $ 为构件$ {c}_{i} $ 的包围盒box的体积;$ CG\left({c}_{i}\right) $ 的物理意义为单位字节传输空间体积大小。$ \text{bits}\left({c}_{i}\right) $ 越小、$ \text{volume}\left({c}_{i}\right) $ 越大,则$ CG\left({c}_{i}\right) $ 越大,加载到的数据对最后渲染到屏幕的影响越大,对用户的视觉影响越大,因此,加载优先级越高;反之,加载优先级越低。具体计算方法如下:借助几何算法库Open CASCADE,以不被遮挡的构件集合作为输入,遍历所有构件,利用式(1)计算几何相关性,并根据计算结果对构件集合由大到小排序,得到有序的加载构件集合。基于几何相关性的构件加载优先级计算步骤如下。
步骤 1:输入无序构建集合 C={ci, i=0, 1,…, M}。
步骤 2:若集合 C 中有元素 ci,则取出;若无,则结束。
步骤 3:查看 ci
剔除标识,若是,执行步骤 4;若不是,则跳转到步骤 5。 步骤 4:计算 ci
的几何相关性。 步骤 5:得出 c'i,插入、排序到集合 C' 。
步骤 6:重复Step 2,最终得到有序构建集合C' ={c'j , j=0, 1,…, N}。
4 实验与分析
4.1 实验环境
为验证本文提出的DODL方法的可用性和有效性,设定BIM场景加载过程中评价指标,搭建实验环境。选取公开数据集Open IFC Model Repositor[12]中IFC模型文件作为实验样本,借助几何算法库Open CASCADE,进行仿真实验,并与使用BIMServer开源服务器平台加载的方法进行比较。使用3个不同的IFC模型文件,选取初始加载构件个数、内存占用和初始加载时间作为性能评价指标。实验使用的IFC模型文件信息如表2所示,图4(a)~图4(c)分别为3个IFC模型文件默认视角下的渲染效果。
表 2 IFC模型文件信息模型名 子图序号 内存/KB 构件数/个 实体数/个 arboleda.ifc a 151 166 5 786 17 072 20210219Architecture.ifc b 110 672 7 637 34 852 industrial Park plant.ifc c 242 601 27 958 87 144 实验软/硬件环境配置:Intel(R) Core(TM) i7-11800H 处理器,16.0 GB内存,NVIDIA RTX3060显卡,64 bit Windows 11专业版21H2系统,Chrome版本为106.0.5249.103,对比组BIMServer 的版本为1.5.182。
4.2 初始加载构件数
初始加载构件数,即初始视角情景下,需要加载构件的个数,单位为个。3个IFC模型文件在DODL方法下初始加载构件数分别为1 252、2 178、4 547,相比BIMServer加载方法下的初始加载构件数5 786、7 637、27 958,分别减少了78%、71%、83%,如图5所示。实验结果表明,DODL方法可有效减少初始加载构件数。
4.3 占用内存
占用内存,即初始视角情景下,初始加载完成后,浏览器占用的内存,单位为MB。3个IFC模型文件在DODL方法下占用内存分别为125、156、346,相比BIMServer加载方法下占用的内存218、287、580,分别减少了42%、45%、40%,如图6所示。实验结果表明,DODL方法可有效减少初始加载时占用的内存。
4.4 初始化加载时间
初始化加载时间,即初始视角情景下,从网络请求开始至可见的构件加载完成时止,所用时间长短,单位为ms。3个IFC模型文件在DODL方法下初始化加载时间分别为2 641、4 631、8 867,相比BIMServer加载方法下的初始化加载时间13105、77 656、41 853,分别缩短了79%、94%、78%,如图7所示。实验结果表明,DODL方法可有效缩短初始化加载时间,减少用户因场景加载而等待的时间,提高了用户体验。
5 结束语
本文研究IFC模型文件处理、面向需求的动态加载方法,提出基于IFC的面向需求的动态加载方法,在IFC数据拆分存储基础上,通过对视锥内构件进行过滤、排序,实现基于IFC标准的面向需求的动态加载。通过实验,证明了所提方法的可行性和可用性,可改善用户体验,也可推广至其他非IFC格式的模型文件加载铁路BIM的应用场景。
在Web端加载BIM场景过程中,仍存在需要进一步解决的问题,例如:IFC模型文件处理过程耗时较长;模型场景加载的过程中,初始加载时受初始视角影响,不同初始视角下,加载构件数、初始加载时间、占用内存等均有不同。因此,今后将进一步研究缩短文件处理时间及最优化选取视角的方法。
-
表 1 字段含义说明
字段名 含义 bits 数据长度 box 包围盒 edge_count 边个数 face_count 面个数 geom_uuid 几何标识 localMatrix 局部矩阵 mate 材质标识集 name 名字 p_uuid 父节点标识 type 类型 uuid 节点标识 version 版本 visible 可见性 childrens 子节点集 texture 纹理贴图 transparency 透明度 color 颜色 diffuse 漫反射光 index 顶点索引 normal 顶点法向 position 顶点坐标 uv 顶点二维坐标 tag 边/面标签 表 2 IFC模型文件信息
模型名 子图序号 内存/KB 构件数/个 实体数/个 arboleda.ifc a 151 166 5 786 17 072 20210219Architecture.ifc b 110 672 7 637 34 852 industrial Park plant.ifc c 242 601 27 958 87 144 -
[1] BuildingSMART International. BuildingSMART industry foundation classes (IFC)[EB/OL]. [2022-08-22].https://www.buildingsmart.org/.
[2] ISO. Industry foundation classes (IFC) for data sharing in the construction and facility management industries: ISO 16739: 2013[S]. Geneva: ISO, 2013.
[3] 刘 强,张建平,胡振中. 基于键-值缓存的IFC模型Web应用技术 [J]. 清华大学学报(自然科学版),2016,56(4):348-353,359. [4] 徐 照,徐夏炎,李启明,等. 基于WebGL与IFC的建筑信息模型可视化分析方法 [J]. 东南大学学报(自然科学版),2016,46(2):444-449. [5] Lu H L, Wu J X, Liu Y S, et al. Dynamically loading IFC models on a web browser based on spatial semantic partitioning [J]. Visual Computing for Industry, Biomedicine, and Art, 2019, 2(1): 4. DOI: 10.1186/s42492-019-0011-z
[6] Scully T, Friston S, Fan C, et al. glTF streaming from 3D repo to X3DOM[C]//Proceedings of the 21st International Conference on Web3d Technology, 22-24 July, 2016, Anaheim, CA, USA. New York, USA: ACM, 2016. 7-15.
[7] Scully T, Doboš J, Sturm T, et al. 3drepo. io: building the next generation Web3D repository with AngularJS and X3DOM[C]//Proceedings of the 20th International Conference on 3D Web Technology, 18-21 June, 2015, Heraklion, Crete, Greece. New York, USA: ACM, 2015. 235-243.
[8] 李 柯,张 乾,贾金原. 云边页协同的WebBIM大场景多粒度兴趣加载调度算法 [J]. 计算机辅助设计与图形学学报,2021,33(9):1388-1397. [9] 刘小军,贾金原. 面向手机网页的大规模WebBIM场景轻量级实时漫游算法 [J]. 中国科学:信息科学,2018,48(3):274-292. [10] BIMServer[EB/OL]. [2022-08-22]. http://bimserver.org/.
[11] Open CASCADE[EB/OL]. [2022-08-22].https://www.opencascade.com/.
[12] Amor R, Dimyadi J. An open repository of IFC data models and analyses to support interoperability deployment[C]//Proceedings of the 27th CIB W78 International Conference, 16-18 November, 2010, Cairo, Egypt. Kanata, Canada: CIB, 2010.
-
期刊类型引用(1)
1. 陈建华,黄利民,许剑,安晓亚,郭建忠. 面向多元化需求的建筑信息模型轻量化方法研究. 中国建筑装饰装修. 2024(08): 69-72 . 百度学术
其他类型引用(1)