魏振华 马智亮
(清华大学土木工程系,北京 100084)
近年来,随着BIM技术的流行,相关研究逐渐增多,特别是关于BIM应用软件的研究已经成为BIM领域的研究热点,对BIM技术在建筑工程中实际应用起到了重要的推动作用。三维模型作为BIM技术的核心,可以直观地存储和表达BIM数据,方便对BIM技术应用效果的检查,是BIM技术由理论走向实际应用的关键,三维图形交互模块也因此成为BIM应用软件研究和开发的重要支撑。目前,IFC标准已经成为主流的BIM数据标准[1],为使研究成果具有普遍适用性,在本研究中考虑的BIM数据即为IFC数据。
三维图形交互模块的开发需要解决BIM数据解析及三维模型显示两个关键问题。针对这两个问题均已有一些商业化和免费的软件或组件:BIM数据解析主要是针对IFC标准的数据解析,可使用商业化的EDM等软件或者免费的IFCsvr、IFC Engine DLL等组件[2-4];三维模型显示则可使用商业化的AutoCAD等软件或者免费的OpenGL、Direct3D等组件[4-6]。一般地,商业化软件在开发效率、模型质量等多个方面有较大的优势,但其昂贵的价格在很大程度上阻碍了其在研究中的使用。相比而言,研究者在研究中更愿意使用免费组件。然而免费组件相关说明文档往往不全,缺乏相关咨询服务和技术支持,同时在应用时一般需要进行大量调研,然后经过艰苦的尝试和大量的编程工作才能实际利用。
为解决上述问题,本研究基于已有的BIM应用软件研究,综合比较相关免费组件,在C++语言开发环境下,针对IFC数据找到了一种能够用于快速高效地开发三维图形交互模块的免费组件组合,即TNO公司的IFC Engine DLL(用于BIM数据解析)和SIM公司的Coin 3D(兼容Open Inventor,用于三维模型显示),研制了可以灵活用于BIM应用软件开发的三维图形交互模块3DGI,为利用免费组件自主研发轻量级的三维图形交互模块提供了一种快速高效的解决方案,从而可帮助研究者把更多的精力集中于进行BIM应用软件本身的研究中。
本研究通过调研和分析常见的三维软件以及已有的BIM应用软件,首先对三维图形交互模块的基本需求进行了分析,如表1所示。
表1 三维图形交互模块的基本需求
由于C++语言在开发大型BIM应用软件中的广泛应用,为了便于实现本模块与BIM应用软件的集成,本研究优先考虑选择支持C++语言的IFC数据解析工具。为此,本研究针对部分常用的支持C++语言开发环境的免费IFC数据解析工具进行了调研和对比,如表2所示。
表2 部分IFC数据解析工具对比
对IFC数据解析工具的选择还需要考虑IFC数据与三维图形引擎所需绘图数据之间的数据交换问题。相比其他工具,IFC Engine DLL不仅能够解析实体的几何表达方式和描述信息,而且提供了将这些信息直接转化为三维图形引擎常用的三角网格的图形接口,无需编程人员再进行几何算法的开发。特别是,它能够自动处理常见的构件开洞等布尔运算情形,并直接获得布尔运算结果实体的三角网格。综合这几方面的因素,本研究最终选择了IFC Engine DLL作为IFC数据解析工具。
为选择三维图形引擎,本研究利用四种常用的免费甚至开源的三维图形引擎进行了开发应用试验,包括 OpenGL、Direct3D、Coin3D 和 Open CASCADE,通过开发过程及效果对它们进行了比较,如表3所示。
表3 部分三维图形引擎对比
图1 3DGI模块总体框架及其与BIM应用软件的集成
表3中的 OpenGL、Direct3D均属于底层图形库,虽然提供了强大的三维图形功能,但是其函数功能复杂多样,往往需要开发者进行大量的编程工作才能实现良好的显示效果。而Open CASCADE虽然三维图形功能非常强大,但是其针对大量图形元素低下的绘图效率成为制约其应用的主要因素。与以上这三种图形工具相比,Coin3D既继承了OpenGL良好的三维图形显示性能和绘图效率,又封装了丰富的三维图形交互控制功能,编程实现简单方便[12]。同时,其创建的所有图形都作为三维对象“结点”进行管理,其面向对象的思想与BIM理念又是相通的,故可以方便地建立起BIM实体与三维对象“结点”的对应关系。因此本研究最终选用Coin3D作为三维图形引擎。
在三维图形交互模块的基本需求的基础上,根据选用的IFC数据解析工具IFCEngine DLL以及三维图形引擎Coin3D的数据需求和功能特点,本研究建立起了三维图形交互模块3DGI的总体框架,如图1所示。
3DGI模块以IFC数据作为输入条件。在3DGI模块中,3DGI核心子模块作为其核心,通过调用IFCEngine DLL,直接读取IFC几何信息并将其处理和转化为三维图形数据(三角网格);之后调用Coin3D,利用生成的三维图形数据进行三维模型显示并实现对用户交互操作的支持。因此,BIM应用软件的研究者可在其用户界面模块调用3DGI模块以实现BIM应用软件的三维模型显示和用户交互操作,从而实现完整的BIM应用软件。按照该框架,作者等使用C++语言实现了该模块,所需的编程工作只有不到1000行代码。
本研究所开发的三维图形交互模块3DGI已经成功地集成在本研究组开发的两个BIM应用软件中,即基于BIM技术的建筑成本预测软件系统和基于BIM技术的建筑节能设计软件系统[3,14]。3DGI模块在两个BIM应用软件中的实际应用表明,所采用的IFC Engine DLL可以为BIM应用软件准确完整地提供IFC三维图形数据,其高效性也保证了系统启动和运行的流畅性;所采用的Coin3D既实现了高效的三维模型显示和用户交互控制,又实现了建筑产品与BIM应用数据之间的直观绑定。通过应用该模块,所开发的BIM应用软件能够高效地实现编制工程量清单、进行工程计价、设计建筑构件材料、进行节能指标检查等操作,同时也可以直观地校核成本预算和节能设计结果的准确性。
本研究为在C++语言开发环境下自主研发轻量级的三维图形交互模块提供了一种免费组件的组合,并通过实际研制和在BIM应用软件中应用证实了该组合的优势。该模块的编程实现表明,使用该组合,仅需几百行代码即可实现从IFC数据解析到三维模型显示的功能,并能够提供友好的用户交互操作,从而有助于研究者将主要的精力集中于BIM应用软件本身的研究中,节约研究时间,提高工作效率。
[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标准的建筑工程信息集成及4D施工管理研究[D].北京:清华大学土木工程系,2005.
[6]魏振华.基于BIM数据的OpenGL图形交互模块的研制[D].北京:清华大学土木工程系,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技术内幕.北京:清华大学出版社,2001.
[12]阎锋欣,侯增选,等.Open Inventor程序设计从入门到精通[M].北京:清华大学出版社,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.