一种建筑物BIM模型和实景三维模型的融合方法与流程

文档序号:19948758发布日期:2020-02-18 09:58阅读:4932来源:国知局
本发明涉及一种建筑物bim模型和实景三维模型的融合方法,属于建筑信息模型领域。
背景技术
::随着城市化进程不断加快,城市面临的问题也逐渐增多,城市建设、管理面临严峻挑战。为提高工作效率,实现跨部门的协同联动和城市的精细化管理服务,城市信息化迫在眉睫。智慧城市通过对多源信息的实时融合、跨领域信息共享,可为城市发展中遇到的问题提供良好的解决方案,是城市信息化的一个重要发展趋势。智慧城市由数字城市发展而来,以城市信息模型为基础,其中建筑信息模型是重要的组成部分。建筑领域的建筑信息模型(bim,buildinginformationmodeling)技术可通过数字信息仿真模拟出所需的建筑物形象,从而为智慧城市建设提供数据支撑。但bim本质上关注于建筑物本身及内部信息的表达,不包括建筑物周边环境信息的表达,在智慧城市空间位置相关应用上具有一定局限性。gis领域的实景三维模型可与bim模型相互补充,该模型着重于建筑物及地表现象的宏观表达,具有高精度、高逼真、可量测等特点。因此建筑信息模型与实景三维模型的融合是智慧城市发展的关键技术之一。现有技术中,通过在web端采用webgl作为容器,基于网络服务接口传输数据,结合网络编程知识开发应用程序,实现了bim数据在三维gis环境下的快速、高效加载,为工程全生命周期的应用提供了支持环境。然而,bim与实景三维模型的融合仍存在一定不足,有待进一步研究,例如,如何在完整表达几何图形的同时保留bim原模型中的语义属性特征,以及在同一环境中如何统一两种模型的空间位置,使其呈现内外一体化的展示效果。技术实现要素:本发明的目的在于提供一种建筑物bim模型和实景三维模型的融合方法,用以实现如何在完整表达几何图形的同时保留bim原模型中的语义属性特征,以及在同一环境中如何统一两种模型的空间位置,使其呈现内外一体化的展示效果。本发明采取的技术方案是:一种建筑物bim模型和实景三维模型的融合方法,其包括如下步骤:步骤一,拆分建筑物bim模型,生成各组件的json属性文件和ifc几何文件;步骤二,进行中间格式交换,ifc转为obj;步骤三,obj转为gltf,进一步实现三维几何图形数据传递;步骤四,属性、几何数据相连接,gltf与json生成b3dm;具体为,将包含几何、语义信息的gltf、json文件组转化为一个整体三维数据文件,即b3dm;步骤五,添加数据说明文件tileset.json,与b3dm转为3dtiles数据。进一步的,所述步骤一中,将ifc格式的bim模型进行拆分,具体包括数据处理环境搭建和据拆分导出,其中:(1)数据处理环境搭建:上传待处理的ifc模型至bimserver,使其保存在底层数据库中,在java环境下连接bimserver服务器;(2)数据拆分导出:调用bimserverapi,通过bimserverclient接口遍历上述ifc中所有的类型,找出所需的建筑类型对应的组件,并查询其中的信息;根据查询结果,利用client.download函数从服务器上下载各子构件信息的两种格式的文件,分别为ifc、json,用于存储几何、语义信息,同时为下载的定义命名规则,即描述同一构件的ifc、json文件,且其文件名也相同。进一步的,所述步骤二中,将子构件的ifc文件集合存储于同一文件目录下,然后利用java语言构建循环体,重复执行转换功能。进一步的,,所述步骤三中,首先对obj格式的bim模型进行空间配准,再进一步实现obj至gltf格式转换。其中,空间配准具体过程如下:(1)计算旋转参数;将bim/obj数据视为源数据,实景三维模型/obj数据视为目标数据,两种模型同时导入三维软件软件geomagicstudio中;配准过程中,首先选取同名点作为起算数据,然后采用svd算法计算旋转参数:bim/obj数据坐标表示为x′i=(x′i,y′i,z′i),实景三维模型/obj坐标数据表示为xi=(xi,yi,zi);在matlab中导入坐标数据,求解旋转参数过程如下:①计算两组坐标的重心②进行重心化处理,得到{δxi=xi-p}{δx′i=x′i-q};③计算3×3数据矩阵④采用svd函数分解s矩阵sm×n=um×mλm×nvtn×n;⑤计算旋转矩阵r=vut;⑥计算在x、y、z三轴方向的旋转角度α、β、γ;上述中各参数含义如下:x′i=(x′i,y′i,z′i):bim模型中第i个同名点的三维坐标;xi=(xi,yi,zi):实景三维模型中第i个同名点的三维坐标;n:同名点总个数;p:bim模型中所有同名点的重心坐标;q:实景三维模型中所有同名点的重心坐标;△xi:实景三维模型同名点坐标与重心坐标之差,即重心化后坐标;△xi’:bim模型同名点坐标与重心坐标之差,即重心化后坐标;△xit:重心化转置矩阵;s:奇异值数据矩阵;u:左奇异向量矩阵;∧:奇异值对角矩阵;v:右奇异向量矩阵;α:bim模型与实景三维模型在x轴方向上的夹角;β:bim模型与实景三维模型在y轴方向上的夹角;γ:bim模型与实景三维模型在z轴方向上的夹角;(2)确定平移参数:选取建筑物bim上的某一显著标志点作为局部坐标系的原点,若该点在局部坐标系下的坐标为(x0,y0,z0),则平移量为(-x0,-y0,-z0);(3)实现空间变换:根据计算得到的参数旋转平移obj模型,同时为实现批量旋转变换,在geomagicstudio中建立以python为脚本语言的宏命令,记录变换操作指令,运行该命令后批量完成变换工作;旋转后的模型仍保存为obj格式。obj至gltf格式转换为:将obj中的建筑物顶点坐标、外法向量、纹理坐标进行保存,建筑物的纹理图片以png或jpg格式存储于gltf中;在obj中通过顶点索引绘制三角面片构成几何体,在gltf中用格网代表单一的复杂几何形状;设置顶点遍历模式,使格网被正确的转换。进一步的,所述步骤四中,首先根据各子组件的gltf几何文件检索到同名的json文件,接着将子组件gltf二进制化,并写入b3dm文件体中的binarygltf数据块,以及将子组件对应的语义信息文件,写入b3dm文件体中batchtable数据块;并将子组件之间的id链接转换为batchid属性实现彼此的相互映射。进一步的,所述步骤五中,设局部坐标系原点在全局坐标系中坐标为(longitude,latitude,height),然后由cesium.transforms.eastnorthuptofixedframe函数计算坐标系变换的参数并赋值给transform属性,实现局部坐标系到世界坐标系的空间映射。本发明采用以上技术方案与现有技术相比,具有以下技术效果:(1)本发明在bim模型从ifc标准转为3dtiles实现融合后,仍保留了原模型的特性,不仅可以完整表达建筑物各构件几何图形,而且可以查询各构件对应的属性语义信息,包括名称、类型、唯一标识符、尺寸、材质等。(2)本发明针对bim模型本身缺失坐标信息,无法与具有全局坐标系的实景三维模型统一位置的问题,提出了空间配准的方案,并结合相关算法高效、快速的获取配准参数,实现局部坐标系至全局坐标系的空间关系映射。(3)本发明实现了跨领域的异构数据相融合,实现建筑领域的bim与gis领域的实景三维模型在同一三维环境中的展现,实景三维模型采用丰富的纹理大范围展现城市场景,bim负责场景内部建筑物的细节表达,二者融合为智慧城市管理和发展提供了可靠的数据支撑。附图说明图1是建筑物bim和实景三维模型融合框架。图2是拆分建筑物bim模型的重构流程示意图。图3是局部坐标系至全局坐标系的空间关系映射图。图4是几何信息转化图。图5是模型语义信息融合图图6是3dtiles的数据结构图。图7是实施例三中建筑物bim模型。具体实施方式下面结合附图和具体实施例对本发明进行详细说明。实施例一。图1为一种建筑物bim和实景三维模型融合框架,在此框架中ifc标准的建筑物bim模型需经过一系列转化流程,形成新的3dtiles模型的建筑物,融合与转换过程主要包括以下四个环节:(1)重构模型。bim模型包含丰富的建筑物语义信息,如墙、柱、梁等,将建筑物整体转换将会导致构建语义信息的丢失。因此需要首先对建筑物bim模型进行重构,将一个整体的建筑物bim模型分解为多个子组件的bim模型集合。每个子组件模型的数据格式,采用ifc文件存储几何和空间信息,如梁1.ifc,梁2.ifc,柱1.ifc等,并将子组件对应的语义属性信息存放于同名的属性文件中,其中属性文件采用json(javascriptobjectnotation)格式存储,json是一种轻量级的数据交换格式,比较适合于文本数据的传输与交换。(2)几何信息转化。重构后建筑物子组件的几何和空间信息采用ifc格式存储,而ifc格式无法直接转换为3dtiles数据格式。为此本文采用间接转换法,首先选取obj格式作为中间交换格式。obj文件格式是aliaswavefront公司开发的一种标准3d模型文件格式,此格式采用文本形式记录,比较适合用于3d软件模型之间的互导与交换。接着将obj格式转换为实景三维模型中的gltf格式,再接着将gltf格式转换为b3dm格式,通过b3dm文件,建立3dtiles中的tile文件,从而实现模型几何信息转换。(3)空间位置配准。3dtiles模型是实景三维模型,本质上是一种地理信息系统模型,gis模型最大的特点是其所带的坐标系,通常为空间位置坐标系,如wgs84世界坐标系。而bim对应的ifc模型中的坐标系通常是相对坐标系,是一种局部坐标系,此坐标系常常为表达建筑物模型的尺度和大小。为保证建筑物bim模型能在实景三维gis中正确的位置显示,需对二者进行空间位置的配准,详细的配准过程将在2.3节中详细介绍。(4)语义映射。bim中包括大量子组件的语义描述信息,如梁的材质、混凝土标号等,通过前面的模型重构步骤,子组件中的语义信息被分别存放于对应的json文件中。语义映射就是将bim中的多个子组件的json语义信息映射为实景三维模型中的语义属性信息,并将每个子组件的语义信息与gltf几何图形文件一一对应。在此基础上得到转化后的b3dm文件,最终与实景三维模型中的说明性文件tileset.json整合为3dtiles,从而可实现建筑物bim模型和实景三维模型的一体化融合。综上,上面的融合框架主要包括:模型重构、几何信息转化、模型三维配准及语义映射。实施例二。以上述实施例的框架为基础,一种ifc标准的建筑信息模型(bim)与3dtiles标准的实景三维模型的融合方法为:首先拆分建筑物bim模型,生成各组件的json属性文件和ifc几何文件;接着中间格式交换,ifc转为obj;obj转为gltf,进一步实现三维几何图形数据传递;随后属性、几何数据相连接,gltf与json生成b3dm;最后添加数据说明文件tileset.json,与b3dm转为3dtiles数据。具体操作步骤如下:步骤1:建筑物bim模型拆分此步骤的目的是将ifc格式的bim模型进行拆分,包括数据处理环境搭建、模型拆分。1)数据处理环境搭建:下载bim领域著名的开源软件bimserver,安装成功后在本地运行该服务器,并提供用户名及密码注册登录。上传待处理的ifc模型至bimserver,使其保存在底层数据库中。在java环境下连接bimserver服务器,连接口令为注册时的用户名及密码。2)数据拆分导出:ifc模型由众多构件类型组成,其中与建筑物相关的构件类型主要类型包括建筑柱、构造柱、墙(如建筑内隔墙、幕墙)、楼梯栏杆、坡道、门、窗等。为避免融合过程中部分信息丢失,需将整体建筑模型拆分为诸多子建筑构件。调用bimserverapi,通过bimserverclient接口遍历上述ifc中所有的类型,找出所需的建筑类型对应的组件,并查询其中的信息。根据构件的几何特点不同,查询语句也不同,分为三种方式:1.常规组件,最简单构件类型:ifcwindow(窗)、ifcdoor(门)、ifccolumn(柱)、ifcbeam(梁)、ifccovering(天花板)、ifcrailing(栏杆)、ifcfurnishingelement(陈设元素)。2.具有孔洞的组件类型:例如ifcwall(墙)、ifcslab(楼板)。3.包含聚合组件的对象:某些复杂对象由多个小组件组成,例如,ifccurtainwall(幕墙),包含板和构件;ifcstair(楼梯)包含栏杆、楼梯梯段和楼板;ifcramp(坡道)包含板和坡道。根据查询结果,利用client.download函数从服务器上下载各子构件信息的两种格式的文件,分别为ifc、json,用于存储几何、语义信息。同时为下载的定义命名规则,即描述同一构件的ifc、json文件,其文件名也相同。具体实现流程如图2。步骤2,从ifc至objifc表达几何信息的文件结构较为复杂,为便于实现融合转换,选用简单结构的文件格式作为中间格式过渡。本步骤将逐一读取子构件ifc文件,转换为obj中间交换文件,传递几何信息。将子构件的ifc文件集合存储于同一文件目录下。利用java语言构建循环体,重复执行转换功能。转换功能实现依赖开源工具ifcconvert(http://ifcopenshell.org/ifcconvert.html),通过命令行可直接调用该转换工具。步骤3,从obj至gltfbim采用局部坐标系,而实景三维模型采用全局坐标系。为实现空间关系的准确映射,本步骤首先对obj格式的bim模型进行空间配准,再进一步实现obj至gltf格式转换。1)空间配准:3dtiles标准的发布者cesium在tileset.json模块中提供了计算局部坐标框架映射至全局框架的函数,参数为局部坐标系的原点在原始坐标空间中的笛卡尔坐标。局部坐标系的原点在三维椭球体的表面上,高程为零。x轴从所在地理位置指向正东方向,y轴从所在地理位置指向正北方向,z轴从所在位置垂直椭球表面指向上方。如图3所示。因此在局部坐标系下,需对模型进行旋转变换,在三维环境中配准。其次将局部坐标系的原点平移至建筑物bim上的显著特征点,便于为上述的映射函数提供准确的原点参数值。空间配准具体过程如下:1.计算旋转参数将bim/obj数据视为源数据,实景三维模型/obj数据视为目标数据,两种模型同时导入三维软件软件geomagicstudio中。配准过程首先是选取同名点作为起算数据。同名点选取主要遵循以下三个原则:①位于建筑表面的明显特征点。由于实景模型中的建筑物通常只有外轮廓表面信息,因此同名点不适合采用建筑内部点,同时为提高采点精确度,应选用建筑表面明显标志点,例如墙角、窗户角、建筑表面结构连接处等等。②均匀分布。根据建筑群的规模合理分布同名点位置,避免点出现过度集中、线形排列的情况,影响计算结果。③至少3对同名点。采用svd算法计算旋转参数需要至少三组同名点作为起算数据,为提高计算精度,可适当增加同名点对数。bim/obj数据坐标表示为x′i=(x′i,y′i,z′i),实景三维模型/obj坐标数据表示为xi=(xi,yi,zi)。在matlab中导入坐标数据,求解旋转参数过程如下:①计算两组坐标的重心②进行重心化处理,得到{δxi=xi-p}{δx′i=x′i-q}③计算3×3数据矩阵④采用svd函数分解s矩阵sm×n=um×mλm×nvtn×n⑤计算旋转矩阵r=vut⑥计算在x、y、z三轴方向的旋转角度α、β、γ;式中各参数含义如下:x′i=(x′i,y′i,z′i):bim模型中第i个同名点的三维坐标;xi=(xi,yi,zi):实景三维模型中第i个同名点的三维坐标;n:同名点总个数;p:bim模型中所有同名点的重心坐标;q:实景三维模型中所有同名点的重心坐标;△xi:实景三维模型同名点坐标与重心坐标之差,即重心化后坐标;△xi’:bim模型同名点坐标与重心坐标之差,即重心化后坐标;△xit:重心化转置矩阵;s:奇异值数据矩阵;u:左奇异向量矩阵;∧:奇异值对角矩阵;v:右奇异向量矩阵;α:bim模型与实景三维模型在x轴方向上的夹角;β:bim模型与实景三维模型在y轴方向上的夹角;γ:bim模型与实景三维模型在z轴方向上的夹角。2.确定平移参数:选取建筑物bim上的某一显著标志点作为局部坐标系的原点,选取时遵循建筑物bim表面拐点、特征点原则,例如墙根、屋顶转角等。若该点在局部坐标系下的坐标为(x0,y0,z0),则平移量为(-x0,-y0,-z0)。3.实现空间变换:根据计算得到的参数旋转平移obj模型,由于在此阶段,模型仍是由零碎的子构件拼接而成,各构件均为独立的obj文件。为实现批量旋转变换,在geomagicstudio中建立以python为脚本语言的宏命令,记录变换操作指令,运行该命令后批量完成变换工作。旋转后的模型仍保存为obj格式。2)从obj至gltf:gltf可以减少3d格式中与渲染无关的冗余数据,并且在更加适合opengl簇加载的一种3d文件格式。gltf格式与obj格式的数据结构框架不同,见图4所示转换时,需实现obj文件中顶点坐标、外法向量、纹理坐标、纹理图片等信息的转换。gltf的bin文件存储几何体的基本数据,因此需将obj中的建筑物顶点坐标、外法向量、纹理坐标保存于此。建筑物的纹理图片以png、jpg等格式存储于gltf中。除了坐标信息几何体的转换也比较重要,在obj中通过顶点索引绘制三角面片构成几何体。在gltf中用格网(mesh)代表单一的复杂几何形状,格网又由图元(primitive)数组组成,各图元中包含了引用于bin文件的相应顶点属性及纹理。因此设置顶点遍历模式,使格网可以被正确的转换。步骤4,从gltf+json至b3dm融合的最后阶段是将包含几何、语义信息的gltf、json文件组转化为一个整体三维数据文件,即b3dm,其结构如图5所示。b3dm文件由文件头、文件体构成,文件头中记录了文件类型、版本、大小等信息。文件体中包括要素表(featuretable)、批量表(batchtable)、二进制gltf,它们分别记录了文件中的要素个数、要素属性、几何数据。因此本步骤的目的是将前面形成的子组件gltf和json文件放入相应区块,并仍保持原始的关联性。从gltf至b3dm的转换过程见图6所示,首先根据各子组件的gltf几何文件检索到同名的json文件,如图4中的wall0.gltf检索到对应的wall0.json,二者通过共同的id实现连接。接着将子组件gltf(如wall0.gltf)二进制化,并写入b3dm文件体中的binarygltf数据块。将子组件对应的语义信息文件(如wall0.json),写入b3dm文件体中batchtable数据块。并将子组件之间的id链接转换为batchid属性实现彼此的相互映射。binarygltf中每个顶点都包含batchid属性,id值相同的顶点属于同一子组件。步骤5,从b3dm至3dtiles3dtiles由地理数据b3dm文件以及说明性数据tileset.json文件tileset.json中包含瓦片元数据,用来组织三维瓦片的空间结构,其数据结构如图6所示。空间包围盒(boundingvolume)是一个数组,表示当前瓦片数据的空间范围。几何误差(geometricerror)用来在lod划分中决定当前视角下所应加载的层级。精细化(refine)表示瓦片数据加载的精细化方式,支持add、replace两种。内容(content)通过链接(url)指定需要加载的b3dm数据。瓦片元数据中还包括一个transform属性,存储一个包含16个元素的数组,用于表示以列为主序的4×4的坐标变换矩阵,从而实现瓦片空间位置的变换。假设局部坐标系原点在全局坐标系中坐标为(longitude,latitude,height),则由cesium.transforms.eastnorthuptofixedframe函数计算坐标系变换的参数并赋值给transform属性,实现局部坐标系到世界坐标系的空间映射。实施例三。以南京市建筑设计研究院楼群为案例,验证文中探索的模型融合方法。使用djimatrice600多旋翼无人机,搭载五镜头倾斜相机,设备参数如表1所示。对建筑及其四周约2.6公顷的范围实施外业测绘,获取航片1300余张。应用实景三维建模软件smart3dcapture生产实验区模型格式为3dtlies。表1无人机平台与搭载传感器参数同时以revit软件,建立了南京市建筑设计研究院楼群的bim模型,为三栋互相连接的七层建筑,如图7所示。bim模型中共计包含11类、10533个构件。为实现二者的融合,首先将整个建筑物bim模型导出为ifc格式,并重构为11类组件见表2所示。表2案例建筑物bim模型拆分子组件明细表案例bim模型经过模型重构、几何转化、空间配准、语义映射后生成3dtiles数据。在cesium平台中加载该模型数据。经试验证明,建筑物三维实景模型和bim模型在三维地理环境中相融合,三维实景模型真实还原了实验区域的建筑物外貌及周边环境,bim模型细致地展现出建筑物内部的结构构造,融合成果实现了室内外一体化建模,为智慧城市建筑物细部监控、管理提供了良好的基础。为进一步验证bim融合前后信息的一致性,编写要素点击与查看事件,在该测试平台中,对融合模型放大到一定级别,进入实景三维模型中,可查看bim构件信息。如图7所示,bim每个构件独立且与原始模型一致,点击一个构件,可查看属性name、type等,表明几何、属性信息均保留完整,达到了实验预期效果。以上显示和描述了本发明的基本原理、主要特征和优点。本领域的普通技术人员应该了解,上述实施例不以任何形式限制本发明的保护范围,凡采用等同替换等方式所获得的技术方案,均落于本发明的保护范围内。本发明未涉及部分均与现有技术相同或可采用现有技术加以实现。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1