• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      BIM模型相連構(gòu)件獲取方法

      2020-11-24 06:18:22蘇鼎丁周小平
      土木建筑工程信息技術(shù) 2020年2期
      關(guān)鍵詞:碰撞檢測(cè)構(gòu)件網(wǎng)格

      蘇鼎丁 王 佳, 2 周小平

      (1.北京建筑大學(xué)電氣與信息工程學(xué)院,北京 100044;2.北京建筑大學(xué)建筑節(jié)能與安全監(jiān)控研究所,北京 102616)

      引言

      BIM模型中集成了建筑的諸多信息,如幾何、空間關(guān)系[1]、數(shù)量和屬性等信息[2],信息完備的模型可以貫穿整個(gè)建筑的生命周期,為建筑的全生命周期提供服務(wù)。BIM模型中包含了建筑的全部信息,這些信息之間彼此關(guān)聯(lián),其中所包含的構(gòu)件間連接關(guān)系在建模時(shí)就已經(jīng)存在。然而由于模型在建立過(guò)程中并不都十分規(guī)范,或者由于BIM模型的源文件—IFC文件解析時(shí)出現(xiàn)問(wèn)題,使得從業(yè)者獲得相連構(gòu)件有一定困難,因此本研究提出了一種以改良的OBB包圍盒碰撞檢測(cè)算法為基礎(chǔ)的相連構(gòu)件查找方法。

      本研究中針對(duì)的是以通用交互格式工業(yè)基礎(chǔ)類(IFC)文件為數(shù)據(jù)源文件的BIM模型,IFC標(biāo)準(zhǔn)IFC2x3包括600多個(gè)實(shí)體(Entity)以及300多個(gè)枚舉、選擇等類,還包含各種建筑部件間的語(yǔ)義連接關(guān)系[3]。其中IfcRelationship是一個(gè)比較特殊的概念,用來(lái)描述實(shí)體對(duì)象間的相互關(guān)系,IFC把建筑實(shí)體之間的關(guān)系,以及概念之間的關(guān)系都抽象為對(duì)象,任何兩個(gè)對(duì)象之間的聯(lián)系都要通過(guò)IfcRelationship聯(lián)系。IfcRelationship中定義了IfcRelConnects子類,該子類定義了兩個(gè)或多個(gè)對(duì)象間的某種方式的連接關(guān)系[4]。目前獲取相連構(gòu)件的方法主要是通過(guò)對(duì)IFC文件進(jìn)行解析,通過(guò)解析IfcRelConnects子類中的連接關(guān)系獲得相連構(gòu)件。

      本研究中根據(jù)BIM模型中所包含的構(gòu)件的語(yǔ)義信息、幾何信息等,可以獲得任意兩個(gè)構(gòu)件的位置,再給其中一個(gè)構(gòu)件一偏移量,然后利用OBB包圍盒碰撞檢測(cè)算法判斷兩構(gòu)件是否發(fā)生碰撞,若發(fā)生碰撞,則為相連構(gòu)件,若未發(fā)生碰撞,則為不相連構(gòu)件。

      1 OBB包圍盒碰撞檢測(cè)算法

      包圍盒技術(shù)的基本思想是先使用簡(jiǎn)單的幾何體來(lái)代替復(fù)雜的幾何體,再根據(jù)包圍盒在分離軸上是否有重疊來(lái)判斷其包圍的幾何體是否發(fā)生碰撞。包圍體類包括球體、軸對(duì)齊包圍盒(AABB)和有向包圍盒(OBB)。其中,包圍球和AABB的緊密性較差,并不適用于本研究中對(duì)于相連構(gòu)件的檢測(cè)。而OBB包圍盒始終沿著物體的主成分方向生成一個(gè)最小的矩形包圍盒,這個(gè)包圍盒可以隨物體旋轉(zhuǎn),能夠用于比較精確的碰撞檢測(cè)。所以,本研究中采用了OBB包圍盒算法。

      1.1 構(gòu)建OBB包圍盒

      本研究中需要構(gòu)建的是BIM模型中各個(gè)構(gòu)件的包圍盒,以IFC文件為源文件的BIM模型在經(jīng)過(guò)解析之后可以將實(shí)體幾何表達(dá)轉(zhuǎn)換為三角網(wǎng)格(triangle mesh)數(shù)據(jù)[5],這些三角網(wǎng)格數(shù)據(jù)構(gòu)建成了模型的構(gòu)件,這些構(gòu)件可能是規(guī)則的凸多面體,也可能是弧形或者其他特殊形狀的多面體,本研究中的OBB包圍盒將根據(jù)這兩種情況來(lái)構(gòu)建。

      構(gòu)建出的OBB包圍盒一般是長(zhǎng)方體,構(gòu)建時(shí)多用一個(gè)中心點(diǎn)、一個(gè)旋轉(zhuǎn)矩陣和三個(gè)1/2邊長(zhǎng)來(lái)確定OBB包圍盒。由于OBB包圍盒的三條邊的方向有任意性,所以其計(jì)算方法比其他包圍體更為復(fù)雜,目前常用的方法是利用主成分分析法(PCA)構(gòu)建OBB包圍盒。

      構(gòu)建OBB包圍盒時(shí),根據(jù)物體表面的頂點(diǎn),通過(guò)主成分分析獲得特征向量,也就是OBB包圍盒的主軸。在本小節(jié)構(gòu)建OBB包圍盒的算法中,通過(guò)遍歷表達(dá)構(gòu)件幾何的三角網(wǎng)格頂點(diǎn),分析主成分即可獲得始終沿構(gòu)件主體方向的OBB主軸。主成分分析中引入?yún)f(xié)方差矩陣[6]:

      (1)

      其中,i與j為構(gòu)件內(nèi)任意三角網(wǎng)格點(diǎn),通過(guò)計(jì)算其x,y,z值的協(xié)方差表達(dá)2個(gè)三角網(wǎng)格點(diǎn)相關(guān)性。再將協(xié)方差矩陣對(duì)角化、計(jì)算得出特征向量,此特征向量即為凸多面體的OBB方向軸,再計(jì)算得到中心點(diǎn),此時(shí)OBB包圍盒形成。

      由于BIM模型中可能有弧形或者其他特殊形狀的構(gòu)件存在,所以需要對(duì)構(gòu)建的OBB包圍盒進(jìn)行檢測(cè)。若包圍盒的大小與構(gòu)件的大小一致,則該構(gòu)件為規(guī)則的凸多面體,所構(gòu)建的OBB包圍盒為構(gòu)件的包圍盒,若不一致,則需引入層次包圍盒。

      由于構(gòu)件的幾何模型是由三角網(wǎng)格數(shù)據(jù)構(gòu)成的,所以可以采用自頂向下的方法構(gòu)造層次包圍盒樹(shù),以BIM模型中的構(gòu)件為根節(jié)點(diǎn),遞歸劃分組成構(gòu)件的三角網(wǎng)格數(shù)據(jù),同時(shí)計(jì)算出對(duì)應(yīng)的OBB包圍盒,直到遞歸結(jié)束,即可生成構(gòu)件的OBB包圍盒層次樹(shù)。

      本研究中OBB包圍盒層次樹(shù)的構(gòu)造原則為[7]:

      步驟1:對(duì)構(gòu)件建立OBB包圍盒,將該包圍盒作為OBB包圍盒層次樹(shù)的根節(jié)點(diǎn)且該包圍盒包含了構(gòu)件中所有三角網(wǎng)格;

      步驟2:選擇當(dāng)前OBB節(jié)點(diǎn)中最長(zhǎng)的一條邊作為分裂軸,該邊的中點(diǎn)為分裂點(diǎn),過(guò)該分裂點(diǎn)并且與分裂軸相垂直的平面作為分裂平面,劃分三角網(wǎng)格時(shí),根據(jù)其中心點(diǎn)所在的位置,將三角網(wǎng)格劃分在分裂平面的兩邊。此時(shí)得到了兩個(gè)三角網(wǎng)格的集合,用這兩個(gè)三角網(wǎng)格集合可以得到兩個(gè)OBB包圍盒,并分別以這兩個(gè)OBB節(jié)點(diǎn)作為當(dāng)前節(jié)點(diǎn),遞歸執(zhí)行步驟2,如果不可以分裂,則執(zhí)行步驟3;

      步驟3:選擇當(dāng)前OBB節(jié)點(diǎn)的次長(zhǎng)軸進(jìn)行分裂,如果可以分裂,則將新生成的OBB節(jié)點(diǎn)作為當(dāng)前節(jié)點(diǎn),執(zhí)行步驟2,如果不可以分裂,則執(zhí)行步驟4;

      步驟4:選擇最短的邊,如果不可以進(jìn)行分裂,則該三角網(wǎng)格集合不可以再分,將其作為葉子節(jié)點(diǎn),如果可以進(jìn)行分裂,則分別生成兩個(gè)OBB節(jié)點(diǎn)作為當(dāng)前節(jié)點(diǎn),執(zhí)行步驟2。

      圖1是根據(jù)此原則構(gòu)造OBB包圍盒層次樹(shù)的過(guò)程,其中S形構(gòu)件由虛線表示,該過(guò)程在構(gòu)件包圍盒的三個(gè)軸都無(wú)法分裂時(shí)為止。

      圖1 OBB包圍盒層次樹(shù)

      1.2 OBB包圍盒碰撞檢測(cè)

      OBB包圍盒相較于其他包圍盒具有方向的任意性,可以更緊密地包圍模型,但是這也使得其碰撞檢測(cè)變得更為復(fù)雜。判定OBB包圍盒是否發(fā)生碰撞主要采用了分離軸定律。

      定義1 分離軸定律[8]。如果存在一個(gè)向量,使得被檢測(cè)的幾何體在該軸上的投影不相交,那么這根軸就是一根分離軸,如果找不到分離軸,那么被檢測(cè)的幾何體相交。

      本研究中涉及到了兩種構(gòu)件類型,一種是規(guī)則的凸多面體,這種構(gòu)件的碰撞檢測(cè)可以通過(guò)直接檢測(cè)兩個(gè)OBB包圍盒在軸上的投影是否有重疊來(lái)判斷是否發(fā)生碰撞,而對(duì)于弧形或者其他特殊形狀的構(gòu)件,可以采用以下步驟[10]:

      步驟1:將根節(jié)點(diǎn)作為當(dāng)前節(jié)點(diǎn);

      步驟2:判斷當(dāng)前節(jié)點(diǎn)是否與給定的OBB包圍盒發(fā)生碰撞,如果發(fā)生了碰撞則執(zhí)行步驟3,如果未發(fā)生碰撞,則執(zhí)行步驟4;

      步驟3:如果該節(jié)點(diǎn)沒(méi)有未檢測(cè)的兄弟節(jié)點(diǎn),表明該節(jié)點(diǎn)未發(fā)生碰撞,如果該節(jié)點(diǎn)還有未檢測(cè)的兄弟節(jié)點(diǎn),則依次將下一個(gè)兄弟節(jié)點(diǎn)作為當(dāng)前節(jié)點(diǎn),遞歸執(zhí)行步驟2;

      步驟4:判斷當(dāng)前節(jié)點(diǎn)是否為葉子節(jié)點(diǎn),如果是,則表明該頂點(diǎn)發(fā)生了碰撞,記下當(dāng)前節(jié)點(diǎn)后,碰撞檢測(cè)結(jié)束; 如果該節(jié)點(diǎn)不是葉子節(jié)點(diǎn),則將該節(jié)點(diǎn)的所有子節(jié)點(diǎn)依次作為當(dāng)前節(jié)點(diǎn),然后遞歸執(zhí)行步驟2。

      二維實(shí)例如圖3所示,分別對(duì)組成構(gòu)件1與構(gòu)件2的三角網(wǎng)格頂點(diǎn)的位置坐標(biāo)P1=(x1,y1)與P2=(x2,y2)進(jìn)行主成分分析、包圍盒構(gòu)建,由此可得到四個(gè)潛在分離軸α,β,γ,δ以及兩個(gè)構(gòu)件的包圍盒; 再根據(jù)分離軸定律進(jìn)行碰撞檢測(cè),即檢測(cè)在四個(gè)潛在分離軸上的投影是否均發(fā)生重疊。將未發(fā)生碰撞的構(gòu)件標(biāo)為灰色,發(fā)生碰撞的構(gòu)件標(biāo)為紅色,則OBB包圍盒算法效果圖如圖2所示,圖2(a)中為未發(fā)生碰撞的構(gòu)件,這兩個(gè)構(gòu)件分別有兩個(gè)方向軸α,β和γ,δ,但是他們?cè)谳Sα上的投影未發(fā)生重疊,所以軸α為這兩個(gè)構(gòu)件的分離軸,這兩個(gè)構(gòu)件未發(fā)生碰撞。而圖2(b)中為發(fā)生碰撞的構(gòu)件,這兩個(gè)構(gòu)件在他們的方向軸α,β,γ和δ上的投影均有重疊,所以這兩個(gè)構(gòu)件發(fā)生了碰撞,改變顏色為紅色。

      (a)未發(fā)生碰撞的構(gòu)件,構(gòu)件為灰色

      (b)發(fā)生碰撞的構(gòu)件,構(gòu)件變?yōu)榧t色圖2 OBB包圍盒碰撞檢測(cè)

      2 查找相連構(gòu)件

      2.1 幾何信息提取

      IFC文件包含了BIM模型中構(gòu)件的語(yǔ)義、幾何以及建筑構(gòu)件間的連接關(guān)系等信息,目前國(guó)內(nèi)外約有100家軟件開(kāi)發(fā)商的產(chǎn)品支持通過(guò)IFC標(biāo)準(zhǔn)格式共享和交換BIM數(shù)據(jù)[1]?;贗FC存儲(chǔ)的多種類型的幾何模型數(shù)據(jù)[11],經(jīng)過(guò)解析之后可以轉(zhuǎn)換為三角網(wǎng)格(triangle mesh)數(shù)據(jù)。三角網(wǎng)格結(jié)構(gòu)簡(jiǎn)單清晰,易于讀取,是目前在圖形研究上比較通用的幾何表達(dá)格式。本研究中對(duì)構(gòu)件的幾何要求為其基本輪廓與位置信息,因此,需提取出構(gòu)件的三角網(wǎng)格頂點(diǎn)。然而IFC標(biāo)準(zhǔn)中定義的構(gòu)件位置與坐標(biāo)系包含了絕對(duì)坐標(biāo)與相對(duì)坐標(biāo),提取出的數(shù)據(jù)還需進(jìn)行處理才能使用[12]。

      本研究中主要采用小紅磚開(kāi)放平臺(tái)[13]解析完成的BIM模型進(jìn)行研究。從小紅磚開(kāi)放平臺(tái)中可以獲取構(gòu)件的位置坐標(biāo)矩陣positions、索引矩陣index和旋轉(zhuǎn)矩陣matrix。將位置坐標(biāo)矩陣與旋轉(zhuǎn)矩陣相乘即可得到世界坐標(biāo)下的位置矩陣。

      2.2 獲得相連構(gòu)件

      BIM模型中包含諸多構(gòu)件,構(gòu)件間關(guān)系有兩種情況,分別是相連構(gòu)件和相分離構(gòu)件,二維示意圖如圖3所示。

      (a)相連構(gòu)件

      (b)相分離構(gòu)件圖3 BIM模型中構(gòu)件的兩種情況

      由于OBB包圍盒碰撞檢測(cè)的原理是對(duì)坐標(biāo)信息的處理,所以可以對(duì)構(gòu)件的位置坐標(biāo)信息進(jìn)行變換來(lái)獲取相連構(gòu)件。本研究中用改進(jìn)的OBB包圍盒算法碰撞檢測(cè)算法來(lái)達(dá)成檢測(cè)相連構(gòu)件的目的。該算法賦予了構(gòu)件一位移量ε,通過(guò)檢測(cè)構(gòu)件和賦予位移量后的另一構(gòu)件是否發(fā)生碰撞來(lái)檢測(cè)兩構(gòu)件是否為相連構(gòu)件。二維實(shí)例如圖4所示,圖中為兩種情況下的構(gòu)件分別賦予位移量ε后的情況,即分別給一構(gòu)件在軸α正方向、軸δ反方向的微小位移量ε,則構(gòu)件的三角網(wǎng)格頂點(diǎn)的位置坐標(biāo)信息變換為P=(x′,y′),同樣對(duì)組成兩構(gòu)件的三角網(wǎng)格頂點(diǎn)的位置坐標(biāo)進(jìn)行主成分分析、包圍盒構(gòu)建,再根據(jù)分離軸定律進(jìn)行碰撞檢測(cè)。其二維結(jié)果分別如圖4中所示,相連構(gòu)件發(fā)生碰撞,而相分離構(gòu)件仍然未發(fā)生碰撞,由此便可獲得BIM模型中的相連構(gòu)件。

      (a)給一偏移量ε,相連構(gòu)件發(fā)生碰撞

      (b)給一偏移量ε,相分離構(gòu)件未發(fā)生碰撞圖4 BIM模型中構(gòu)件的兩種情況

      三維空間中,則需要分別給構(gòu)件在三個(gè)方向軸方向的微小偏移量ε,然后再將兩構(gòu)件進(jìn)行主成分分析、構(gòu)建包圍盒、碰撞檢測(cè),即可獲得相連構(gòu)件。然而分析BIM模型中構(gòu)件的關(guān)系可以發(fā)現(xiàn),門(mén)構(gòu)件插入墻構(gòu)件由兩個(gè)獨(dú)立的過(guò)程表示:首先,在墻內(nèi)創(chuàng)建門(mén)洞,然后將門(mén)插入門(mén)洞[9],所以只需直接構(gòu)建門(mén)構(gòu)件和墻構(gòu)件的OBB包圍盒然后進(jìn)行碰撞檢測(cè)即可。

      3 獲取相連構(gòu)件實(shí)例

      本節(jié)中主要通過(guò)三組示例來(lái)驗(yàn)證本獲取相連構(gòu)件算法的可行性,所使用的BIM模型均由小紅磚開(kāi)放平臺(tái)[13]解析完成。

      第一個(gè)實(shí)例為獲取規(guī)則凸多面體的相連構(gòu)件。如圖5所示,圖5(a)是某二居室BIM模型,若要獲得圖中藍(lán)色構(gòu)件的相連構(gòu)件,則需分別獲取各個(gè)構(gòu)件的三角網(wǎng)格數(shù)據(jù),并以此來(lái)構(gòu)建OBB包圍盒,通過(guò)檢測(cè),包圍盒的大小和構(gòu)件的大小一致,然后分別給藍(lán)色構(gòu)件的OBB包圍盒三個(gè)方向軸方向的微小位移量ε,因?yàn)樵撃P椭凶钚?gòu)件的最小尺寸為80.000mm(即窗構(gòu)件的厚度),所以選定ε=40.000mm,再檢測(cè)該構(gòu)件與其他構(gòu)件的碰撞情況,即可獲得藍(lán)色構(gòu)件的相連構(gòu)件。圖5(b)中將相連構(gòu)件高亮展示,即相連構(gòu)件為兩個(gè)墻構(gòu)件、一個(gè)樓板構(gòu)件和三個(gè)家具構(gòu)件。經(jīng)過(guò)目視檢查,本方法準(zhǔn)確獲得了目標(biāo)構(gòu)件的所有相連構(gòu)件,所以本方法可靠。

      (a)某二居室BIM模型

      (b)高亮顯示相連構(gòu)件圖5 BIM模型中某一墻構(gòu)件的相連構(gòu)件

      (a)某酒店某一層BIM模型

      (b)高亮顯示相連構(gòu)件圖6 BIM模型中某一弧形墻構(gòu)件的相連構(gòu)件

      第二個(gè)實(shí)例為獲取弧形構(gòu)件的相連構(gòu)件。如圖6所示,圖6(a)是某酒店某一層的BIM模型,若要獲得圖中藍(lán)色構(gòu)件的相連構(gòu)件,則需分別獲取各個(gè)構(gòu)件的三角網(wǎng)格數(shù)據(jù),并以此來(lái)構(gòu)建OBB包圍盒,通過(guò)檢測(cè),包圍盒比構(gòu)件的尺寸大,所以判定該構(gòu)件為不規(guī)則多面體,所以構(gòu)造層次包圍盒樹(shù),然后分別給藍(lán)色構(gòu)件的OBB層次包圍盒樹(shù)三個(gè)方向軸方向的微小位移量ε,因?yàn)樵撃P椭凶钚?gòu)件的最小尺寸為25.000mm(即窗構(gòu)件的厚度),所以選定ε=12.500mm,再檢測(cè)該構(gòu)件與其他構(gòu)件的碰撞情況,即可獲得藍(lán)色構(gòu)件的相連構(gòu)件。圖6(b)中將相連構(gòu)件高亮展示,即相連構(gòu)件為三個(gè)墻構(gòu)件和一個(gè)樓板構(gòu)件。經(jīng)過(guò)目視檢查,本方法準(zhǔn)確獲得了目標(biāo)構(gòu)件的所有相連構(gòu)件,所以本方法可靠。

      第三個(gè)實(shí)例為獲取門(mén)構(gòu)件的相連構(gòu)件。如圖7所示,圖7(a)是某一居室的BIM模型,若要獲得圖中藍(lán)色門(mén)構(gòu)件的相連構(gòu)件,則需分別獲取各個(gè)構(gòu)件的三角網(wǎng)格數(shù)據(jù),并以此來(lái)構(gòu)建OBB包圍盒,再檢測(cè)該門(mén)構(gòu)件與其他構(gòu)件的碰撞情況,即可獲得藍(lán)色門(mén)構(gòu)件的相連構(gòu)件。圖7(b)中將相連構(gòu)件高亮展示,即相連構(gòu)件為一個(gè)墻構(gòu)件。經(jīng)過(guò)目視檢查,該門(mén)構(gòu)件與樓板構(gòu)件并未連接,本方法中所獲取的相連構(gòu)件并未包含樓板構(gòu)件,所以本方法可靠。

      (a)某一居室BIM模型

      (b)高亮顯示相連構(gòu)件圖7 BIM模型中某一門(mén)構(gòu)件的相連構(gòu)件

      4 總結(jié)與展望

      本研究針對(duì)BIM模型中由于模型建立不規(guī)范或者IFC文件解析異常而導(dǎo)致的相連構(gòu)件無(wú)法獲取的現(xiàn)狀,提出了以改良的OBB包圍盒碰撞檢測(cè)算法為基礎(chǔ)的相連構(gòu)件查找方法。該方法獲取構(gòu)件的位置,并構(gòu)建OBB包圍盒,然后通過(guò)比較包圍盒的尺寸和構(gòu)件的大小來(lái)判斷是否需要構(gòu)建OBB層次包圍盒樹(shù),再根據(jù)構(gòu)建的包圍盒/層次包圍盒樹(shù)用改進(jìn)的碰撞檢測(cè)算法進(jìn)行碰撞檢測(cè),若進(jìn)行檢測(cè)的兩構(gòu)件發(fā)生碰撞,則為相連構(gòu)件,若未發(fā)生碰撞,則不為相連構(gòu)件。本研究提出的方法實(shí)現(xiàn)了對(duì)相連構(gòu)件的獲取,為BIM模型的二次開(kāi)發(fā)等提供了便利。

      猜你喜歡
      碰撞檢測(cè)構(gòu)件網(wǎng)格
      用全等三角形破解網(wǎng)格題
      全新預(yù)測(cè)碰撞檢測(cè)系統(tǒng)
      基于BIM的鐵路信號(hào)室外設(shè)備布置與碰撞檢測(cè)方法
      反射的橢圓隨機(jī)偏微分方程的網(wǎng)格逼近
      Unity3D中碰撞檢測(cè)問(wèn)題的研究
      重疊網(wǎng)格裝配中的一種改進(jìn)ADT搜索方法
      建筑構(gòu)件
      建筑構(gòu)件
      建筑構(gòu)件
      建筑構(gòu)件
      博客| 靖江市| 北票市| 右玉县| 革吉县| 松阳县| 贞丰县| 盐城市| 娄烦县| 河南省| 勃利县| 忻州市| 宜阳县| 大新县| 石棉县| 雅安市| 开江县| 临潭县| 武平县| 金阳县| 永德县| 武冈市| 石首市| 横山县| 响水县| 大丰市| 绥棱县| 普格县| 黄骅市| 定州市| 房山区| 永清县| 永康市| 阿拉尔市| 开鲁县| 平阴县| 堆龙德庆县| 洱源县| 广平县| 海城市| 清涧县|