Acquisition Method of Connected Components in BIM Model
-
摘要: 目前,由于BIM模型建立不规范和IFC文件解析时出现问题,从业者在获取相连构件时有一定困难,因此,本文提出了一种以改良的OBB包围盒碰撞检测算法为基础的相连构件查找方法。该方法首先获取任意两个构件的位置信息,再利用OBB包围盒算法构建包围盒,并对该包围盒进行检测,若包围盒的尺寸比构件的大,则构造该构件的OBB层次包围盒树,然后给其中一个构件的包围盒一偏移量,最后用碰撞检测算法检测两构件是否发生碰撞,若发生碰撞,则为相连构件,若未发生碰撞,则为不相连构件。
-
关键词:
- 建筑信息模型(BIM) /
- 构件关系 /
- 方向包围盒(OBB) /
- 碰撞检测
Abstract: At present, due to the non-standard establishment of BIM model and problems in IFC file parsing, practitioners have some difficulties in obtaining connected components. For this reason, this paper proposes a search method for connected components based on the improved OBB bounding box collision detection algorithm. This method firstly obtains the location information of any two components, and then create a bounding box by using the OBB algorithm for the next progress of detection. If the size of the bounding box is larger than that of the component, the OBB level bounding tree of the component is constructed. Given an offset to the bounding box of one component, then the collision detection algorithm is used to detect whether the two components collide. In case of collision, the two components are connected components, otherwise they are disconnected components.-
Keywords:
- BIM /
- Component Relationship /
- OBB /
- Collision Detection
-
引言
BIM模型中集成了建筑的诸多信息,如几何、空间关系[1]、数量和属性等信息[2],信息完备的模型可以贯穿整个建筑的生命周期,为建筑的全生命周期提供服务。BIM模型中包含了建筑的全部信息,这些信息之间彼此关联,其中所包含的构件间连接关系在建模时就已经存在。然而由于模型在建立过程中并不都十分规范,或者由于BIM模型的源文件—IFC文件解析时出现问题,使得从业者获得相连构件有一定困难,因此本研究提出了一种以改良的OBB包围盒碰撞检测算法为基础的相连构件查找方法。
本研究中针对的是以通用交互格式工业基础类(IFC)文件为数据源文件的BIM模型,IFC标准IFC2x3包括600多个实体(Entity)以及300多个枚举、选择等类,还包含各种建筑部件间的语义连接关系[3]。其中IfcRelationship是一个比较特殊的概念,用来描述实体对象间的相互关系,IFC把建筑实体之间的关系,以及概念之间的关系都抽象为对象,任何两个对象之间的联系都要通过IfcRelationship联系。IfcRelationship中定义了IfcRelConnects子类,该子类定义了两个或多个对象间的某种方式的连接关系[4]。目前获取相连构件的方法主要是通过对IFC文件进行解析,通过解析IfcRelConnects子类中的连接关系获得相连构件。
本研究中根据BIM模型中所包含的构件的语义信息、几何信息等,可以获得任意两个构件的位置,再给其中一个构件一偏移量,然后利用OBB包围盒碰撞检测算法判断两构件是否发生碰撞,若发生碰撞,则为相连构件,若未发生碰撞,则为不相连构件。
1. OBB包围盒碰撞检测算法
包围盒技术的基本思想是先使用简单的几何体来代替复杂的几何体,再根据包围盒在分离轴上是否有重叠来判断其包围的几何体是否发生碰撞。包围体类包括球体、轴对齐包围盒(AABB)和有向包围盒(OBB)。其中,包围球和AABB的紧密性较差,并不适用于本研究中对于相连构件的检测。而OBB包围盒始终沿着物体的主成分方向生成一个最小的矩形包围盒,这个包围盒可以随物体旋转,能够用于比较精确的碰撞检测。所以,本研究中采用了OBB包围盒算法。
1.1 构建OBB包围盒
本研究中需要构建的是BIM模型中各个构件的包围盒,以IFC文件为源文件的BIM模型在经过解析之后可以将实体几何表达转换为三角网格(triangle mesh)数据[5],这些三角网格数据构建成了模型的构件,这些构件可能是规则的凸多面体,也可能是弧形或者其他特殊形状的多面体,本研究中的OBB包围盒将根据这两种情况来构建。
构建出的OBB包围盒一般是长方体,构建时多用一个中心点、一个旋转矩阵和三个1/2边长来确定OBB包围盒。由于OBB包围盒的三条边的方向有任意性,所以其计算方法比其他包围体更为复杂,目前常用的方法是利用主成分分析法(PCA)构建OBB包围盒。
构建OBB包围盒时,根据物体表面的顶点,通过主成分分析获得特征向量,也就是OBB包围盒的主轴。在本小节构建OBB包围盒的算法中,通过遍历表达构件几何的三角网格顶点,分析主成分即可获得始终沿构件主体方向的OBB主轴。主成分分析中引入协方差矩阵[6]:
$ A = \left[ \begin{array}{l} {\mathop{\rm cov}} \left( {{x_i}, {x_j}} \right)\;\;\;{\mathop{\rm cov}} \left( {{x_i}, {y_j}} \right)\;\;\;{\mathop{\rm cov}} \left( {{x_i}, {z_j}} \right)\\ {\mathop{\rm cov}} \left( {{x_j}, {y_i}} \right)\;\;\;{\mathop{\rm cov}} \left( {{y_i}, {y_j}} \right)\;\;\;{\mathop{\rm cov}} \left( {{y_i}, {z_j}} \right)\\ {\mathop{\rm cov}} \left( {{x_j}, {z_i}} \right)\;\;\;{\mathop{\rm cov}} \left( {{y_j}, {z_i}} \right)\;\;\;{\mathop{\rm cov}} \left( {{z_i}, {z_j}} \right) \end{array} \right. $
(1) 其中,i与j为构件内任意三角网格点,通过计算其x,y,z值的协方差表达2个三角网格点相关性。再将协方差矩阵对角化、计算得出特征向量,此特征向量即为凸多面体的OBB方向轴,再计算得到中心点,此时OBB包围盒形成。
由于BIM模型中可能有弧形或者其他特殊形状的构件存在,所以需要对构建的OBB包围盒进行检测。若包围盒的大小与构件的大小一致,则该构件为规则的凸多面体,所构建的OBB包围盒为构件的包围盒,若不一致,则需引入层次包围盒。
由于构件的几何模型是由三角网格数据构成的,所以可以采用自顶向下的方法构造层次包围盒树,以BIM模型中的构件为根节点,递归划分组成构件的三角网格数据,同时计算出对应的OBB包围盒,直到递归结束,即可生成构件的OBB包围盒层次树。
本研究中OBB包围盒层次树的构造原则为[7]:
步骤1:对构件建立OBB包围盒,将该包围盒作为OBB包围盒层次树的根节点且该包围盒包含了构件中所有三角网格;
步骤2:选择当前OBB节点中最长的一条边作为分裂轴,该边的中点为分裂点,过该分裂点并且与分裂轴相垂直的平面作为分裂平面,划分三角网格时,根据其中心点所在的位置,将三角网格划分在分裂平面的两边。此时得到了两个三角网格的集合,用这两个三角网格集合可以得到两个OBB包围盒,并分别以这两个OBB节点作为当前节点,递归执行步骤2,如果不可以分裂,则执行步骤3;
步骤3:选择当前OBB节点的次长轴进行分裂,如果可以分裂,则将新生成的OBB节点作为当前节点,执行步骤2,如果不可以分裂,则执行步骤4;
步骤4:选择最短的边,如果不可以进行分裂,则该三角网格集合不可以再分,将其作为叶子节点,如果可以进行分裂,则分别生成两个OBB节点作为当前节点,执行步骤2。
图 1是根据此原则构造OBB包围盒层次树的过程,其中S形构件由虚线表示,该过程在构件包围盒的三个轴都无法分裂时为止。
1.2 OBB包围盒碰撞检测
OBB包围盒相较于其他包围盒具有方向的任意性,可以更紧密地包围模型,但是这也使得其碰撞检测变得更为复杂。判定OBB包围盒是否发生碰撞主要采用了分离轴定律。
定义1分离轴定律[8]。如果存在一个向量,使得被检测的几何体在该轴上的投影不相交,那么这根轴就是一根分离轴,如果找不到分离轴,那么被检测的几何体相交。
OBB包围盒属于凸多面体,检测碰撞时,二维空间中凸多面体的潜在分离轴有4根,分别为两个凸多面体的OBB方向轴;三维空间中凸多面体的潜在分离轴最多有15根,分别是每个凸多面体的3根方向轴,一个凸多面体的一条边矢量与另一个凸多面体的边矢量的叉乘,即有C31×C31=9根潜在分离轴。根据分离轴定律,若两个构件的OBB包围盒在所有轴上的投影都发生重叠,则判定为两构件发生碰撞,否则为未发生碰撞。
本研究中涉及到了两种构件类型,一种是规则的凸多面体,这种构件的碰撞检测可以通过直接检测两个OBB包围盒在轴上的投影是否有重叠来判断是否发生碰撞,而对于弧形或者其他特殊形状的构件,可以采用以下步骤[10]:
步骤1:将根节点作为当前节点;
步骤2:判断当前节点是否与给定的OBB包围盒发生碰撞,如果发生了碰撞则执行步骤3,如果未发生碰撞,则执行步骤4;
步骤3:如果该节点没有未检测的兄弟节点,表明该节点未发生碰撞,如果该节点还有未检测的兄弟节点,则依次将下一个兄弟节点作为当前节点,递归执行步骤2;
步骤4:判断当前节点是否为叶子节点,如果是,则表明该顶点发生了碰撞,记下当前节点后,碰撞检测结束;如果该节点不是叶子节点,则将该节点的所有子节点依次作为当前节点,然后递归执行步骤2。
二维实例如图 3所示,分别对组成构件1与构件2的三角网格顶点的位置坐标P1=(x1,y1)与P2=(x2,y2)进行主成分分析、包围盒构建,由此可得到四个潜在分离轴α,β,γ,δ以及两个构件的包围盒;再根据分离轴定律进行碰撞检测,即检测在四个潜在分离轴上的投影是否均发生重叠。将未发生碰撞的构件标为灰色,发生碰撞的构件标为红色,则OBB包围盒算法效果图如图 2所示,图 2(a)中为未发生碰撞的构件,这两个构件分别有两个方向轴α,β和γ,δ,但是他们在轴α上的投影未发生重叠,所以轴α为这两个构件的分离轴,这两个构件未发生碰撞。而图 2(b)中为发生碰撞的构件,这两个构件在他们的方向轴α,β,γ和δ上的投影均有重叠,所以这两个构件发生了碰撞,改变颜色为红色。
2. 查找相连构件
2.1 几何信息提取
IFC文件包含了BIM模型中构件的语义、几何以及建筑构件间的连接关系等信息,目前国内外约有100家软件开发商的产品支持通过IFC标准格式共享和交换BIM数据[1]。基于IFC存储的多种类型的几何模型数据[11],经过解析之后可以转换为三角网格(triangle mesh)数据。三角网格结构简单清晰,易于读取,是目前在图形研究上比较通用的几何表达格式。本研究中对构件的几何要求为其基本轮廓与位置信息,因此,需提取出构件的三角网格顶点。然而IFC标准中定义的构件位置与坐标系包含了绝对坐标与相对坐标,提取出的数据还需进行处理才能使用[12]。
本研究中主要采用小红砖开放平台[13]解析完成的BIM模型进行研究。从小红砖开放平台中可以获取构件的位置坐标矩阵positions、索引矩阵index和旋转矩阵matrix。将位置坐标矩阵与旋转矩阵相乘即可得到世界坐标下的位置矩阵。
2.2 获得相连构件
BIM模型中包含诸多构件,构件间关系有两种情况,分别是相连构件和相分离构件,二维示意图如图 3所示。
由于OBB包围盒碰撞检测的原理是对坐标信息的处理,所以可以对构件的位置坐标信息进行变换来获取相连构件。本研究中用改进的OBB包围盒算法碰撞检测算法来达成检测相连构件的目的。该算法赋予了构件一位移量ε,通过检测构件和赋予位移量后的另一构件是否发生碰撞来检测两构件是否为相连构件。二维实例如图 4所示,图中为两种情况下的构件分别赋予位移量ε后的情况,即分别给一构件在轴α正方向、轴δ反方向的微小位移量ε,则构件的三角网格顶点的位置坐标信息变换为P=(x′,y′),同样对组成两构件的三角网格顶点的位置坐标进行主成分分析、包围盒构建,再根据分离轴定律进行碰撞检测。其二维结果分别如图 4中所示,相连构件发生碰撞,而相分离构件仍然未发生碰撞,由此便可获得BIM模型中的相连构件。
三维空间中,则需要分别给构件在三个方向轴方向的微小偏移量ε,然后再将两构件进行主成分分析、构建包围盒、碰撞检测,即可获得相连构件。然而分析BIM模型中构件的关系可以发现,门构件插入墙构件由两个独立的过程表示:首先,在墙内创建门洞,然后将门插入门洞[9],所以只需直接构建门构件和墙构件的OBB包围盒然后进行碰撞检测即可。
3. 获取相连构件实例
本节中主要通过三组示例来验证本获取相连构件算法的可行性,所使用的BIM模型均由小红砖开放平台[13]解析完成。
第一个实例为获取规则凸多面体的相连构件。如图 5所示,图 5(a)是某二居室BIM模型,若要获得图中蓝色构件的相连构件,则需分别获取各个构件的三角网格数据,并以此来构建OBB包围盒,通过检测,包围盒的大小和构件的大小一致,然后分别给蓝色构件的OBB包围盒三个方向轴方向的微小位移量ε,因为该模型中最小构件的最小尺寸为80.000mm(即窗构件的厚度),所以选定ε=40.000mm,再检测该构件与其他构件的碰撞情况,即可获得蓝色构件的相连构件。图 5(b)中将相连构件高亮展示,即相连构件为两个墙构件、一个楼板构件和三个家具构件。经过目视检查,本方法准确获得了目标构件的所有相连构件,所以本方法可靠。
第二个实例为获取弧形构件的相连构件。如图 6所示,图 6(a)是某酒店某一层的BIM模型,若要获得图中蓝色构件的相连构件,则需分别获取各个构件的三角网格数据,并以此来构建OBB包围盒,通过检测,包围盒比构件的尺寸大,所以判定该构件为不规则多面体,所以构造层次包围盒树,然后分别给蓝色构件的OBB层次包围盒树三个方向轴方向的微小位移量ε,因为该模型中最小构件的最小尺寸为25.000mm(即窗构件的厚度),所以选定ε=12.500mm,再检测该构件与其他构件的碰撞情况,即可获得蓝色构件的相连构件。图 6(b)中将相连构件高亮展示,即相连构件为三个墙构件和一个楼板构件。经过目视检查,本方法准确获得了目标构件的所有相连构件,所以本方法可靠。
第三个实例为获取门构件的相连构件。如图 7所示,图 7(a)是某一居室的BIM模型,若要获得图中蓝色门构件的相连构件,则需分别获取各个构件的三角网格数据,并以此来构建OBB包围盒,再检测该门构件与其他构件的碰撞情况,即可获得蓝色门构件的相连构件。图 7(b)中将相连构件高亮展示,即相连构件为一个墙构件。经过目视检查,该门构件与楼板构件并未连接,本方法中所获取的相连构件并未包含楼板构件,所以本方法可靠。
4. 总结与展望
本研究针对BIM模型中由于模型建立不规范或者IFC文件解析异常而导致的相连构件无法获取的现状,提出了以改良的OBB包围盒碰撞检测算法为基础的相连构件查找方法。该方法获取构件的位置,并构建OBB包围盒,然后通过比较包围盒的尺寸和构件的大小来判断是否需要构建OBB层次包围盒树,再根据构建的包围盒/层次包围盒树用改进的碰撞检测算法进行碰撞检测,若进行检测的两构件发生碰撞,则为相连构件,若未发生碰撞,则不为相连构件。本研究提出的方法实现了对相连构件的获取,为BIM模型的二次开发等提供了便利。
-
[1] Zhou X, Zhao J, Wang J, et al. OutDet:an algorithm for extracting the outer surfaces of building information models for integration with geographic information systems[J]. International Journal of Geographical Information Science, 2019, 33(7): 1444-1470. DOI: 10.1080/13658816.2019.1572894
[2] Bazjanac V. Virtual building environments(VBE)-applying information modeling to buildings[J]. August, 2006, 29: 2009.
[3] 张建平, 张洋, 张新.基于IFC的BIM三维几何建模及模型转换[J].土木建筑工程信息技术, 2009, 1(1): 40-46. DOI: 10.3969/j.issn.1674-7461.2009.01.007 [4] 徐文彦, 邓涛, 徐夏炎.基于IFC标准的Tekla Structure数据文件导出方法分析[J].信息系统工程, 2014, (10): 143-146. DOI: 10.3969/j.issn.1001-2362.2014.10.089 [5] Zhou X, Wang J, Guo M, et al. Cross-platform online visualization system for open BIM based on WebGL[J]. Multimedia Tools and Applications, 2019, 78(20): 28575-28590. DOI: 10.1007/s11042-018-5820-0
[6] 黄楠鑫, 王佳, 李智, 等.基于IFC的室内地图模型构建研究[J].图学学报, 2019, 40(1): 186-192. http://d.old.wanfangdata.com.cn/Periodical/gctxxb201901027 [7] 魏迎梅, 石教英, 吴泉源.虚拟环境中的碰撞检测方法[J].计算机工程与科学, 2001, 23(2): 44-47. DOI: 10.3969/j.issn.1007-130X.2001.02.012 [8] 陈尚飞.基于分离轴理论的有向包围盒重叠测试算法[J].广西科学院学报, 2005, 21(3): 196-198. DOI: 10.3969/j.issn.1002-7378.2005.03.019 [9] BuildingSMART. The buildingSMART data model[Z/OL].(2013-5-31) https://standards.buildingsmart.org/IFC/DEV/IFC2x3/FINAL/HTML/.
[10] 贺怀清, 岳军红, 杨国庆.OBB层次结构及其应用加速算法的研究[J].计算机工程, 2005, 31(z1): 234-235, 238. http://d.old.wanfangdata.com.cn/Periodical/jsjgc2005z1088 [11] 汤圣君, 朱庆, 赵君峤.BIM与GIS数据集成:IFC与CityGML建筑几何语义信息互操作技术[J].土木建筑工程信息技术, 2014, 6(4): 11-17. DOI: 10.3969/j.issn.1674-7461.2014.04.002 [12] Shi Pingwang, Lin Liangfan, Deng Xueyuan[J]. Research on Representation and Management of IFC-Based Building Components[J].Journal of Graphics, 2016, 37(2): 249-256. http://www.wanfangdata.com.cn/details/detail.do?_type=perio&id=gctxxb201602018
[13] 盈嘉互联.小红砖[EB/OL].(2019-05- 10)[2020-02-05]. https://www.bos.xyz/. -
期刊类型引用(0)
其他类型引用(1)