• 
    

    
    

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

      基于三角剖分算法的BIM模型高精度顯示方法

      2021-09-15 02:36:16王淑營(yíng)史海歐
      關(guān)鍵詞:剖分面片二次開發(fā)

      王 坭,王淑營(yíng),史海歐,袁 泉

      (1.西南交通大學(xué)信息科學(xué)與技術(shù)學(xué)院,四川 成都 611730; 2.廣州地鐵設(shè)計(jì)研究院股份有限公司,廣東 廣州 510010)

      0 引 言

      隨著住建部和科技部正式提出BIM(Building Information Modeling)技術(shù)的概念,BIM技術(shù)得到大量應(yīng)用。BIM技術(shù)是繼CAD(Computer Aided Design)之后在建筑等領(lǐng)域的又一次改革[1-2],BIM技術(shù)也是傳統(tǒng)建筑行業(yè)應(yīng)用的延伸,具有較大的應(yīng)用前景[3-4],而設(shè)計(jì)BIM模型使其應(yīng)用于建筑等行業(yè)也理所當(dāng)然成為熱門。目前市場(chǎng)中設(shè)計(jì)BIM模型的軟件中Revit以其功能強(qiáng)大、操作方便等特點(diǎn)占據(jù)了龍頭地位,Revit二次開發(fā)也隨之發(fā)展起來[5]。

      由于Revit中設(shè)計(jì)的BIM模型處于設(shè)計(jì)階段,該BIM模型在交付施工階段和運(yùn)維階段人員時(shí),人員必須機(jī)械地安裝專業(yè)軟件并懂得專業(yè)軟件知識(shí)。同時(shí),若是想查看多個(gè)模型,還需要手動(dòng)拷貝多個(gè)模型文件,模型修改后也需要將模型文件重新拷貝,極為不便,所以在Revit中設(shè)計(jì)出來的BIM模型需要在Web前端進(jìn)行渲染,才能在實(shí)際施工、運(yùn)維時(shí)得到更充分應(yīng)用[6-7]。隨著WebGL技術(shù)的興起,利用WebGL渲染BIM模型變得流行起來[8-9]。WebGL渲染BIM模型和計(jì)算幾何、圖形學(xué)、實(shí)體建模、數(shù)值模擬等領(lǐng)域的許多應(yīng)用類似,都需要將復(fù)雜的幾何分解成更簡(jiǎn)單的結(jié)構(gòu)進(jìn)行進(jìn)一步的處理。例如將一個(gè)平面域劃分為若干個(gè)單元,單元通常是三角形或四邊形[10-11]。

      依據(jù)簡(jiǎn)單凸多邊形的渲染速度非??斓奶攸c(diǎn),WebGL中被渲染的多邊形基本是凸多邊形。常見的凸多邊形有三角形、四邊形等。由于非三角形的凸多邊形在屏幕上的投影的點(diǎn)構(gòu)成的多邊形很可能變成一個(gè)復(fù)雜的凸多邊形,不能保證渲染結(jié)果與原始結(jié)果相同,所以一般采用三角型進(jìn)行渲染。采用三角型渲染有以下好處:1)三角形在屏幕上的投影最復(fù)雜也是三角形,可保證渲染結(jié)果正確;2)三角形也必然是一個(gè)平面,必然是平坦的,方便表述復(fù)雜圖形。

      在Revit二次開發(fā)中,利用二次開發(fā)提供的函數(shù)可以很好地得到BIM模型的所有面的三角面片以及面片對(duì)應(yīng)的點(diǎn)。根據(jù)IFC規(guī)則[12]可以將這些點(diǎn)合并成IFC文件并利用IFCViewer仿真,仿真模型的精度完全取決于這些三角面片的排列的順序。然而在Revit二次開發(fā)中,取模型的三角網(wǎng)格算法完全是一個(gè)“黑匣子”,精度較低,無法改變,這樣難免導(dǎo)致一些模型在還原時(shí)精度不高。所以本文提出一種結(jié)合Delaunary剖分算法的優(yōu)化算法來解決此問題。Delaunary剖分算法的主要優(yōu)勢(shì)體現(xiàn)在空?qǐng)A特性以及最大化最小角理論,有效地避免了狹長(zhǎng)三角形單元的產(chǎn)生[13],可以極大地避免低質(zhì)量單元格的產(chǎn)生。所以Delaunary剖分算法也是非常重要且流行的三角網(wǎng)格劃分算法[14-15]。

      傳統(tǒng)Delaunary剖分算法有其獨(dú)有的優(yōu)點(diǎn),但是也存在一些問題,在實(shí)際應(yīng)用中尚存在不足,因此歷代學(xué)者也提出了許多Delaunary剖分算法的優(yōu)化算法,如:“邊界收縮”法[16]、凸閉包集[17]等?!斑吔缡湛s”法將網(wǎng)格索引應(yīng)用在逐點(diǎn)插入法上,同時(shí)設(shè)置合理的剖分尺度解決了斷層數(shù)據(jù)的合理嵌入問題;凸閉包集提高了三角網(wǎng)生成速率和計(jì)算精度,但是計(jì)算過于復(fù)雜不易理解。也有許多學(xué)者對(duì)三角網(wǎng)格是否能夠加入點(diǎn)從而提高網(wǎng)格精度、在何處加入點(diǎn)提高網(wǎng)格精度展開了研究,如:選擇最長(zhǎng)邊的中點(diǎn)法[18],這種算法雖然簡(jiǎn)單易懂,但是只是單純考慮了網(wǎng)格內(nèi)部質(zhì)量;選擇外接圓圓心法[19],但是此算法不適用于一個(gè)平面只有一個(gè)三角面片的情況(Revit二次開發(fā)得到的三角面片有一部分為此種情況)。本文通過改變精確點(diǎn)插入位置使得域外三角形不會(huì)出現(xiàn)且算法簡(jiǎn)單易懂,同時(shí)三角剖分算法在實(shí)際中也得到了充分利用,如:基于STL文件的鑄件表面三角網(wǎng)格生成法[2]、自然場(chǎng)景多視點(diǎn)圖像文本檢測(cè)法[20]、Delaunay三角剖分構(gòu)造橢圓Gabriel圖的垃圾清除算法[21]、利用三角網(wǎng)格模擬地質(zhì)界面特征法[22]。本文在借鑒上述基礎(chǔ)研究的同時(shí)發(fā)現(xiàn),在利用三角剖分算法來改善Revit自身導(dǎo)出的三角網(wǎng)格質(zhì)量這個(gè)領(lǐng)域還極少有人涉足,因此,本文在此基礎(chǔ)上完成研究工作。

      1 基本理論

      1.1 Delaunary剖分算法

      本文提出的優(yōu)化算法會(huì)使用到Delaunary剖分算法,所以首先對(duì)Delaunary剖分算法進(jìn)行一個(gè)簡(jiǎn)單的介紹:在滿足Delaunary剖分算法的眾多算法中,B-W算法因?yàn)槠渌枷牒?jiǎn)單、易于實(shí)現(xiàn)而被廣泛應(yīng)用于Delaunary三角形的求解,具體過程如下(見圖1):

      步驟1 根據(jù)初始點(diǎn)規(guī)劃出一個(gè)超級(jí)三角形把這些點(diǎn)全部包括在內(nèi),如圖1(a)所示。

      (a) 初始點(diǎn)及超級(jí)三角形

      (a) Revit原始模型(規(guī)則)

      步驟2 逐個(gè)計(jì)算這些初始點(diǎn)與其他三角形外接圓的關(guān)系,如圖1(b)所示。

      步驟3 找到關(guān)系后按照B-W算法刪除舊邊,添加新邊,如圖1(c)所示。

      步驟4 計(jì)算全部點(diǎn)后,將超級(jí)三角形以及其對(duì)應(yīng)的邊全部刪除,剩下部分即為所求結(jié)果,如圖1(d)所示。

      1.2 針對(duì)Revit二次開發(fā)的面片優(yōu)化算法

      在Revit二次開發(fā)中,通過Mesh類可以對(duì)BIM模型的面進(jìn)行三角面片化形成三角網(wǎng)格,接著可以通過MeshTriangle類存儲(chǔ)網(wǎng)格形成的三角面片,然后通過MeshTriangle類的方法get_Vertex得到三角面片的點(diǎn),最后將這些點(diǎn)按照IFC的規(guī)則生成IFC文件并可以利用IFCViewer還原模型,如圖2所示。

      通過圖2分析,利用二次開發(fā)提供的三角剖分算法可以還原原BIM模型,但是該方法是一個(gè)“黑匣子”,其精度無法改變,這對(duì)于規(guī)則的模型幾乎不存在影響,但對(duì)于不規(guī)則模型(見圖2(c)和圖2(d))來說會(huì)出現(xiàn)一些問題,觀察利用Revit二次開發(fā)所生成的三角網(wǎng)格可以發(fā)現(xiàn)會(huì)有部分較為狹長(zhǎng)的三角形出現(xiàn),本文更希望將其更改為更滿足最小角最大化性質(zhì)的三角網(wǎng)格,這樣不僅會(huì)較好地提高三角面片網(wǎng)絡(luò)質(zhì)量,同時(shí)也會(huì)提高BIM模型在IFCViewer上的渲染質(zhì)量,基于這些,本文提出一種優(yōu)化算法來解決這類問題。

      優(yōu)化算法步驟如下:

      步驟1 利用Revit二次開發(fā)提供的Mesh類、MeshTriangle類及其get_Vertex得到原始BIM模型的所有三角面片集Fo={Fo1,Fo2,Fo3,…,F(xiàn)on},并得到面片對(duì)應(yīng)的點(diǎn)集Po={p1,p2,p3,…,pm}。

      步驟2 逐個(gè)判斷面集Fo中每個(gè)面片,若為狹長(zhǎng)銳角、直角三角形(見圖3(a)),則找到三角形內(nèi)一點(diǎn)Pf,使得Pf可以和最小角所對(duì)應(yīng)的邊作正三角形(見圖3(b)和圖3(c))。

      (a) 原始三角網(wǎng)格1

      步驟3 若為狹長(zhǎng)鈍角三角形(見圖3(d)),則得到該三角形外心與鈍角所在點(diǎn)的連線CE,并計(jì)算CE與鈍角所對(duì)邊AB的交點(diǎn)Pf(見圖3(e)和圖3(f))。

      步驟4 將所有的Pf合成點(diǎn)集Pp={pm+1,pm+2,pm+3,…},交點(diǎn)Pf也是本文找出精確點(diǎn),用以提升視圖精度。

      步驟5 將點(diǎn)集Po與點(diǎn)集Pp集合成一個(gè)更大的點(diǎn)集P={p1,p2,p3,…,pn+m,…}。

      步驟6 將點(diǎn)集P利用B-W算法重新計(jì)算三角面片,得到新的三角面片集Ff={Ff1,Ff2,Ff3,…,F(xiàn)fn}(見圖3(c)和圖3(f))。

      優(yōu)化算法流程如圖4所示。

      圖4 優(yōu)化算法流程圖

      2 優(yōu)化算法仿真展示

      利用Revit二次開發(fā)自身提供的方法來對(duì)某車站的分集水器進(jìn)行模擬,仿真軟件為IFCViewer。圖5(a)為該分集水器的原始模型,圖5(b)為直接使用Revit二次開發(fā)收集到的點(diǎn)面信息組成的IFC文件在IFCViewer中的顯示結(jié)果,圖5(c)為優(yōu)化算法的顯示結(jié)果。

      (a) 原始模型

      通過圖5可以看到,優(yōu)化后的算法對(duì)傳統(tǒng)算法產(chǎn)生的狹長(zhǎng)三角形(畸形網(wǎng)格)有了一定的改善。

      3 算法評(píng)估

      在三角面片網(wǎng)格質(zhì)量以及提升網(wǎng)格質(zhì)量的問題上,歷代學(xué)者已經(jīng)做了充分研究[19],本文引入網(wǎng)格平均質(zhì)量系數(shù)qm、網(wǎng)格關(guān)聯(lián)質(zhì)量系數(shù)qn進(jìn)行評(píng)估[23],其中:

      qi=2ri/Ri

      (1)

      (2)

      (3)

      式(1)中,ri為三角形內(nèi)切圓半徑,Ri為三角形外切圓半徑,且當(dāng)qi越趨近于1時(shí)說明情況越優(yōu);式(2)中,N表示三角網(wǎng)格的總數(shù),qm表示網(wǎng)格平均質(zhì)量系數(shù)(全體網(wǎng)格接近于正三角形的程度);式(3)中,qn表示網(wǎng)格關(guān)聯(lián)質(zhì)量系數(shù)(全體網(wǎng)格中畸形單元的程度)。Revit二次開發(fā)中的方法與優(yōu)化算法的三角面片網(wǎng)格平均質(zhì)量系數(shù)及網(wǎng)格關(guān)聯(lián)質(zhì)量系數(shù)對(duì)比結(jié)果如表1所示(參考模型為第2章所示模型)。圖6和圖7分別顯示了Revit二次開發(fā)中的傳統(tǒng)方法以及優(yōu)化算法所得的三角面片網(wǎng)格質(zhì)量直方圖。

      表1 2種算法對(duì)比結(jié)果

      圖6 傳統(tǒng)方法所得直方圖

      圖7 優(yōu)化算法所得直方圖

      結(jié)果表明優(yōu)化后的算法的網(wǎng)格平均質(zhì)量系數(shù)和網(wǎng)格關(guān)聯(lián)質(zhì)量系數(shù)均要高于傳統(tǒng)算法,同時(shí)狹長(zhǎng)三角形的出現(xiàn)頻率也小于傳統(tǒng)算法。

      4 BIM模型Web端渲染實(shí)際應(yīng)用

      根據(jù)第2章和第3章的說明,現(xiàn)已可以將Revit中的BIM模型以優(yōu)化算法生成的三角面片的形式在IFCviewer中展示,然而這只是仿真環(huán)境。為了使此項(xiàng)研究在工程中得以應(yīng)用,現(xiàn)將BIM模型的三角面片信息與其余信息重組為Json格式,以供WebGL渲染,Json格式如圖8所示。

      圖8 BIM模型對(duì)應(yīng)的Json格式

      圖8中,VertexCoords為組成BIM模型所有面所對(duì)應(yīng)的所有點(diǎn)的集合,主要用于WebGL確定模型渲染位置。VertexIndices為每個(gè)面片所使用點(diǎn)的索引,目的是避免相同點(diǎn)重復(fù)出現(xiàn)在VertexCoords中。Normals是每個(gè)三角面片的法線,主要用于確定WebGL的渲染過程中每個(gè)三角面的明暗程度。NormalsIndices為每個(gè)面片法線的索引,目的是避免相同點(diǎn)重復(fù)出現(xiàn)在Normals中。Center為每個(gè)構(gòu)件的中心點(diǎn),是在多個(gè)模型共同渲染的過程中,計(jì)算出多個(gè)模型的中心點(diǎn),用于WebGL相機(jī)擺放初始位置。Color為顏色,主要用于WebGL渲染模型時(shí)的著色與BIM模型一致。Transparency為模型透明度,主要用于WebGL渲染玻璃等透明物體時(shí)的透明度與BIM模型一致。Id為編碼,里面包含BIM模型的族類型等信息,主要用于WebGL尋找模型。以上Json格式為單個(gè)BIM模型所對(duì)應(yīng)的信息,當(dāng)多個(gè)BIM模型同時(shí)渲染時(shí),可采用2種方式:

      1)將所有的BIM模型對(duì)應(yīng)的信息全部寫在一個(gè)Json文件里,這樣的優(yōu)點(diǎn)是操作方便,使用快捷;缺點(diǎn)是Json文件量過于龐大,WebGL渲染多模型時(shí)經(jīng)常出現(xiàn)加載緩慢,甚至瀏覽器崩潰的情況。

      2)將所有的BIM模型以單個(gè)構(gòu)件為單位,將其信息寫在Json文件里,再將所有的Json文件存儲(chǔ)在FastDFS文件服務(wù)器中,這樣雖然在實(shí)現(xiàn)上較為麻煩,但是會(huì)使Json文件變小,瀏覽器可以順利渲染。FastDFS文件服務(wù)器適合這種文件數(shù)量大但是單個(gè)文件量小的存儲(chǔ)方式,對(duì)于同級(jí)別的文件服務(wù)器來說其為最好的選擇。

      多模型對(duì)應(yīng)的Json文件完成存儲(chǔ)后,就可以利用WebGL對(duì)其渲染,現(xiàn)以某建筑的電氣專業(yè)BIM模型(見圖9)為例,WebGL渲染結(jié)果為傳統(tǒng)方法所得模型的渲染結(jié)果如圖10所示,本文算法所得模型的渲染結(jié)果如圖11所示。

      圖9 Revit中某建筑的電氣專業(yè)BIM模型

      圖10 傳統(tǒng)方法渲染結(jié)果

      圖11 本文算法渲染結(jié)果

      該BIM模型約有2000個(gè)構(gòu)件,其中主機(jī)硬件配置為Intel Core i5 2.9 GHz CPU、16 GB內(nèi)存、Intel UHD Graphics 630 顯卡,軟件配置為Win10系統(tǒng)和Google Chrome瀏覽器,在渲染時(shí)間上,渲染傳統(tǒng)方法所得模型的時(shí)間平均約為9.273 s,渲染本文算法所得模型的時(shí)間約為10.459 s,時(shí)間上本文算法略高。但是,實(shí)際應(yīng)用時(shí),考慮因素并非只是渲染時(shí)間,還要注重渲染完成后的渲染質(zhì)量。質(zhì)量一般有2個(gè)方面:一是渲染精度;二是渲染后交互模型的流暢度。圖12對(duì)比了2種方法所得模型在交互時(shí)的實(shí)時(shí)幀率。結(jié)果表明兩者在交互時(shí)實(shí)時(shí)幀率無明顯差別。綜上表明:在沒有損失模型交互流暢度且渲染時(shí)間差異在用戶可接受范圍內(nèi)的前提下,本文方法明顯提高了模型精度,從而增加了實(shí)際應(yīng)用前景。

      圖12 實(shí)時(shí)幀率對(duì)比

      5 結(jié)束語

      Revit二次開發(fā)提供的方法是提取BIM模型三角面片的重要方法,Delaunary剖分算法是提高三角面片網(wǎng)格質(zhì)量的重要手段。本文通過結(jié)合Revit二次開發(fā)、Delaunary剖分算法實(shí)現(xiàn)了BIM模型在IFCViewer上的精確還原。該算法可以擴(kuò)展到建筑領(lǐng)域的其他方面,同時(shí)也為BIM模型在Web前端輕量化顯示問題提供了可行性。本文利用WebGL技術(shù)與FastDFS存儲(chǔ)技術(shù),在前端很好地渲染BIM模型,而且還原精度較高,為施工人員現(xiàn)場(chǎng)施工提供了一些便捷。優(yōu)化算法可以多次迭代執(zhí)行,隨著每一次迭代,三角面片的網(wǎng)格平均質(zhì)量系數(shù)和網(wǎng)格關(guān)聯(lián)質(zhì)量系數(shù)都會(huì)增加且更接近于1,但是面片數(shù)量也會(huì)增加以致瀏覽器渲染壓力加大,本文尚未找出優(yōu)化算法迭代多少次為最優(yōu)解,這將是下一步的研究重點(diǎn)。

      猜你喜歡
      剖分面片二次開發(fā)
      淺談基于Revit平臺(tái)的二次開發(fā)
      甘肅科技(2020年20期)2020-04-13 00:30:02
      基于重心剖分的間斷有限體積元方法
      初次來壓期間不同頂板對(duì)工作面片幫影響研究
      淺談Mastercam后處理器的二次開發(fā)
      模具制造(2019年3期)2019-06-06 02:11:02
      二元樣條函數(shù)空間的維數(shù)研究進(jìn)展
      西門子Easy Screen對(duì)倒棱機(jī)床界面二次開發(fā)
      甜面片里的人生
      幸福家庭(2016年3期)2016-04-05 03:47:08
      一種實(shí)時(shí)的三角剖分算法
      復(fù)雜地電模型的非結(jié)構(gòu)多重網(wǎng)格剖分算法
      青海尕面片
      临湘市| 康马县| 凤城市| 莆田市| 新丰县| 手游| 大港区| 东明县| 清涧县| 兴城市| 万安县| 剑川县| 兴海县| 沐川县| 平利县| 视频| 米脂县| 京山县| 永仁县| 枞阳县| 达拉特旗| 望都县| 阿图什市| 祁连县| 甘泉县| 香格里拉县| 灵台县| 钟山县| 岳阳县| 玛曲县| 理塘县| 肥城市| 尤溪县| 石嘴山市| 云浮市| 万载县| 琼海市| 福鼎市| 会宁县| 东平县| 岳阳市|