一种建筑物BIM模型和实景三维模型的融合方法转让专利

申请号 : CN201911020362.6

文献号 : CN110807835B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 徐敬海卜兰

申请人 : 南京工业大学

摘要 :

本发明公开了一种建筑物BIM模型和实景三维模型的融合方法,融合与转换过程主要包括:模型重构、几何信息转化、模型三维配准及语义映射;融合方法为:首先拆分建筑物BIM模型,生成各组件的json属性文件和ifc几何文件;接着中间格式交换,ifc转为obj;obj转为glTF,进一步实现三维几何图形数据传递;随后属性、几何数据相连接,glTF与json生成b3dm;最后添加数据说明文件tileset.json,与b3dm转为3DTiles数据。本发明实现了如何在完整表达几何图形的同时保留BIM原模型中的语义属性特征,以及在同一环境中如何统一两种模型的空间位置,使其呈现内外一体化的展示效果。

权利要求 :

1.一种建筑物BIM模型和实景三维模型的融合方法,其特征在于包括如下步骤:步骤一,拆分建筑物BIM模型,生成各组件的json属性文件和ifc几何文件;

步骤二,进行中间格式交换,ifc转为obj;

步骤三,obj转为glTF,进一步实现三维几何图形数据传递;

步骤四,属性、几何数据相连接,glTF与json生成b3dm;具体为,将包含几何、语义信息的glTF、json文件组转化为一个整体三维数据文件,即b3dm;

步骤五,添加数据说明文件tileset.json,与b3dm转为3DTiles数据;

所述步骤三中,首先对obj格式的BIM模型进行空间配准,再进一步实现obj至glTF格式转换;空间配准具体过程如下:

(1)计算旋转参数;

将BIM数据视为源数据,实景三维模型数据视为目标数据,两种模型同时导入三维软件Geomagic Studio中;配准过程中,首先选取同名点作为起算数据,然后采用SVD算法计算旋转参数:

BIM数据坐标表示为X'i=(x'i,y'i,z'i),实景三维模型数据坐标表示为Xi=(xi,yi,zi);在Matlab中导入数据坐标,求解旋转参数过程如下:①计算两组坐标的重心

②进行重心化处理,得到{△Xi=Xi‑P}{△X′i=X′‑Q};

③计算3×3数据矩阵

T

④采用SVD函数分解S矩阵Sm×n=Um×mΛm×nVn×n;

T

⑤计算旋转矩阵R=VU;

⑥计算在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模型同名点坐标与重心坐标之差,即重心化后坐标;

T

△Xi:重心化转置矩阵;

S:奇异值数据矩阵;

U:左奇异向量矩阵;

∧:奇异值对角矩阵;

V:右奇异向量矩阵;

α:BIM模型与实景三维模型在x轴方向上的夹角;

β:BIM模型与实景三维模型在y轴方向上的夹角;

γ:BIM模型与实景三维模型在z轴方向上的夹角;

(2)确定平移参数:选取建筑物BIM上的某一显著标志点作为局部坐标系的原点,若该点在局部坐标系下的坐标为(x0,y0,z0),则平移量为(‑x0,‑y0,‑z0);

(3)实现空间变换:根据计算得到的参数旋转平移obj模型,同时为实现批量旋转变换,在Geomagic Studio中建立以python为脚本语言的宏命令,记录变换操作指令,运行该命令后批量完成变换工作;旋转后的模型仍保存为obj格式。

2.根据权利要求1所述的一种建筑物BIM模型和实景三维模型的融合方法,其特征在于,所述步骤一中,将IFC格式的BIM模型进行拆分,具体包括数据处理环境搭建和数据拆分导出,其中:

(1)数据处理环境搭建:上传待处理的IFC模型至BIMServer,使其保存在底层数据库中,在Java环境下连接BIM Server服务器;

(2)数据拆分导出:调用BIMServer API,通过BimServerClient接口遍历上述IFC中所有的类型,找出所需的建筑类型对应的组件,并查询其中的信息;根据查询结果,利用client.download函数从服务器上下载各子构件信息的两种格式的文件,分别为ifc、json,用于存储几何、语义信息,同时为下载的定义命名规则,即描述同一构件的ifc、json文件,且其文件名也相同。

3.根据权利要求1所述的一种建筑物BIM模型和实景三维模型的融合方法,其特征在于,所述步骤二中,将子构件的ifc文件集合存储于同一文件目录下,然后利用Java语言构建循环体,重复执行转换功能。

4.根据权利要求1所述的一种建筑物BIM模型和实景三维模型的融合方法,其特征在于,obj至glTF格式转换:将obj中的建筑物顶点坐标、外法向量、纹理坐标进行保存,建筑物的纹理图片以png或jpg格式存储于glTF中;在obj中通过顶点索引绘制三角面片构成几何体,在glTF中用格网代表单一的复杂几何形状;设置顶点遍历模式,使格网被正确的转换。

5.根据权利要求1所述的一种建筑物BIM模型和实景三维模型的融合方法,其特征在于,所述步骤四中,首先根据各子组件的glTF几何文件检索到同名的json文件,接着将子组件glTF二进制化,并写入b3dm文件体中的Binary glTF数据块,以及将子组件对应的语义信息文件,写入b3dm文件体中Batch Table数据块;并将子组件之间的ID链接转换为batchid属性实现彼此的相互映射。

6.根据权利要求1所述的一种建筑物BIM模型和实景三维模型的融合方法,其特征在于,所述步骤五中,设局部坐标系原点在全局坐标系中坐标为(longitude,latitude,height),然后由Cesium.Transforms.eastNorthUpToFixedFrame函数计算坐标系变换的参数并赋值给transform属性,实现局部坐标系到世界坐标系的空间映射。

说明书 :

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

技术领域

[0001] 本发明涉及一种建筑物BIM模型和实景三维模型的融合方法,属于建筑信息模型领域。

背景技术

[0002] 随着城市化进程不断加快,城市面临的问题也逐渐增多,城市建设、管理面临严峻挑战。为提高工作效率,实现跨部门的协同联动和城市的精细化管理服务,城市信息化迫在
眉睫。智慧城市通过对多源信息的实时融合、跨领域信息共享,可为城市发展中遇到的问题
提供良好的解决方案,是城市信息化的一个重要发展趋势。
[0003] 智慧城市由数字城市发展而来,以城市信息模型为基础,其中建筑信息模型是重要的组成部分。建筑领域的建筑信息模型(BIM,Building Information Modeling)技术可
通过数字信息仿真模拟出所需的建筑物形象,从而为智慧城市建设提供数据支撑。但BIM本
质上关注于建筑物本身及内部信息的表达,不包括建筑物周边环境信息的表达,在智慧城
市空间位置相关应用上具有一定局限性。GIS领域的实景三维模型可与BIM模型相互补充,
该模型着重于建筑物及地表现象的宏观表达,具有高精度、高逼真、可量测等特点。因此建
筑信息模型与实景三维模型的融合是智慧城市发展的关键技术之一。
[0004] 现有技术中,通过在Web端采用WebGL作为容器,基于网络服务接口传输数据,结合网络编程知识开发应用程序,实现了BIM数据在三维GIS环境下的快速、高效加载,为工程全
生命周期的应用提供了支持环境。
[0005] 然而,BIM与实景三维模型的融合仍存在一定不足,有待进一步研究,例如,如何在完整表达几何图形的同时保留BIM原模型中的语义属性特征,以及在同一环境中如何统一
两种模型的空间位置,使其呈现内外一体化的展示效果。

发明内容

[0006] 本发明的目的在于提供一种建筑物BIM模型和实景三维模型的融合方法,用以实现如何在完整表达几何图形的同时保留BIM原模型中的语义属性特征,以及在同一环境中
如何统一两种模型的空间位置,使其呈现内外一体化的展示效果。
[0007] 本发明采取的技术方案是:一种建筑物BIM模型和实景三维模型的融合方法,其包括如下步骤:
[0008] 步骤一,拆分建筑物BIM模型,生成各组件的json属性文件和ifc几何文件;
[0009] 步骤二,进行中间格式交换,ifc转为obj;
[0010] 步骤三,obj转为glTF,进一步实现三维几何图形数据传递;
[0011] 步骤四,属性、几何数据相连接,glTF与json生成b3dm;具体为,将包含几何、语义信息的glTF、json文件组转化为一个整体三维数据文件,即b3dm;
[0012] 步骤五,添加数据说明文件tileset.json,与b3dm转为3DTiles数据。
[0013] 进一步的,所述步骤一中,将IFC格式的BIM模型进行拆分,具体包括数据处理环境搭建和据拆分导出,其中:
[0014] (1)数据处理环境搭建:上传待处理的IFC模型至BIMServer,使其保存在底层数据库中,在Java环境下连接BIM Server服务器;
[0015] (2)数据拆分导出:调用BIMServer API,通过BimServerClient接口遍历上述IFC中所有的类型,找出所需的建筑类型对应的组件,并查询其中的信息;根据查询结果,利用
client.download函数从服务器上下载各子构件信息的两种格式的文件,分别为ifc、json,
用于存储几何、语义信息,同时为下载的定义命名规则,即描述同一构件的ifc、json文件,
且其文件名也相同。
[0016] 进一步的,所述步骤二中,将子构件的ifc文件集合存储于同一文件目录下,然后利用Java语言构建循环体,重复执行转换功能。
[0017] 进一步的,,所述步骤三中,首先对obj格式的BIM模型进行空间配准,再进一步实现obj至glTF格式转换。
[0018] 其中,空间配准具体过程如下:
[0019] (1)计算旋转参数;
[0020] 将BIM/obj数据视为源数据,实景三维模型/obj数据视为目标数据,两种模型同时导入三维软件软件Geomagic Studio中;配准过程中,首先选取同名点作为起算数据,然后
采用SVD算法计算旋转参数:
[0021] BIM/obj数据坐标表示为X′i=(x′i,y′i,z′i),实景三维模型/obj坐标数据表示为Xi=(xi,yi,zi);在Matlab中导入坐标数据,求解旋转参数过程如下:
[0022] ①计算两组坐标的重心
[0023] ②进行重心化处理,得到{ΔXi=Xi‑P}{ΔX′i=X′i‑Q};
[0024] ③计算3×3数据矩阵
[0025] ④采用SVD函数分解S矩阵Sm×n=Um×mΛm×nVTn×n;
[0026] ⑤计算旋转矩阵R=VUT;
[0027] ⑥计算在X、Y、Z三轴方向的旋转角度α、β、γ;
[0028] 上述中各参数含义如下:
[0029] X′i=(x′i,y′i,z′i):BIM模型中第i个同名点的三维坐标;
[0030] Xi=(xi,yi,zi):实景三维模型中第i个同名点的三维坐标;
[0031] n:同名点总个数;
[0032] P:BIM模型中所有同名点的重心坐标;
[0033] Q:实景三维模型中所有同名点的重心坐标;
[0034] △Xi:实景三维模型同名点坐标与重心坐标之差,即重心化后坐标;
[0035] △Xi’:BIM模型同名点坐标与重心坐标之差,即重心化后坐标;
[0036] △XiT:重心化转置矩阵;
[0037] S:奇异值数据矩阵;
[0038] U:左奇异向量矩阵;
[0039] ∧:奇异值对角矩阵;
[0040] V:右奇异向量矩阵;
[0041] α:BIM模型与实景三维模型在x轴方向上的夹角;
[0042] β:BIM模型与实景三维模型在y轴方向上的夹角;
[0043] γ:BIM模型与实景三维模型在z轴方向上的夹角;
[0044] (2)确定平移参数:选取建筑物BIM上的某一显著标志点作为局部坐标系的原点,若该点在局部坐标系下的坐标为(x0,y0,z0),则平移量为(‑x0,‑y0,‑z0);
[0045] (3)实现空间变换:根据计算得到的参数旋转平移obj模型,同时为实现批量旋转变换,在Geomagic Studio中建立以python为脚本语言的宏命令,记录变换操作指令,运行
该命令后批量完成变换工作;旋转后的模型仍保存为obj格式。
[0046] obj至glTF格式转换为:将obj中的建筑物顶点坐标、外法向量、纹理坐标进行保存,建筑物的纹理图片以png或jpg格式存储于glTF中;在obj中通过顶点索引绘制三角面片
构成几何体,在glTF中用格网代表单一的复杂几何形状;设置顶点遍历模式,使格网被正确
的转换。
[0047] 进一步的,所述步骤四中,首先根据各子组件的glTF几何文件检索到同名的json文件,接着将子组件glTF二进制化,并写入b3dm文件体中的Binary glTF数据块,以及将子
组件对应的语义信息文件,写入b3dm文件体中Batch Table数据块;并将子组件之间的ID链
接转换为batchid属性实现彼此的相互映射。
[0048] 进一步的,所述步骤五中,设局部坐标系原点在全局坐标系中坐标为(longitude,latitude,height),然后由Cesium.Transforms.eastNorthUpToFixedFrame函数计算坐标
系变换的参数并赋值给transform属性,实现局部坐标系到世界坐标系的空间映射。
[0049] 本发明采用以上技术方案与现有技术相比,具有以下技术效果:
[0050] (1)本发明在BIM模型从IFC标准转为3DTiles实现融合后,仍保留了原模型的特性,不仅可以完整表达建筑物各构件几何图形,而且可以查询各构件对应的属性语义信息,
包括名称、类型、唯一标识符、尺寸、材质等。
[0051] (2)本发明针对BIM模型本身缺失坐标信息,无法与具有全局坐标系的实景三维模型统一位置的问题,提出了空间配准的方案,并结合相关算法高效、快速的获取配准参数,
实现局部坐标系至全局坐标系的空间关系映射。
[0052] (3)本发明实现了跨领域的异构数据相融合,实现建筑领域的BIM与GIS领域的实景三维模型在同一三维环境中的展现,实景三维模型采用丰富的纹理大范围展现城市场
景,BIM负责场景内部建筑物的细节表达,二者融合为智慧城市管理和发展提供了可靠的数
据支撑。

附图说明

[0053] 图1是建筑物BIM和实景三维模型融合框架。
[0054] 图2是拆分建筑物BIM模型的重构流程示意图。
[0055] 图3是局部坐标系至全局坐标系的空间关系映射图。
[0056] 图4是几何信息转化图。
[0057] 图5是模型语义信息融合图
[0058] 图6是3DTiles的数据结构图。
[0059] 图7是实施例三中建筑物BIM模型。

具体实施方式

[0060] 下面结合附图和具体实施例对本发明进行详细说明。
[0061] 实施例一。
[0062] 图1为一种建筑物BIM和实景三维模型融合框架,在此框架中IFC标准的建筑物BIM模型需经过一系列转化流程,形成新的3DTiles模型的建筑物,融合与转换过程主要包括以
下四个环节:
[0063] (1)重构模型。BIM模型包含丰富的建筑物语义信息,如墙、柱、梁等,将建筑物整体转换将会导致构建语义信息的丢失。因此需要首先对建筑物BIM模型进行重构,将一个整体
的建筑物BIM模型分解为多个子组件的BIM模型集合。每个子组件模型的数据格式,采用IFC
文件存储几何和空间信息,如梁1.ifc,梁2.ifc,柱1.ifc等,并将子组件对应的语义属性信
息存放于同名的属性文件中,其中属性文件采用JSON(JavaScript Object Notation)格式
存储,JSON是一种轻量级的数据交换格式,比较适合于文本数据的传输与交换。
[0064] (2)几何信息转化。重构后建筑物子组件的几何和空间信息采用IFC格式存储,而IFC格式无法直接转换为3D Tiles数据格式。为此本文采用间接转换法,首先选取OBJ格式
作为中间交换格式。OBJ文件格式是Alias Wavefront公司开发的一种标准3D模型文件格
式,此格式采用文本形式记录,比较适合用于3D软件模型之间的互导与交换。接着将OBJ格
式转换为实景三维模型中的glTF格式,再接着将glTF格式转换为b3dm格式,通过b3dm文件,
建立3D tiles中的tile文件,从而实现模型几何信息转换。
[0065] (3)空间位置配准。3D Tiles模型是实景三维模型,本质上是一种地理信息系统模型,GIS模型最大的特点是其所带的坐标系,通常为空间位置坐标系,如WGS84世界坐标系。
而BIM对应的IFC模型中的坐标系通常是相对坐标系,是一种局部坐标系,此坐标系常常为
表达建筑物模型的尺度和大小。为保证建筑物BIM模型能在实景三维GIS中正确的位置显
示,需对二者进行空间位置的配准,详细的配准过程将在2.3节中详细介绍。
[0066] (4)语义映射。BIM中包括大量子组件的语义描述信息,如梁的材质、混凝土标号等,通过前面的模型重构步骤,子组件中的语义信息被分别存放于对应的JSON文件中。语义
映射就是将BIM中的多个子组件的JSON语义信息映射为实景三维模型中的语义属性信息,
并将每个子组件的语义信息与glTF几何图形文件一一对应。在此基础上得到转化后的b3dm
文件,最终与实景三维模型中的说明性文件tileset.json整合为3D Tiles,从而可实现建
筑物BIM模型和实景三维模型的一体化融合。
[0067] 综上,上面的融合框架主要包括:模型重构、几何信息转化、模型三维配准及语义映射。
[0068] 实施例二。
[0069] 以上述实施例的框架为基础,一种IFC标准的建筑信息模型(BIM)与3DTiles标准的实景三维模型的融合方法为:首先拆分建筑物BIM模型,生成各组件的json属性文件和
ifc几何文件;接着中间格式交换,ifc转为obj;obj转为glTF,进一步实现三维几何图形数
据传递;随后属性、几何数据相连接,glTF与json生成b3dm;最后添加数据说明文件
tileset.json,与b3dm转为3DTiles数据。
[0070] 具体操作步骤如下:
[0071] 步骤1:建筑物BIM模型拆分
[0072] 此步骤的目的是将IFC格式的BIM模型进行拆分,包括数据处理环境搭建、模型拆分。
[0073] 1)数据处理环境搭建:下载BIM领域著名的开源软件BIM Server,安装成功后在本地运行该服务器,并提供用户名及密码注册登录。上传待处理的IFC模型至BIMServer,使其
保存在底层数据库中。在Java环境下连接BIM Server服务器,连接口令为注册时的用户名
及密码。
[0074] 2)数据拆分导出:IFC模型由众多构件类型组成,其中与建筑物相关的构件类型主要类型包括建筑柱、构造柱、墙(如建筑内隔墙、幕墙)、楼梯栏杆、坡道、门、窗等。为避免融
合过程中部分信息丢失,需将整体建筑模型拆分为诸多子建筑构件。调用BIMServer API,
通过BimServerClient接口遍历上述IFC中所有的类型,找出所需的建筑类型对应的组件,
并查询其中的信息。根据构件的几何特点不同,查询语句也不同,分为三种方式:
[0075] 1.常规组件,最简单构件类型:ifcWindow(窗)、ifcDoor(门)、ifcColumn(柱)、ifcBeam(梁)、IfcCovering(天花板)、IfcRailing(栏杆)、ifc FurnishingElement(陈设元
素)。
[0076] 2.具有孔洞的组件类型:例如ifcWall(墙)、ifcSlab(楼板)。
[0077] 3.包含聚合组件的对象:某些复杂对象由多个小组件组成,例如,ifcCurtainWall(幕墙),包含板和构件;ifcStair(楼梯)包含栏杆、楼梯梯段和楼板;ifcRamp(坡道)包含板
和坡道。
[0078] 根据查询结果,利用client.download函数从服务器上下载各子构件信息的两种格式的文件,分别为ifc、json,用于存储几何、语义信息。同时为下载的定义命名规则,即描
述同一构件的ifc、json文件,其文件名也相同。具体实现流程如图2。
[0079] 步骤2,从ifc至obj
[0080] ifc表达几何信息的文件结构较为复杂,为便于实现融合转换,选用简单结构的文件格式作为中间格式过渡。本步骤将逐一读取子构件ifc文件,转换为obj中间交换文件,传
递几何信息。
[0081] 将子构件的ifc文件集合存储于同一文件目录下。利用Java语言构建循环体,重复执行转换功能。转换功能实现依赖开源工具IfcConvert(http://ifcopenshell.org/
ifcconvert.html),通过命令行可直接调用该转换工具。
[0082] 步骤3,从obj至glTF
[0083] BIM采用局部坐标系,而实景三维模型采用全局坐标系。为实现空间关系的准确映射,本步骤首先对obj格式的BIM模型进行空间配准,再进一步实现obj至glTF格式转换。
[0084] 1)空间配准:
[0085] 3DTiles标准的发布者Cesium在tileset.json模块中提供了计算局部坐标框架映射至全局框架的函数,参数为局部坐标系的原点在原始坐标空间中的笛卡尔坐标。局部坐
标系的原点在三维椭球体的表面上,高程为零。X轴从所在地理位置指向正东方向,Y轴从所
在地理位置指向正北方向,Z轴从所在位置垂直椭球表面指向上方。如图3所示。
[0086] 因此在局部坐标系下,需对模型进行旋转变换,在三维环境中配准。其次将局部坐标系的原点平移至建筑物BIM上的显著特征点,便于为上述的映射函数提供准确的原点参
数值。空间配准具体过程如下:
[0087] 1.计算旋转参数
[0088] 将BIM/obj数据视为源数据,实景三维模型/obj数据视为目标数据,两种模型同时导入三维软件软件Geomagic Studio中。配准过程首先是选取同名点作为起算数据。同名点
选取主要遵循以下三个原则:①位于建筑表面的明显特征点。由于实景模型中的建筑物通
常只有外轮廓表面信息,因此同名点不适合采用建筑内部点,同时为提高采点精确度,应选
用建筑表面明显标志点,例如墙角、窗户角、建筑表面结构连接处等等。②均匀分布。根据建
筑群的规模合理分布同名点位置,避免点出现过度集中、线形排列的情况,影响计算结果。
③至少3对同名点。采用SVD算法计算旋转参数需要至少三组同名点作为起算数据,为提高
计算精度,可适当增加同名点对数。
[0089] BIM/obj数据坐标表示为X′i=(x′i,y′i,z′i),实景三维模型/obj坐标数据表示为Xi=(xi,yi,zi)。在Matlab中导入坐标数据,求解旋转参数过程如下:
[0090] ①计算两组坐标的重心
[0091] ②进行重心化处理,得到{ΔXi=Xi‑P}{ΔX′i=X′i‑Q}
[0092] ③计算3×3数据矩阵
[0093] ④采用SVD函数分解S矩阵Sm×n=Um×mΛm×nVTn×n
[0094] ⑤计算旋转矩阵R=VUT
[0095] ⑥计算在X、Y、Z三轴方向的旋转角度α、β、γ;
[0096] 式中各参数含义如下:
[0097] X′i=(x′i,y′i,z′i):BIM模型中第i个同名点的三维坐标;
[0098] Xi=(xi,yi,zi):实景三维模型中第i个同名点的三维坐标;
[0099] n:同名点总个数;
[0100] P:BIM模型中所有同名点的重心坐标;
[0101] Q:实景三维模型中所有同名点的重心坐标;
[0102] △Xi:实景三维模型同名点坐标与重心坐标之差,即重心化后坐标;
[0103] △Xi’:BIM模型同名点坐标与重心坐标之差,即重心化后坐标;
[0104] △XiT:重心化转置矩阵;
[0105] S:奇异值数据矩阵;
[0106] U:左奇异向量矩阵;
[0107] ∧:奇异值对角矩阵;
[0108] V:右奇异向量矩阵;
[0109] α:BIM模型与实景三维模型在x轴方向上的夹角;
[0110] β:BIM模型与实景三维模型在y轴方向上的夹角;
[0111] γ:BIM模型与实景三维模型在z轴方向上的夹角。
[0112] 2.确定平移参数:选取建筑物BIM上的某一显著标志点作为局部坐标系的原点,选取时遵循建筑物BIM表面拐点、特征点原则,例如墙根、屋顶转角等。若该点在局部坐标系下
的坐标为(x0,y0,z0),则平移量为(‑x0,‑y0,‑z0)。
[0113] 3.实现空间变换:根据计算得到的参数旋转平移obj模型,由于在此阶段,模型仍是由零碎的子构件拼接而成,各构件均为独立的obj文件。为实现批量旋转变换,在
Geomagic Studio中建立以python为脚本语言的宏命令,记录变换操作指令,运行该命令后
批量完成变换工作。旋转后的模型仍保存为obj格式。
[0114] 2)从obj至glTF:glTF可以减少3D格式中与渲染无关的冗余数据,并且在更加适合OpenGL簇加载的一种3D文件格式。
[0115] glTF格式与obj格式的数据结构框架不同,见图4所示转换时,需实现obj文件中顶点坐标、外法向量、纹理坐标、纹理图片等信息的转换。glTF的bin文件存储几何体的基本数
据,因此需将obj中的建筑物顶点坐标、外法向量、纹理坐标保存于此。建筑物的纹理图片以
png、jpg等格式存储于glTF中。除了坐标信息几何体的转换也比较重要,在obj中通过顶点
索引绘制三角面片构成几何体。在glTF中用格网(mesh)代表单一的复杂几何形状,格网又
由图元(primitive)数组组成,各图元中包含了引用于bin文件的相应顶点属性及纹理。因
此设置顶点遍历模式,使格网可以被正确的转换。
[0116] 步骤4,从glTF+json至b3dm
[0117] 融合的最后阶段是将包含几何、语义信息的glTF、json文件组转化为一个整体三维数据文件,即b3dm,其结构如图5所示。b3dm文件由文件头、文件体构成,文件头中记录了
文件类型、版本、大小等信息。文件体中包括要素表(featureTable)、批量表(Batch 
Table)、二进制glTF,它们分别记录了文件中的要素个数、要素属性、几何数据。因此本步骤
的目的是将前面形成的子组件glTF和JSON文件放入相应区块,并仍保持原始的关联性。
[0118] 从glTF至b3dm的转换过程见图6所示,首先根据各子组件的glTF几何文件检索到同名的json文件,如图4中的wall0.gltf检索到对应的wall0.json,二者通过共同的ID实现
连接。接着将子组件glTF(如wall0.gltf)二进制化,并写入b3dm文件体中的Binary glTF数
据块。将子组件对应的语义信息文件(如wall0.json),写入b3dm文件体中Batch Table数据
块。并将子组件之间的ID链接转换为batchid属性实现彼此的相互映射。Binary glTF中每
个顶点都包含batchid属性,id值相同的顶点属于同一子组件。
[0119] 步骤5,从b3dm至3DTiles
[0120] 3DTiles由地理数据b3dm文件以及说明性数据tileset.json文件tileset.json中包含瓦片元数据,用来组织三维瓦片的空间结构,其数据结构如图6所示。空间包围盒
(bounding volume)是一个数组,表示当前瓦片数据的空间范围。几何误差(geometric 
error)用来在LOD划分中决定当前视角下所应加载的层级。精细化(refine)表示瓦片数据
加载的精细化方式,支持ADD、REPLACE两种。内容(content)通过链接(url)指定需要加载的
b3dm数据。瓦片元数据中还包括一个transform属性,存储一个包含16个元素的数组,用于
表示以列为主序的4×4的坐标变换矩阵,从而实现瓦片空间位置的变换。假设局部坐标系
原点在全局坐标系中坐标为(longitude,latitude,height),则由Cesium.Transforms.ea
stNorthUpToFixedFrame函数计算坐标系变换的参数并赋值给transform属性,实现局部坐
标系到世界坐标系的空间映射。
[0121] 实施例三。
[0122] 以南京市建筑设计研究院楼群为案例,验证文中探索的模型融合方法。使用Dji Matrice600多旋翼无人机,搭载五镜头倾斜相机,设备参数如表1所示。对建筑及其四周约
2.6公顷的范围实施外业测绘,获取航片1300余张。应用实景三维建模软件Smart3DCapture
生产实验区模型格式为3DTlies。
[0123] 表1无人机平台与搭载传感器参数
[0124]
[0125] 同时以Revit软件,建立了南京市建筑设计研究院楼群的BIM模型,为三栋互相连接的七层建筑,如图7所示。BIM模型中共计包含11类、10533个构件。为实现二者的融合,首
先将整个建筑物BIM模型导出为IFC格式,并重构为11类组件见表2所示。
[0126] 表2案例建筑物BIM模型拆分子组件明细表
[0127]
[0128] 案例BIM模型经过模型重构、几何转化、空间配准、语义映射后生成3DTiles数据。在Cesium平台中加载该模型数据。
[0129] 经试验证明,建筑物三维实景模型和BIM模型在三维地理环境中相融合,三维实景模型真实还原了实验区域的建筑物外貌及周边环境,BIM模型细致地展现出建筑物内部的
结构构造,融合成果实现了室内外一体化建模,为智慧城市建筑物细部监控、管理提供了良
好的基础。为进一步验证BIM融合前后信息的一致性,编写要素点击与查看事件,在该测试
平台中,对融合模型放大到一定级别,进入实景三维模型中,可查看BIM构件信息。如图7所
示,BIM每个构件独立且与原始模型一致,点击一个构件,可查看属性Name、Type等,表明几
何、属性信息均保留完整,达到了实验预期效果。
[0130] 以上显示和描述了本发明的基本原理、主要特征和优点。本领域的普通技术人员应该了解,上述实施例不以任何形式限制本发明的保护范围,凡采用等同替换等方式所获
得的技术方案,均落于本发明的保护范围内。
[0131] 本发明未涉及部分均与现有技术相同或可采用现有技术加以实现。