魏振華 馬智亮
(清華大學(xué)土木工程系,北京 100084)
近年來(lái),隨著BIM技術(shù)的流行,相關(guān)研究逐漸增多,特別是關(guān)于BIM應(yīng)用軟件的研究已經(jīng)成為BIM領(lǐng)域的研究熱點(diǎn),對(duì)BIM技術(shù)在建筑工程中實(shí)際應(yīng)用起到了重要的推動(dòng)作用。三維模型作為BIM技術(shù)的核心,可以直觀地存儲(chǔ)和表達(dá)BIM數(shù)據(jù),方便對(duì)BIM技術(shù)應(yīng)用效果的檢查,是BIM技術(shù)由理論走向?qū)嶋H應(yīng)用的關(guān)鍵,三維圖形交互模塊也因此成為BIM應(yīng)用軟件研究和開(kāi)發(fā)的重要支撐。目前,IFC標(biāo)準(zhǔn)已經(jīng)成為主流的BIM數(shù)據(jù)標(biāo)準(zhǔn)[1],為使研究成果具有普遍適用性,在本研究中考慮的BIM數(shù)據(jù)即為IFC數(shù)據(jù)。
三維圖形交互模塊的開(kāi)發(fā)需要解決BIM數(shù)據(jù)解析及三維模型顯示兩個(gè)關(guān)鍵問(wèn)題。針對(duì)這兩個(gè)問(wèn)題均已有一些商業(yè)化和免費(fèi)的軟件或組件:BIM數(shù)據(jù)解析主要是針對(duì)IFC標(biāo)準(zhǔn)的數(shù)據(jù)解析,可使用商業(yè)化的EDM等軟件或者免費(fèi)的IFCsvr、IFC Engine DLL等組件[2-4];三維模型顯示則可使用商業(yè)化的AutoCAD等軟件或者免費(fèi)的OpenGL、Direct3D等組件[4-6]。一般地,商業(yè)化軟件在開(kāi)發(fā)效率、模型質(zhì)量等多個(gè)方面有較大的優(yōu)勢(shì),但其昂貴的價(jià)格在很大程度上阻礙了其在研究中的使用。相比而言,研究者在研究中更愿意使用免費(fèi)組件。然而免費(fèi)組件相關(guān)說(shuō)明文檔往往不全,缺乏相關(guān)咨詢服務(wù)和技術(shù)支持,同時(shí)在應(yīng)用時(shí)一般需要進(jìn)行大量調(diào)研,然后經(jīng)過(guò)艱苦的嘗試和大量的編程工作才能實(shí)際利用。
為解決上述問(wèn)題,本研究基于已有的BIM應(yīng)用軟件研究,綜合比較相關(guān)免費(fèi)組件,在C++語(yǔ)言開(kāi)發(fā)環(huán)境下,針對(duì)IFC數(shù)據(jù)找到了一種能夠用于快速高效地開(kāi)發(fā)三維圖形交互模塊的免費(fèi)組件組合,即TNO公司的IFC Engine DLL(用于BIM數(shù)據(jù)解析)和SIM公司的Coin 3D(兼容Open Inventor,用于三維模型顯示),研制了可以靈活用于BIM應(yīng)用軟件開(kāi)發(fā)的三維圖形交互模塊3DGI,為利用免費(fèi)組件自主研發(fā)輕量級(jí)的三維圖形交互模塊提供了一種快速高效的解決方案,從而可幫助研究者把更多的精力集中于進(jìn)行BIM應(yīng)用軟件本身的研究中。
本研究通過(guò)調(diào)研和分析常見(jiàn)的三維軟件以及已有的BIM應(yīng)用軟件,首先對(duì)三維圖形交互模塊的基本需求進(jìn)行了分析,如表1所示。
表1 三維圖形交互模塊的基本需求
由于C++語(yǔ)言在開(kāi)發(fā)大型BIM應(yīng)用軟件中的廣泛應(yīng)用,為了便于實(shí)現(xiàn)本模塊與BIM應(yīng)用軟件的集成,本研究?jī)?yōu)先考慮選擇支持C++語(yǔ)言的IFC數(shù)據(jù)解析工具。為此,本研究針對(duì)部分常用的支持C++語(yǔ)言開(kāi)發(fā)環(huán)境的免費(fèi)IFC數(shù)據(jù)解析工具進(jìn)行了調(diào)研和對(duì)比,如表2所示。
表2 部分IFC數(shù)據(jù)解析工具對(duì)比
對(duì)IFC數(shù)據(jù)解析工具的選擇還需要考慮IFC數(shù)據(jù)與三維圖形引擎所需繪圖數(shù)據(jù)之間的數(shù)據(jù)交換問(wèn)題。相比其他工具,IFC Engine DLL不僅能夠解析實(shí)體的幾何表達(dá)方式和描述信息,而且提供了將這些信息直接轉(zhuǎn)化為三維圖形引擎常用的三角網(wǎng)格的圖形接口,無(wú)需編程人員再進(jìn)行幾何算法的開(kāi)發(fā)。特別是,它能夠自動(dòng)處理常見(jiàn)的構(gòu)件開(kāi)洞等布爾運(yùn)算情形,并直接獲得布爾運(yùn)算結(jié)果實(shí)體的三角網(wǎng)格。綜合這幾方面的因素,本研究最終選擇了IFC Engine DLL作為IFC數(shù)據(jù)解析工具。
為選擇三維圖形引擎,本研究利用四種常用的免費(fèi)甚至開(kāi)源的三維圖形引擎進(jìn)行了開(kāi)發(fā)應(yīng)用試驗(yàn),包括 OpenGL、Direct3D、Coin3D 和 Open CASCADE,通過(guò)開(kāi)發(fā)過(guò)程及效果對(duì)它們進(jìn)行了比較,如表3所示。
表3 部分三維圖形引擎對(duì)比
圖1 3DGI模塊總體框架及其與BIM應(yīng)用軟件的集成
表3中的 OpenGL、Direct3D均屬于底層圖形庫(kù),雖然提供了強(qiáng)大的三維圖形功能,但是其函數(shù)功能復(fù)雜多樣,往往需要開(kāi)發(fā)者進(jìn)行大量的編程工作才能實(shí)現(xiàn)良好的顯示效果。而Open CASCADE雖然三維圖形功能非常強(qiáng)大,但是其針對(duì)大量圖形元素低下的繪圖效率成為制約其應(yīng)用的主要因素。與以上這三種圖形工具相比,Coin3D既繼承了OpenGL良好的三維圖形顯示性能和繪圖效率,又封裝了豐富的三維圖形交互控制功能,編程實(shí)現(xiàn)簡(jiǎn)單方便[12]。同時(shí),其創(chuàng)建的所有圖形都作為三維對(duì)象“結(jié)點(diǎn)”進(jìn)行管理,其面向?qū)ο蟮乃枷肱cBIM理念又是相通的,故可以方便地建立起B(yǎng)IM實(shí)體與三維對(duì)象“結(jié)點(diǎn)”的對(duì)應(yīng)關(guān)系。因此本研究最終選用Coin3D作為三維圖形引擎。
在三維圖形交互模塊的基本需求的基礎(chǔ)上,根據(jù)選用的IFC數(shù)據(jù)解析工具IFCEngine DLL以及三維圖形引擎Coin3D的數(shù)據(jù)需求和功能特點(diǎn),本研究建立起了三維圖形交互模塊3DGI的總體框架,如圖1所示。
3DGI模塊以IFC數(shù)據(jù)作為輸入條件。在3DGI模塊中,3DGI核心子模塊作為其核心,通過(guò)調(diào)用IFCEngine DLL,直接讀取IFC幾何信息并將其處理和轉(zhuǎn)化為三維圖形數(shù)據(jù)(三角網(wǎng)格);之后調(diào)用Coin3D,利用生成的三維圖形數(shù)據(jù)進(jìn)行三維模型顯示并實(shí)現(xiàn)對(duì)用戶交互操作的支持。因此,BIM應(yīng)用軟件的研究者可在其用戶界面模塊調(diào)用3DGI模塊以實(shí)現(xiàn)BIM應(yīng)用軟件的三維模型顯示和用戶交互操作,從而實(shí)現(xiàn)完整的BIM應(yīng)用軟件。按照該框架,作者等使用C++語(yǔ)言實(shí)現(xiàn)了該模塊,所需的編程工作只有不到1000行代碼。
本研究所開(kāi)發(fā)的三維圖形交互模塊3DGI已經(jīng)成功地集成在本研究組開(kāi)發(fā)的兩個(gè)BIM應(yīng)用軟件中,即基于BIM技術(shù)的建筑成本預(yù)測(cè)軟件系統(tǒng)和基于BIM技術(shù)的建筑節(jié)能設(shè)計(jì)軟件系統(tǒng)[3,14]。3DGI模塊在兩個(gè)BIM應(yīng)用軟件中的實(shí)際應(yīng)用表明,所采用的IFC Engine DLL可以為BIM應(yīng)用軟件準(zhǔn)確完整地提供IFC三維圖形數(shù)據(jù),其高效性也保證了系統(tǒng)啟動(dòng)和運(yùn)行的流暢性;所采用的Coin3D既實(shí)現(xiàn)了高效的三維模型顯示和用戶交互控制,又實(shí)現(xiàn)了建筑產(chǎn)品與BIM應(yīng)用數(shù)據(jù)之間的直觀綁定。通過(guò)應(yīng)用該模塊,所開(kāi)發(fā)的BIM應(yīng)用軟件能夠高效地實(shí)現(xiàn)編制工程量清單、進(jìn)行工程計(jì)價(jià)、設(shè)計(jì)建筑構(gòu)件材料、進(jìn)行節(jié)能指標(biāo)檢查等操作,同時(shí)也可以直觀地校核成本預(yù)算和節(jié)能設(shè)計(jì)結(jié)果的準(zhǔn)確性。
本研究為在C++語(yǔ)言開(kāi)發(fā)環(huán)境下自主研發(fā)輕量級(jí)的三維圖形交互模塊提供了一種免費(fèi)組件的組合,并通過(guò)實(shí)際研制和在BIM應(yīng)用軟件中應(yīng)用證實(shí)了該組合的優(yōu)勢(shì)。該模塊的編程實(shí)現(xiàn)表明,使用該組合,僅需幾百行代碼即可實(shí)現(xiàn)從IFC數(shù)據(jù)解析到三維模型顯示的功能,并能夠提供友好的用戶交互操作,從而有助于研究者將主要的精力集中于BIM應(yīng)用軟件本身的研究中,節(jié)約研究時(shí)間,提高工作效率。
[1]buildingSMART International Ltd.Model- Industry Foundation Classes(IFC)[OL].[2011-10-18]http://buildingsmart.com/standards/ifc/.
[2]Jotne EPM Technology.EDMmodelServerfor 3D and PLM[OL].[2011-10-18]http://www.epmtech.jotne.com/getfile.php/409904.861.rvbrsqsprd/EPMtech-3D-PLM.pdf/.
[3]Ma Zhiliang,Zhao Yili.Model of next generation energyefficient design software for buildings[J].Tsinghua Science and Technology.2008,13(S1):298-304.
[4]Wenpeng Liu,Bo Diao,Yinghua Ye.Durability evaluation software system of concrete structure based on BIM and 4D technology:Proceedings of the International Conference In Computing in Civil and Building Engineering,Nottingham,United Kingdom,2010[C].United Kingdom,2010.
[5]曹銘.基于IFC標(biāo)準(zhǔn)的建筑工程信息集成及4D施工管理研究[D].北京:清華大學(xué)土木工程系,2005.
[6]魏振華.基于BIM數(shù)據(jù)的OpenGL圖形交互模塊的研制[D].北京:清華大學(xué)土木工程系,2008.
[7]TNO Building and Construction Research.IFC Engine DLL [OL].[2011-10-18]http://www.ifcbrowser.com/ifcenginedll.html/.
[8]SECOM CO.,LTD.Intelligent Systems Laboratory.IFCsvr ActiveX Component[OL].[2011-10-18]http://tech.groups.yahoo.com/group/ifcsvr-users/.
[9]Open Source Observatory& Repository.IFCSDK.[2011-10-18]http://forge.osor.eu/plugins/wiki/index.php?id=175&type=g/.
[10]Dave Shreiner.OpenGL programming guide:the official guide to learning OpenGL,versions 3.0 and 3.1[M].Addison-Wesley,2010.
[11]李曄,等譯.Direct3D技術(shù)內(nèi)幕.北京:清華大學(xué)出版社,2001.
[12]閻鋒欣,侯增選,等.Open Inventor程序設(shè)計(jì)從入門到精通[M].北京:清華大學(xué)出版社,2007.
[13]Open CASCADE Technology.Technical overview[OL].[2011-10-18]http://www.opencascade.org/occt/overview/.
[14]Ma Zhiliang,Zhang Xiude,etc.Framework design for BIM-based construction cost estimating software:Proceedings of CIB W78 2010 Conference,Cairo,Egypt,2010[C].Egypt,2010.