传统的三维图形渲染技术虽然可以实现图形展示功能,但不足以完全支持基于BIM的工程项目管理应用对三维BIM模型的展示要求。为了解决上述问题,本文作者通过模型设计插件实现了BIM模型源文件的轻量化转换,利用HOOPS三维图形应用开发BIM图形引擎,并部署到高性能图形服务器上对三维模型进行渲染,采用虚拟桌面的方式将模型展示区域以图片流的形式发送到Web浏览器上,并通过消息服务实现了图形展示区域、用户及BIM应用之间的信息交互。
 
1  基于HOOPS的图形引擎开发
       为了解决与三维模型的展示与交互以及BIM模型专有格式的支持问题,本文采用专门为BIM定制的图形应用集成开发套件HOOPSVisualize进行三维图形引擎开发。HOOPSVisualize作为Das-sault、Autodesk等主流BIM模型设计软件的图形技术支撑,提供丰富的BIM交互开发功能以及三维BIM图形文件的格式转化功能。
       HOOPSVisualize建立在OpenGL、Direct3D等图形渲染内核之上,实现了更加高级的图形功能(如图形高级渲染、动画、动态干涉检查、图形高级操作、显示性能优化等)。可以集成到微软的VisualStudio开发环境,主要使用C++语言开发。通过调用HOOPSVisualize提供的API接口或者直接引用其类库中的图形操作类即可实现三维图形的渲染和交互操作。另外,HOOPSVisualize还提供Exchange组件,可将BIM模型的几何信息和属性信息转化并存储成HOOPS专用的轻量化模型文件格式hsf(HoopsStreamFormat)。
 
1.1  源模型文件轻量化转化
      通过设计软件二次开发可将设计源模型中的几何信息导出成通用格式的三角面片图形数据,并可通过设计软件提供的二次开发接口将模型中各个构件的属性数据读取出来,之后使用HOOPSExchange组件中提供的API接口建立轻量化模型文件的数据结构并最终生成hsf文件。以Bentley公司的Microstation建模软件为例,模型轻量化程序架构如图1所示。

      源模型文件的轻量化转换过程如下:
     1)调用DGNDirect组件提供的接口将源模型文件中的第1个构件(此处的构件为模型实体结构分解的最小单元)的几何信息导出成三角面片数据(三角面片数据由若干个顶点坐标和构件的空间坐标组成);2)调用HOOPSExchange组件的API接口,创建一个模型片段,将构件的几何信息保存到片段中;3)调用DGNDirect组件的接口将构件的属性数据读取出来,然后调用HOOPSExchange模块的接口将属性数据保存到之前创建的片段中;4)调用DGNDirect组件提供的接口将源模型文件中的下一个构件的几何信息导出成三角面片数据并重复步骤2)和3)直到模型中的所有构件的几何信息和属性数据都导出到对应的片段中;5)根据实际应用需求对片段进行分组,例如对于桥梁的BIM模型可将一个桥墩包含的所有构件片段分成一组,组成一个桥墩片段,再将所有的桥墩片段组成一个下部结构片段。同理可将一跨梁包含的所有构件片段组成一个梁片段,再将所有的梁片段组成一个上部结构片段。
     至此,源模型文件就被转化成一个轻量化的hsf模型文件。hsf文件可以被基于HOOPS幵发套件幵发的图形引擎加载展示并进行丰富的交互操作。另外,设计源模型一般采用精确的数学表达式表达模型的几何信息,因此该模型在转化为三角面片数据后,几何外形精确但面片数量庞大,一般无法满足Web浏览器实时渲染的要求,必须通过简化算法精简模型。通过分析可知,参数化的实体模型面片化后,三角面的排列顺序具有一定的规律,根据这个特点,可将网格数据分为:面上的点都在边界线上,面上的点不全在边界线上。对于第1类网格数据,只需要对边界上的点进行简化即可。对于第2类的,需要从边界线幵始,对原始网格数据进行从左向右,自下至上逐层简化。
       由于hsf文件只包含必要的几何信息、属性数据及模型拓扑结构数据,极大地减小了模型的体量,降低了模型渲染的硬件资源消耗,增强了模型展示和操作的流畅度。采用类似的方式可将主流设计软件(包括Revit、Catia、Microstation、Tekla)设计的源模型文件转化成轻量化文件格式,解决了模型源文件格式不统一的问题。
 
1.2  图形引擎设计
       采用HOOPS幵发套件幵发的图形引擎程序架构如图2所示。各模块功能独立,可相互操作。

       1) 3dGS
       3dGS负责三维图形渲染和数据管理任务,它屏蔽了不同底层图形渲染内核(OpenGL、DirectX等)的接口,向外提供一套统一、直观、便于调用的高级图形操作接口。这些接口封装了一系列3D图形数据处理和优化算法。这些算法可用于实现2D和3D图形数据的存储、创建、编辑、操纵、查询、展示和打印等操作。
       2) MVO
MVO是独立于平台或用户界面的C++类库,它能够实现大部分三维模型交互功能,例如模型查看、创建、注释、操纵、拣选等。通过引用这些类可以实现不同的业务逻辑,从而使图形引擎能够适应大型图形应用程序的幵发需要。
      3) Stream
      Stream模块提供给hsf格式文件的输入/输出控制功能,它将定制化的hsf格式文件或数据流输入到3dGS模块,或将hsf格式文件或数据流从3dGS导出。
      4)GUI
      GUI(GrrophicUserInterface)模块用于将图形引擎的各模块与用户界面相集成。用户在用户界面上进行的操作由GUI模块分配到相关的模块进行处理。
      用户操作的处理流程为:①用户触发的事件由用户界面捕获并插入到事件队列;②HOOPSGUI模块对事件队列进行监控并将事件分发到HOOPSMVO、HOOPSStream或HOOPS3dGS模块;③HOOPSMVO模块调用HOOPS3dGS模块进行相应的数据处理与信息交互。
      基于HOOPS幵发的三维图形应用如图3所示。该应用程序可以加载和显示轻量化的hsf格式三维BIM模型文件(图3中显示的是一部分桥梁BIM模型),并且可实现视角切换、渲染模式切换、构件检选、颜色/透明度/消隐设置、剖切、漫游等符合BIM应用需求的复杂交互功能。

 
2   三维模型云端渲染
        为了使BIM管理信息系统具有B/S架构系统的优势,要求用户能够在浏览器上浏览和操作BIM模型。但是目前浏览器原生的编程语言如JavaScript并不支持三维图形渲染内核API的直接调用。一种解决办法是通过使用微软组件对象模型(ComponentObjectModel,COM)技术将图形引擎程序封装成一个ActiveX控件。用户在浏览BIM模型之前需要先下载ActiveX控件并在浏览器上注册该控件,之后当用户第1次打幵BIM模型时,需要先将模型文件下载到本地缓存,下载完成后就可在浏览器上观看和操作BIM模型。采用这种方式虽然在一定程度上解决了浏览器展示BIM模型的问题,但是也带来了一些问题,归纳如下:
        1) 大部分主流浏览器例如Chrome、Firefox、Safari等都不能很好的支持ActiveX控件加载和运行;2)不支持大体量模型的加载和展示。通过实验,当模型文件超过80M时,加载模型可能会导致浏览器崩溃;3)用户在第1次浏览模型之前需要将模型下载到本地进行缓存,当模型文件较大时需要一段很长的等待时间;4)在浏览模型之前需要下载并注册ActiveX控件,增加了用户操作的复杂度。由于一些操作系统安全性限制,可能会阻止ActiveX控件的加载;5)当在浏览器上移动或遮挡部分模型展示区域时,会导致模型展示区域闪烁,降低用户体验。
       为了解决这些问题,本文提出基于云端渲染的三维模型展示和交互解引擎(简称云引擎)。在此方案中,图形引擎程序被部署在服务器上,模型的渲染和展示都在服务端完成,并不占用用户终端设备的硬件资源。图形展示区域以图片流的形式发送到前端浏览器。当用户在浏览器上点击图形展示区域操作模型时,鼠标点击的位置坐标及该用户的识别信息会通过消息队列(MessageQueue,MQ)发送至服务端。服务端上的消息处理程序接收到鼠标点击事件后会在图形引擎上的相应位置完成点击操作,操作的结果会以图片流的形式发送到该用户的前端浏览器。另外,图形展示区域和BIM应用的用户界面也可通过消息队列进行交互.例如,当用户在浏览器页面上点击模型结构树上的某个节点时,该节点对应模型的全局唯一标识符(GloballyUniqueIdenti-fier,GUID)、用户操作类型以及用户识别信息会发送至服务端上的消息处理程序进行处理,即根据操作类型在用户选中的模型上完成操作,然后把操作结果以图片流的形式返回到该用户的浏览器页面。云渲染引擎的系统架构如图4所示。

       云引擎的客户端为一个运行在浏览器上的三维图形应用,它包含三维模型展示区域和消息处理程序两部分。云引擎的服务端包含一个远程虚拟化服务程序、图形引擎和消息处理程序。在展示三维模型之前,客户端会给服务端的远程虚拟化服务程序发送图形引擎程序ID(服务端会为每个在线用户幵启一个图形引擎程序)、认证信息以及用户信息(包括用户地址等)并且建立服务端与客户端之间的连接。三维模型展示区域为一个浏览器页面上的iFrnme,用于接收远程虚拟化服务发送过来的图片流并展示。客户端的消息处理程序用于和服务端的消息处理程序进行通信,发送用户操作事件、操作类型以及模型或构件的GUID等信息并接收服务端的反馈信息。服务端的消息处理程序在接收到用户的操作信息后会控制图形引擎程序完成相应的操作并将接收到的反馈信息发送给客户端。图形引擎程序为本文1.1节中描述的基于HOOPS技术幵发的图形引擎。远程虚拟化服务用于图形引擎程序管理、用户认证管理、用户连接管理以及向客户端发送图片流。
 
3.1   模型轻量化转换
       采用1中介绍的模型轻量化插件可将源模型文件转换成轻量化的hsf文件,由于去掉了不必要的设计信息,极大的减小了文件的体量。而且通过轻量化转换可使不同设计软件创建的模型文件转换成统一的格式,更加便于设计成果的传播和共享。目前主流软件的源模型文件进行轻量化转换后的结果对比如表1所示。
       通过表1可得,目前所有主流软件创建的源模型均可以转换成统一格式的轻量化模型,源模型文件在经过轻量化转换以后,体量缩小为原来的5%〜60%,在加载和展示时能够减少设备资源的占用。

 
3.2  模型展示和操作
       由于模型的渲染是在服务器上完成的,所以本系统并不需要对终端设备的硬件性能做要求。当需要展示大体量模型或需要支持高用户并发数量时,只需增加服务器的图形处理能力。另外,由于在用户浏览器上展示的模型实际上是图片流,并不需要插件支持,所以该系统具有跨浏览器兼容的特性。用于验证本系统的硬件设备配置如下:属性数目为356377条;构件数目为10916个;轻量化文件大小为100.04MB;刷新率为60Hz;显示分辨率为1366X768;网络带宽为10MB/s;浏览器米用GoogleChrome。服务器配置为NVIDIAM6000,WindowsServer2013,IntelXeonE5506X2,16GB.终端设备配置为Windows10家庭版,i7-6500U2.5GHz,8GB。
       采用云渲染引擎对大体量三维模型进行渲染和展示的结果如图5所示。通过实际验证,当展示由超过10万个构件组成的大体量模型时,图形展示区域仍然能够保持接近60Hz的刷新率,网络带宽占用的峰值仅为60KB/s。另外,云引擎还实现了用户、图形应用和模型之间的流畅交互操作。

       采用不同类型的技术路线进行BIM模型的WEB浏览器展示的结果分析如表2所示。

       本文提出的基于云渲染的三维BIM模型可视化解决方案被应用于基于BIM的北京至张家口铁路工程项目建设管理平台中。京张八达岭隧道BIM模型米用Bentley公司的Microstation软件设计,模型包含十几万个构件,三角面片数量达到千万级另叭采用云渲染图形引擎可保证BIM模型在WEB浏览器上流畅展示(即模型展示区域的刷新率达到60Hz左右),如图6所示。

       另外,云渲染图形引擎还支持模型与用户操作界面的交互、模型剖切、爆炸图展示及标记等操作功能,如图7 所示。当用户选中模型上的某个构件时,与该构件相关的信息即可在平台页面上展示,如图7(a)所示;当用户选择模型剖切方式及需要剖切的位置后,即可展示出相应的模型剖面,如图7所示;当用户选择爆炸图模式时,可将模型中的各构件分解展示,如图7(c)所示;另外,用户还可以在模型展示区域上进行标注,如图7(d)所示。

 
4   结论
       1) 通过BIM模型设计软件二次幵发并集成HOOPSExchange组件实现的源模型文件的轻量化转换,解决了源模型文件格式不统一的问题,并且减小了模型的体量,有利于BIM模型的传播和共享。
       2) 基于HOOPS技术研发出一套BIM图形引擎,实现了BIM模型的展示和丰富的交互操作功能。
       3) 提出了基于云渲染技术的大体量模型浏览器展示解决方案,并研发出一套云渲染引擎,实现了大体量模型浏览器展示和交互操作。目前云渲染引擎已应用于北京至张家口铁路工程BIM管理平台、铁路工程信息模型库管理系统等多个大型BIM应用系统中。
       在今后的工作中,拟将云渲染引擎与ActiveX、WebGL等技术结合,当展示大体量模型时使用服务端的硬件资源进行图形渲染,当模型体量较小且无法获取稳定的网络连接时,使用户终端设备硬件资源进行图形渲染,确保BIM应用系统能够适应多种复杂的现场环境。