近年来,网络技术的发展突飞猛进,人类正向高度信息化的社会迈进。3DGIS+BIM在国内建筑业形成一股热潮,尽管拥有了政府和社会的大力支持,Web端的BIM大规模场景应用开发仍然面临许多巨大的挑战:
一、网页存储瓶颈问题:
随着BIM场景规模的增加,建筑内部空间结构复杂度不断提升,管廊结构的模型体量不断增加,BIM数据未来可能达城市级别(100 TB以上),通常来说,PC端的浏览器能够使用的内存仅为1.5至2 GB,稍大的BIM模型就可能会导致浏览器的崩溃。
二、计算渲染瓶颈问题:
传统加载方式中,IFC构件被逐一添加在场景中,管廊模型拥有的三角化面片数量多,导致整个初始加载速度慢,且场景FPS较低,浏览建筑模型容易出现明显卡顿情况。
在以上问题的基础上,尤其是管廊管线这类构件往往在城市建筑模型中占有了一定的比重,例如水管,通风管道等,且建筑物内部管廊模型排列往往具有一定的复杂性,优化这部分管廊模型的参数,能够有效减少场景中的三角面片数量,帮助提升模型加载速率,对改善上述的两个瓶颈问题起到了积极的作用。
因此针对上述问题,本文提出了一套管廊复杂网格参数化算法,首先通过语义分析和几何分析,提取大规模IFC场景中的管廊网格模型构件类。然后针对一般圆柱体形管廊网格模型,弯管管廊模型以及中空管廊模型三种不同的特征,对其在服务端分类进行参数化处理,并将参数结果返回给网页端进行渲染。为了降低网页端的渲染负载,实例化管廊模型的同时辅助以基于LOD多细节层次技术的渐进式自适应渲染方法,有效降低场景中管廊模型部分的总数据量及其三角面片数量,加快场景初始加载时间以及提升场景总体加载的帧速率,为轻量化WebBIM大规模管廊模型场景的在线可视化提供了支持。
1 相关研究
1.1管廊的参数化原理
原始的BIM建筑模型经过IFC参数化解析之后,分成了多种不同的类,每一类中都有成百上千个小的网格模型信息。这些顶点信息与三角网格在网页端经过渲染,组成了浏览器端的建筑模型。但是这种通过模型解析生成的管廊网格模型通常是呈现不规则,且较为繁杂的情况。如果能将这些不规则的三角网格信息抽取出来,经过参数化处理转换为大家熟知的管廊管线特征信息,那么就可以通过管廊网格的顶点信息,半径信息,主方向特征参数化重绘出一个圆柱体形管廊网格模型,并且呈现规范的三角网格渲染方式。
通常的直线管廊网格模型的构造图如下图所示,具体渲染方法为:将直线管廊网格模型抽象为正圆柱体,管线中心抽象为正圆柱体的中轴线,管线中心线起止点为正圆柱体上下底面圆圆心,圆柱体半径为管径。
提取到了以上的管廊模型参数信息后,在浏览器端渲染时可以利用Three. j s提供的THREE.Cylinder Geometry对象对管廊进行批量建模。利用THREE.Cylinder Geometry对象进行圆柱体建模时可接收多个参数,而在实际建模过程中主要用到三个参数,分别是:顶面半径、底面半径以及圆柱体的高度,分别对应三位管线的半径以及管线长度。生成管线模型的几何对象之后,还需利用THREE.Material为其贴上合适的纹理,通THREE.Mesh(geometry,material)生成完整的管线段模型。
1.2管廊多细节层次技术(LOD)
LOD技术即Levels of Detail的简称,意为多细节层次。LOD技术指根据物体模型的节点在显示环境中所处的位置和重要度,决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算。一个典型的蓄冰机房BIM模型内部的管线模型示意图如下图所示,(a)为蓄冰机房BIM模型结构,(b)为局部细节放大示意图,针对下图(b)中的管廊模型,调整其精细化程度对用户视角的影响较小,但对提升场景加载流畅度具有较大意义。
(a)蓄冰机房内部管廊模型;(b)细节模型
LOD的主要想法是降低复杂性,当视点远离3D模型对象时,根据人的视觉系统,远处对象变小或者变得模糊不清,这时我们可以使用该对象的简化版本。对象简化版本的实现多种多样,通常是通过较少三角形的数据或者替代几何模型的几何特征和纹理来实现。不管简化版本的实现方法如何,其策略的最终结果是将一个相比原模型压力较小的对象交给GPU去处理,降低渲染复杂度,提高场景加载的速率。
针对管廊网格模型,多细节层次技术主要调整的是参数化后的管廊网格切割块数,当摄像机视角靠近的时候,切割块数增多,管廊模型越精细,而当摄像机视角原理时,可以减少模型的切割块数,管廊模型呈现较粗糙。
1.3大规模WebBIM在线渲染
“互联网+”时代的到来为BIM信息的传递和共享提供了更为广阔的舞台,“互联网+BIM”的融合、发展也是势不可挡。网页浏览器是移动互联网上最为广泛通用的信息共享平台,直接在网页浏览器上将BIM场景可视化地再现出来就变得更有吸引力。用户们只需要点击浏览网页就可以访问大规模BIM场景与之交互。尤其是正在流行的HTMLS/WebGL提供了一种无插件安装的Web3D开发平台,这大大便捷了互联网BIM的可视化共享浏览,所以WebBIM在线可视化将成为“互联网+BIM可视化”的主流发展趋势。
但是由于大规模的BIM场景存在实时响应速度慢、渲染能力弱、数据传输缓慢等问题,WebBIM在线可视化将会受到因网页浏览器缓存受限而导致的存取不畅、尤其是管廊模型较多的大规模BIM建筑,数据量较大可能导致浏览器的瘫痪。因互联网带宽受限而导致的传输缓滞、因网页浏览器渲染能力受限而导致的漫游延迟的影响,这些影响将会严重阻碍WebBIM大规模场景的在线实时可视化共享。因此,本文所研究的管廊复杂网格模型的参数化方法及其在线可视化技术能够针对网页的在线渲染问题做出改善,具有重要的实践意义。
综上所述,本文的创新点主要体现在针对大规模WebBIM模型的加载和渲染瓶颈提出了一种基于管廊网格模型的参数化算法,能够根据管廊网格模型不同的分类进行参数化处理,在浏览器端采用一种基于LOD的渐进式加载方式,缓解了浏览器端的数据压力,提升了模型的渲染效率,为拥有大规模管廊网格的WebBIM建筑模型的模型解析与在线渲染提供了新的优化方向。
2技术路线
本文所采用的技术路线如下图所示。在服务器端,需要完成工作包括从语义分析以及几何分析角度进行管廊模型构件的提取,以及基于圆柱体形管廊网格构件的参数化算法研究,进一步拓展弯管管廊模型的参数化算法以及基于布尔运算的中空复杂管廊模型的参数化算法。
在Web端完成的工作,包括使用基于LOD的轻量化WebBIM渐进式加载技术,提升轻量化在线渲染的加载速率,以及提供在线可视化应用支持。
3关键技术
3.1管廊模型构件的提取
IFC是一套专门为建筑行业订制的开放数据标准格式,为了解析IFC格式的BIM模型,本文使用的了轻量级BIM大数据在线可视化系统,在上传IFC格式的建筑模型后,该模型逐层解析,从一个项目实例出发,将建筑模型拆解为包含所有的墙、门和梁等多个类型的建筑构件。根据模型分类的语义信息可以将内部构件进行一个初步的分类,在场景中我们可以看到多种不同的构建类呈现,如下图所示,IFCCovering类表示对管廊模型的外罩,存在较多圆柱体形管廊网格模型,因此本文从语义角度选择其中的IFCCovering类构件作为可能的目标管廊模型处理对象,对其进行进一步的几何分析。
整个管廊模型对象的抽取过程如下图中所示,从构件语义分析提取构件是从以上多种不同的IFC构件类型中,提取可能是管廊管片管线等圆柱体型模型的构件的过程。而从语义分析角度,往往可能存在误差,比如把非圆柱体形的拉伸体模型认为是管廊模型。
在此基础上,从几何角度分析则是从管廊模型的形态上对构件进行分析,判断构件是否具有圆柱体形构件包围盒的特征,且根据模型上的顶点信息能够计算出上下底面与中心轴等参数,进而归纳其类型,最终提取出了一类可以进行管廊网格参数化处理的目标模型。
(a)蓄冰机房模型构件分类;(b)IfcCovering类模型
3.2管廊网格模型参数化
3.2.1圆柱体形管廊网格模型参数化
经过上一个步骤解析的BIM建筑模型产生的原始圆柱体形管廊模型构件为dat格式,包含三部分信息,第一部分是每一个顶点的三维坐标,从序号0开始,第二部分是模型的三角化信息,每三个顶点组成一个三角形,在场景中进行实例化渲染,所有的三角形在场景中重绘出一个圆柱体形管廊模型,第三部分是与第二部分中每个三角化网格信息对应的法向量方向。
由此可知,对于一个原始的复杂管廊网格模型,其往往有上百个,甚至上千顶点,同时三角网格数量较多。针对大型建筑模型,一旦管廊模型的数据量较大,对模型的初始渲染和加载效率一定会存在较大的影响,因此,本文针对圆柱体形管廊网格模型,提出了参数重绘的方式,使用ThreeJS中的圆柱体进行实例化,能够有效简化模型数据量且提升场景渲染速率。
(a)原BIM模型;(b)参数化BIM模型;(c)原端画细节;(d)参数化后端面细节
本文所使用的一般圆柱体形管廊模型参数化是从原始管廊网格模型的顶点以及三角面片信息中有效提取出其上下底面圆的圆心以及半径,并且求出其中轴线的长度以及方向,并能够在场景中重绘出该构件的过程。拟合后的标准化圆柱体与源数据对比如上图(a)源数据一非标准化三角化侧面和(b)拟合后一标准化三角化侧面所示。由于使用了圆柱体模型的参数化方式,重绘圆柱体需要的数据因此大大降低。
由于原始管廊网格模型存在三角化方式无规律,如上图(c)源数据-非标准化三角化底面和(d)拟合后一标准化三角化底面所示,参数化的过程也是一个将管廊网格模型标准化的过程,为后续圆柱体形管廊构件的在线应用提供基础。上下底面的分割块数决定着圆柱体模型在场景中的精细程度。
3.2.2弯管管廊网格模型参数化
除了一般的圆柱体形管廊模型外,建筑模型中还存在较大一部分的弯管管廊模型,如下图所示。这部分模型通常是排水管道和通风管道的接口处,在管廊网格模型中占有一定的比重,在参数化过程中要与一般直线的圆柱体形管廊模型做出区分。本文使用二次贝赛尔曲线拟合弯管管廊构件,实验对象为如下图所示的一段弯管圆形管线模型。
首先根据圆柱体模型参数求出两个端面的圆心,两个圆心作为贝塞尔曲线的控制点P0和P2,设其控制点为P1,该拟合模型的中轴线应满足以下二次贝塞尔曲线公式:
B(t)=(1-t)2P0 +2t(1-t)P1+t2P2, t∈〔0,1〕 (1)
通过改变控制点的参数,如果弯管管廊模型上的点到该拟合中轴线的距离最短,则可认为是最佳拟合曲线,在进行参数化绘制的时候,由于管廊模型的对称性,弯管模型上的订单到中轴线的距离即为半径,以一个端面为圆心,该半径画圆,然后沿着拟合的贝塞尔曲线进行拉伸,即可得到该弯管模型的参数化拉伸体拟合模型。且由于拉伸体的特性,该拟合模型的分割块数也能够进行动态地调整,有效降低模型的三角网格数量。
3.2.3中空复杂管廊网格模型参数化
在标准的圆柱体型管廊参数化方法研究的基础上,针对基于布尔运算的复杂管廊构件的参数化算法研究在工程建筑领域十分具有价值,如下图(a)中空管廊模型所示,复杂管廊构件都是基于圆柱体型管廊构件的延伸与扩展,其端面和侧面的模型示意图如下图(b)和(c)所示,具有其独特性,需要根据模型特征具有针对性地进行探索。
(a)中空管廊;(b)模型端面网格;(c)模型侧面网格
本文针对复杂中空管廊模型的参数化方法可分为如下步骤:
a)由于管廊模型具有对称性,提取位于同一个端面上的所有顶点及其三角网格信息;
b)替换重复顶点,如同顶点有多个序号,以最小序号替换,重新组织三角网格信息;
c)拆分三角网格信息为三条边信息,以<小序号,大序号>形式提取三条边的信息,并记录其使用次数;
d)提取所有使用次数为1的边,在场景中重绘,完成边界的边缘提取;
e)根据边的闭合性,将顶点分组,分成外部形状和内部中空部分;
f)分组进行参数化拟合后,进行模型的布尔运算,在场景中重绘出新的管廊网格模型。
针对如下图(a)所示的内部中空管廊拉伸体模型,采用上述的解决方案,首先进行整个模型的数读取,然后通过模型的几何特征分离其模型外部与内部参数,其边缘提取的效果如下图(b))所示,在得到了边缘提取的结果之后,将模型区分为1个大实心圆柱体管廊模型以及7个空心圆柱体管廊型,对大的实心圆柱体形管廊模型进行布尔运算,参数化后的重绘的中空管廊模型如下图(c)所示。
(a)原中空管廊模型;(b)模型边缘提取;(c)参数化后模型
3.3渐进式LOD在线实时渲染
通过对拥有大规模管廊网格的建筑模型进行管廊构件解析提取以及模型参数化之后,如何在网页端高效流畅地渲染BIM模型也是本文的研究要点之一。本文采用基于LOD自适应渐进式加载技术,按照不同的管廊网格分类进行不同的层级调整,模型示意图如下图所示。
得到前两个步骤的管廊模型参数化的结果后,本文采用基于摄像机距离的LOD渐进式加载方式,从LOD0摄像机与模型距离较远,到LOD1和LOD2,摄像机与模型距离较近的阶段,动态调整管廊网格模型的分割块数,即距离摄像机近的模型分割块数越多,模型越精细,摄像机距离远的模型分割块数少,模型简化。针对标准圆柱体形管廊构件,根据摄像机距离的远近,动态调整其分割数。
如上图所示,针对一般圆柱体形管廊网格模型,自适应调整的是其端面的分割块数,从LOD0的3块,到LOD1的8块,再到LOD2的16块。针对弯管管廊模型,自适应调整的是中轴线的分割块数,从LOD0的5块,到LOD1的10块,再到LOD2的20块,可以看到模型的网格越来越密集。而针对中空管廊网格模型,在LOD0以及LOD1的阶段,即距离摄像机较远时,渲染中空管廊模型时只按照圆柱体形管廊进行渲染,不进行布尔运算,远处看到的是一般圆柱体形管廊网格模型,只在摄像机靠近模型达到LOD2距离范围内时,渲染中空的管廊网格模型,该步骤可以优化渲染效率,提高场景FPS,降低浏览器的负载。
3.4基于管廊网格参数化的切割应用
随着圆柱体形管廊模型构件在BIM建筑模型中体量逐步增加,与之相关也提出了较多的交互需求,比较常见的如切割等分圆柱体等。
本文基于参数化之后的圆柱体形管廊模型,对其中轴线进行分割,在场景中进行参数化模型重绘后的效果图如上图所示,由模型本身的非标准构件,经过参数化重绘后变成一个标准圆柱体形管廊网格模型后,经过多次二分切割后的效果如图所示。根据实际需求,该应用也可以拓展至n次切割以及自主调节等多种方式,为工程实践应用提供便利。
4实验分析
本文根据轻量级WebBIM管廊网格参数化的性能评估方式提出了用于评估实验结果的三项性能指标:管廊模型总数据量;场景的初始加载时间 (秒);浏览器每秒传输帧数FPS。
4.1测试案例
本次测试中所使用的静态场景数据是基础格式为ifc的蓄冰机房BIM模型数据,如下图(a)所示,蓄冰机房一共有6575个网格模型,占用大176 MB,本次实验经过IFC模型解析之后,抽取了一个叫做IFCCovering的类,如下图(b)所示,该类共有2184个BIM管廊网格模型,存储在xubinOutput -Vis.txt文件中,总计所占空间24.4MB。
(a)原蓄冰机房模型;(b)IfcCovering类模型
4.2 测试环境
本次实验采用台式机浏览器进行测试。所使用的服务器操作系统为WinServer2008,内存为4G;CPU为Intel Xeon。客户机操作系统为Windows7内存为8 G,COU为Intel i7-4700MQ。所使用的浏览器为Google Chrome,网络带宽为100 Mbps。
4.3 测试流程
a)分别测试使用轻量级WebBIM管廊参数化前后的模型总数据量。
b)分别测试使用轻量级WebBIM管廊参数化前后的场景初始加载时间(s)。
c)分别测试使用轻量级WebBIM管廊参数化前后的浏览器每秒传输帧数FPS。
4.4测试结果
本次实验的结果对比如下表所示,可以看到使用了管廊网格参数化算法后该类的数据量明显下降,由原本的20.5 MB下降到4.2 MB,占原来该类数据量的五分之一左右。且场景的初始加载时间大大提升,且场景整体的传输帧数也有所提升,证明了该算法的实用性与价值。管廊模型经过参数化后在场景中的示意图如下图所示。
5结论
为了减少WebBIM模型场景的总数据量以及提升在线渲染效率,本文提出了一套管廊复杂网格模型参数化方法,对拥有大量管廊网格的BIM模型首先通过IFC解析,经过语义分析和几何分析的手段,提取出能够进行管廊模型参数化的类。然后针对一般圆柱体形管廊模型,弯管管廊模型以及复杂中空管廊模型均提出了参数化方案并验证其有效性。最后在网页端使用了基于LOD的轻量化渐进式渲染模式,辅助以基于管廊参数化结果的切割模型应用。
实验证明,该方法对模型的数据量以及渲染效率具有巨大的提升,对具有多管廊模型的BIM工程实践提出了重要的优化方向。课题未来的研究拓展包括从圆柱体形模型的参数化扩展到一般拉伸体形的参数化方法,以及基于参数化后的圆柱体形模型进行例如碰撞检测等参数化应用以及基于地理空间的管线自动排布布局等。
原文来自:http://www.ztmapinfo.com/blog/index.php/article/23.html