陈玉龙
(1.北京建筑大学,北京 100044;2.城市空间信息工程北京市重点实验室,北京 100038)
建筑信息模型(BIM)作为一种全新的理念及技术手段,凭借其特征参数化、设施的物理和功能特征的数字化,成为设施信息资源共享、全生命周期决策的可靠基础[1]。三维GIS作为GIS发展的方向之一,基于空间数据库技术,面向海量三维地理空间数据,在可视化基础上,实现三维模型与地形、地貌的无缝集成,同时满足空间查询、空间分析及符号化渲染功能[2]。其强大的三维可视化能力及空间查询分析能力,恰好可以弥补BIM周边宏观环境处理及可视化能力的不足,使BIM从单体精细化模型设计应用上升到多维数据应用层面。
目前,BIM与三维GIS集成主要研究集中在两个方面:一是工业基础类(IFC)与城市地理标记语言(CityGML)数据的共享机制和语义传递方向。国外学者利用CityGML ADE扩展机制、GeoBIM扩展模型、UBM模型实现了数据共享[3-5];吕慧玲等提出了一种BIM模型到多细节层次GIS模型的转换方法,优化了BIM-GIS模型可视化效果[6]。二是BIM与GIS集成应用方面。Yamamura提出了一种以GIS-BIM为基础的城市能源规划系统访问优化技术综合分析调整城市基础设施的政策思路[7];Lrizarry等利用GIS-BIM模型的视觉表现能力,实现建筑材料的流程管理可视化[8];李佩瑶等提出一种面向导航的IFC模型室内空间信息提取的方法,实现了建筑内部空间通达性一体化的语义描述[9]。
截至目前,大部分研究主要集中在两种模型间的转换原型设计上,局限于单体BIM信息在三维GIS地理空间中的展示,在数据结构、可视化性能上未进行更深一步的探讨,很难满足不同行业对空间信息完整空间表达和管理的需求,存在以下几点不足:
(1) 语义信息映射不完整,未能将BIM属性及功能信息全部继承。
(2) 大尺度BIM-GIS数据缺乏良好的数据组织模式和空间索引结构,真实质感的三维图形可视化效率低。
BIM-GIS集成可分为3个层次:一是建筑设施外轮廓几何信息的集成,主要应用于城市建模;二是建筑物设施构件信息及其内属性(与构件实体本身相关的属性)的集成,实现建筑设施内外环境的统一管理;三是BIM-GIS模型内建筑构件的几何、语义、内属性、外属性(建筑构件非实体属性,描述构件的功能信息)能够进行完整的描述和表达,同时运用GIS大范围空间数据分析、数据管理功能,实现建筑设施全生命周期可视化表达与分析[10]。
不同层次的BIM-GIS集成本质区别为BIM数据挖掘的深度不同,但每个层次的应用都离不开整合模型可视化关键技术。因此,本文以典型BIM(RVT)数据为例,设计一种基于金字塔结构的BIM-GIS可视化方法,在满足各层次数据融合的基础上,提高三维场景的可视化效率,同时满足空间查询分析功能,总体框架如图1所示。
图1 BIM-GIS集成可视化总体框架
框架主要包括3个环节:
(1) 通过RVT数据格式解析,要素几何信息判断,针对不同层次的应用需求建立语义过滤条件,将实体模型转换为表面模型,同时关联建筑构件的属性信息及材质信息。
(2) 基于LOD技术的金字塔多分辨率层次模型,将集成的BIM-GIS模型按照八叉树逻辑结构分割为多层次的网格模型,应用多分辨率LOD技术,距视点距离不同的网格内采取不同的模型表面细节。
(3) 过滤清洗表面模型原始数据的材质和纹理信息,使之成为透明不可见但包括几何信息及属性的模型,然后根据坐标重叠放置在模型场景中,通过空间三维坐标的定位,获取构件ID,实现查询分析功能。
BIM采用的几何表达方式多为构造实体几何模型(CSG)和扫描体[11],属于体模型的空间构模方法,GIS中地物三维模型几何表达方式多为边界表示模型(B-rep)[12]。BIM-GIS集成的关键在于体模型向面模型的转换,实现BIM与GIS在数据格式与空间位置的统一。具体过程如下:
首先解析RVT数据的数据库构成,对其中与构筑物相关的几何模型数据进行提取,并获取与几何数据相对性的语义信息,并以几何语义信息作为约束条件,以ElementID为构件元素的关键字段标识,关联其几何信息和属性信息。
其次对过滤后的RVT模型进行几何转换,即实体模型转换为表面模型,获取每个构件的三维数据,包括顶点坐标及法线信息。
最后提取构件的材质信息。RVT数据中,材质信息以独立元素的形式进行存储和管理,在RVT文档中每个材质元素都用唯一的ID进行标识。通过ElementID关联Model Elements中所包含材质参数,并从中获取其材质信息,包括填充图案、颜色、渲染等信息。
RVT模型是BIM全生命周期过程中设计阶段的典型数据,同时在施工与运维阶段中的结构分析、综合碰撞检查、造价管理及运行管理中得到继承,以RVT模型作为本文的BIM数据来源,具有代表性意义。RVT模型数据库由模型元素、基准元素、特定视图元素3部分构成,如图2所示。
图2 RVT模型数据库
模型元素(model elements)中存储了RVT模型所有的三维几何信息及与几何相关的语义信息描述。从操作层面上,RVT模型包含了建筑设计、建筑结构、暖通、给排水、电气等多方面建筑相关构件几何信息,从结构层面定义了从室外到室内各种类型的建筑及其附属设施的构件名称,即语义信息。同时,模型元素中的几何构件还包含建筑阶段化信息、光热传导、标识数据等属性信息。因此,在对RVT模型转换为GIS表面模型的过程中,可根据实际需求构建几何或语义过滤器,从而满足不同层次的模型转换需求。
GeometryObject基类是描述所有Model Element几何类的基类,其子类包括GeometryElement、GeometryInstance、Curve、Edge、Face、Mesh、Point、Polyline、Profile、Solid。其中,GeometryElement是描述一个构件几何信息的集合,可包含嵌套层次的多个几何结构,而GeometryInstance则多数用于表达Revit中的族文件,是布置在项目中的具体构件,相当于经几何变换的SymbolGoemetry,即加载到项目中的族文件,这二者涵盖了RVT模型中最主要的构件几何信息,Solid是RVT模型中描述三维数据最主要的方法,其他的子类基本不作为独立的构件三维几何信息存在。具体的几何信息转换为:
(1) 根据不同层次的应用需求,构件语义过滤器,筛选出符合要求的构件类型。
(2) 获取Model Elements几何类的图元信息。首先为避免模型转换过程中构件几何信息丢失问题,RVT模型精度指定为精细模型,然后历遍过滤后的Model Elements的Geometry,若不为空,得到Geometry-Object子类类型,获取构件几何信息表达方式。
(3) 获取顶点坐标及法线向量。历遍Geometry- Object子类类型,①若是GeometryElement,则需要进行强制类型转换,获取可能的几何类型,用递归循环函数解析其全部的几何数据;②若是Geometry Instance,需要通过GetInstance Geometry函数递归循环来获取其真实的几何数据;③若是其他几何结构,都是直接的几何表达方式,不涉及递归循环处理。以Solid举例,可直接通过Solid中的Face进行解析,获取三角面数据,通过设置其精细程度,控制弧面的显示效果,也可以利用Revit工具类SolidUtils来解析。
(4) 关联材质信息与属性信息。在RVT模型中,只有Model Elements包含材质信息,通过实体(solid)获取与实体相关的所有材质ID,根据材质ID获取材质对象,与实体几何信息关联。ElementID作为Element唯一标识符,可将其作为关键字段将Model Elements中的属性信息与几何信息关联。
BIM-GIS原始模型的海量数据特征,使应用系统无法提供场景实施绘制的能力。采用多细节层次(LOD)技术对BIM-GIS模型进行多尺度表达是目前主流的可视化研究内容,在BIM模型向GIS表面模型转换的过程中,对其几何结构进行简化,以实现不同细节的几何重构[13]。该方法在模型可视化角度进行了优化,本文在此基础上,采用八叉树空间索引机制,构建多分辨率层次模型,能够在保证BIM建筑构件信息几何、语义属性信息完整继承表达的基础上,增强大尺度BIM-GIS场景实时绘制能力,提高模型显示速度。
多分辨率层次(multi-resolution hierarchy)模型,通常采用倍率的方法构建金字塔,形成多个分辨率层次。通过构建金字塔多分辨率模型,可为BIM-GIS可视化系统提供不同精度的三维数据。多分辨率层次模型采用八叉树空间索引机制,经递归划分后,在保证模型原始精度的基础上,将分割的模型体元化,以子节点为起点,自下而上逐层进行模型表面简化重建,生成模型LOD数据,从而构建多分辨率层次模型,其流程及文件组织结构如图3所示。
图3 多分辨率层次BIM-GIS数据构建流程及文件组织结构
在大尺度高细节三维数据可视化处理过程中,八叉树是效果较好的数据结构[14],能够满足三维视椎体剪裁算法的要求。采用规则的空间八叉树将BIM-GIS模型数据包围盒八等分(如图4所示),节点收敛条件取决于用户指定深度阈值或多边形数量阈值,经递归划分后,特征复杂区域分割为较小的体元,简单区域分割体为较大体元。
图4 三维模型八叉树划分
分割后的原始精度表面模型存储在子节点中,过渡节点则存储逐级简化重建的LOD数据。为提高简化效率、保持简化模型表面特征,文本采用模型最小Q值顶点对(pair contraction)收缩方法[15],判断两个顶点距离是否小于设定阈值,将小于阈值的顶点进行收缩操作,依次反复迭代,直至重建的表面模型满足简化要求,进而从底层到顶层逐层生成多分辨率LOD模型。同时,为了实现纹理映射,将降低分辨率的纹理贴图坐标与几何多边形顶点的三维空间坐标进行统一。多分辨率层次LOD模型展示效果如图5所示。
图5 多分辨率层次LOD模型
在八叉树结构中,只有子节点存储的为原始精度几何模型,为满足BIM-GIS模型可视化效果,过程节点中存储的为经过几何重构的模型,建筑构件精细几何形态经过简化会出现不同程度的删减。当观察视点位于父节点以下、子节点以上时,系统绘制的BIM-GIS模型细节丢失,在进行建筑构件属性信息查询时,难免因此出现查询错误或失败的情况发生。因此本文设计了一种方法,将承载属性信息的原始精度模型进行材质纹理清洗,生成透明不可见,但以实体存在并继承了BIM全部的几何、属性信息的模型,然后空间重叠放置于BIM-GIS场景中。由于该模型不包含材质与纹理等图像信息,不影响计算机模型绘制速度,可一次性装载到三维场景中。在实际操作时,通过窗口空间三维坐标的拾取,获取构件ID,关联该构件相关的属性信息,从而实现建筑构件属性查询分析功能。
BIM-GIS模型中实体对象除属性对象以外,还包括空间对象及符号对象,如图6所示。为实现BIM-GIS模型数据的快速加载与前端显示,需要对BIM-GIS模型中栅格、矢量、三维模型、材质贴图、属性数据进行一体化管理。其中三维模型及材质贴图作为符号对象管理,以满足三维场景快速实时加载与显示;空间对象几何信息则从不同维度描述实体对象的地理空间特征,采用网络索引技术,在逻辑上按照空间对象的位置和大小,把该空间对象转为两个列的值存储起来,在关系数据库层次可构建包含这两个列和其他位置相关的列的B-Tree索引,能极大提高空间对象的聚簇效果及查询效率。
图6 BIM-GIS实体对象组织结构
本文采用Autodesk提供的标准RVT模型作为试验数据,基于语义信息将RVT模型转换为表面模型,实现建筑构件细节的无损输出,保证了构件几何语义信息的完整描述。图7(a)是转换前的RVT原始模型,包括建筑、HVAC、管道3种构件类型;图7(b)为转换完成的表面模型;图7(c)为风管构件转换完成的表面模型。对比RVT原始模型与转换后的表面模型,本文提出的模型转换方法能够完整继承RVT模型的几何、纹理、材质信息。然后采用深度为3的八叉树数据结构,将原始精度表面模型逐层构建多分辨率LOD模型,以符号的形式代替原有的矢量模型,如图8所示。在同样操作环境下对原始精度表面模型和多分辨层次LOD模型作比较分析试验(见表1),模型加载显示效率上,多分辨率层次LOD模型要高于原始精度表面模型。
图7 RVT模型与转换后的表面模型对比
图8 多分辨率层次模型-建筑
表1原始精度模型与多分辨率层次LOD模型数据加载显示比较
模型类型模型加载时间/s加载时内存消耗/MB漫游时内存消耗/MB显示帧率/FPS原始精度模型7.832.0633.6129多分辨率层次LDO模型2.37.768.3834
本文提出的基于多分辨率层次模型的BIM-GIS集成可视化方法,能够在完整继承BIM建筑构件信息几何、语义属性信息的基础上,实现BIM模型与GIS模型的集成;并通过对原始精度模型的处理与数据组织管理,在满足建筑构件属性信息完成描述与表达的基础上,提高BIM-GIS可视化效率。BIM与GIS之间并无可替代性,更倾向于一种互补的关系。BIM是用来整合和管理设施本身全生命周期各个阶段的信息,GIS则是整合和管理设施外部环境信息,把二者信息进行共享和互操作,以满足查询、空间分析及可视化的功能,是未来GIS的发展方向之一,也是BIM多维应用的一个重要途径。