基于Cesium实现倾斜摄影模型的3D Tiles格式模型包围盒数
据生成方法
技术领域
本发明涉及倾斜摄影技术领域,具体为基于Cesium实现倾斜摄影模型的3D Tiles格式模型包围盒数据生成方法。
背景技术
倾斜摄影技术已经成为三维数据采集的重要手段,但是倾斜摄影三维模型是一个整体的模型。因此,针对倾斜摄影三维模型进行单体化研究,深化倾斜摄影三维模型的应用领域、实现倾斜摄影三维模型应用价值最大化,根据实现单体化是否对模型格网进行物理分割,将单体化方法分为两大类:物理单体化方法和逻辑单体化方法。物理单体化方法主要有人工重建和切割单体化,逻辑单体化方法主要有ID单体化和动态单体化。
人工重建是在倾斜摄影建模基础上,用人工干预的方式将地面、城市道路、建筑等形成一个个可被选中的分离的实体。人工重建单体化作业方法劳动量大,效率低。
切割单体化是对倾斜摄影三维模型格网进行物理切割,将地理对象切割分离出来,成为一个独立的实体。该方法可以使对象具有均匀和平滑的边缘,而不会破坏原始模型的结构。切割单体化同样存在劳动量大,效率低等问题。
单体化是在模型顶点存储空间中存入一个ID值,同一地理对象模型中各顶点保存的ID值相同,通过这个值可以唯一确定一个地物实体模型,也可以通过这个值绑定地物实体属性。该方法单体化效率高,但无法单体化垂直方向重叠的地物。
动态单体化使用地物的轮廓数据,通过与倾斜摄影模型叠加实现地物实体模型的单体化。动态单体化具有无需预处理模型,模型单体化效果好特点。
Cesium实现的单体化分类方法本质上是一种动态单体化,在渲染前指定分类模型包围盒,将包围盒数据叠加到模型上,渲染时位于分类模型包围盒内部的模型的三角面片叠加指定的颜色,从而实现模型单体化高亮显示。
分类模型包围盒也是组织成3DTiles瓦片文件。Cesium为了实现单体化连接属性数据,在3DTiles瓦片中的glft数据中增加了新的内容:在primitive中的attribute中增加了_BATCHID属性,_BATCHID存储的是一组无符号的整数值,这个数组与顶点数组一一对应,也就是每个顶点都被标记了一个ID值,与此同时,在b3dm文件中的batchTable批量表中存储与要素有关的属性信息。在渲染过程中,点击鼠标和场景中的模型求交,拾取模型后读取模型顶点属性中的_BATCHID值,通过这个ID去batchTable批量表中查询对应索引位置的属性信息,3DTiles索引对应关系。
基于Cesium实现倾斜摄影模型的单体化需要3DTiles分类瓦片数据和3DTiles模型数据,实现倾斜摄影模型单体化的关键就是生成3DTiles格式的模型包围盒数据。
基于此,本发明设计了基于Cesium实现倾斜摄影模型的3D Tiles格式模型包围盒数据生成方法,以解决上述提到的问题。
发明内容
本发明的目的在于提供基于Cesium实现倾斜摄影模型的3D Tiles格式模型包围盒数据生成方法,以解决上述提到的问题。
为实现上述目的,本发明提供如下技术方案:基于Cesium实现倾斜摄影模型的3DTiles格式模型包围盒数据生成方法,包括以下步骤:
S1:使用倾斜摄影软件生成的正射影像或遥感影像作为底图,描绘出地物边界生成地物轮廓矢量数据;
S2:将所述地物轮廓矢量数据的坐标系投影到投影坐标系下;
S3:录入所述地物轮廓矢量数据的属性数据;
S4:按照空间范围分块构建四叉树,根据四叉树得到数据结构组织的瓦片集数据;
S5:几何要素网格化,按分块依次读取各块内的矢量几何要素,将矢量几何多边形和拉升后的多边形三角格网化生成包围盒模型的上底面和下底面;
S6:生成多面体包围盒模型,依次将矢量几何多边形相邻的点和拉升后的四个点构成两个三角面片,其作为包围盒模型的侧面,实现以矢量几何为底,根据高度拉升生成包围盒多面体模型;
S7:多面体包围盒模型合并,将整个瓦片内的包围盒多面体模型合并成一份mesh格网数据;
S8:将每个瓦片mesh网格模型的顶点属性和顶点索引组织构建gltf模型对象,生成的gltf模型转换为二进制的glb格式,按照b3dm数据结构写入glb信息和属性信息;
S9:对应所述瓦片集数据描述TilesetJSON内容写入数据,生成tileset.json文件。
优选的,所述地物轮廓矢量数据的坐标系为地理坐标系,地理坐标系下矢量数据存储的是经纬度坐标,构建多面体包围盒模型时使用的坐标系是以米单位。
优选的,所述属性数据中包括但不仅限于:地物的高度,建筑物的高度,所述属性数据可根据楼层数估计,也可从倾斜摄影三维模型中量测。
优选的,所述瓦片集数据包括但不仅限于:瓦片的包围盒、几何误差、瓦片url、瓦片数据包围盒和瓦片四叉树索引。
优选的,所述几何要素用于分类的b3dm文件中有且仅有一个node节点,即只有一份mesh格网数据。
优选的,每一个所述包围盒多面体模型通过顶点属性中的_BATCHID和要素属性信息关联。
与现有技术相比,本发明的有益效果是:本发明通过采用四叉数分块组织,利用地物轮廓数据生成3D Tiles包围盒数据,并与倾斜摄影模型进行叠加上,在Cesium平台上实现了倾斜摄影模型数据的动态单体化,充分发挥倾斜摄影数据与属性数据联动应用。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明方法流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
实施例1
请参阅图1,本发明提供一种技术方案:基于Cesium实现倾斜摄影模型的3D Tiles格式模型包围盒数据生成方法,包括以下步骤:
S1:使用倾斜摄影软件生成的正射影像或高精度时效性高的遥感影像作为底图,描绘出地物边界生成矢量数据;
S2:地物轮廓矢量数据的坐标系为地理坐标系,地理坐标系下矢量数据存储的是经纬度坐标,而构建多面体包围盒模型时使用的坐标系是以米单位,因此需要将数据投影到投影坐标系下。
S3:录入矢量数据的属性数据,属性数据中必须包含地物的高度,对于建筑物的高度,可以根据其楼层数估计,也可以从倾斜摄影三维模型中量测。
S4:采用四叉树组织分块数据,四叉树数据结构组织的瓦片数据。按照空间范围建立四叉树,根据四叉树可以得到各瓦片的包围盒、计算几何误差和url。
S5:几何要素网格化,按分块依次读取各块内的矢量几何要素,将矢量几何多边形和拉升后的多边形三角格网化生成包围盒模型的上底面和下底面;
S6:生成多面体包围盒模型,依次将矢量几何多边形相邻的点和拉升后的四个点构成两个三角面片,其作为包围盒模型的侧面,实现以矢量几何为底,根据高度拉升生成包围盒多面体模型。
S7:多面体包围盒模型合并,几何要素用于分类的b3dm文件中有且仅有一个node节点,即只有一份mesh格网数据,因此需要将整个瓦片内的包围盒多面体模型合并成一份mesh格网数据。
S8:将每个瓦片mesh网格模型的顶点属性和顶点索引组织构建gltf模型对象,同时,每一个包围盒多面体模型通过顶点属性中的_BATCHID和要素属性信息关联。生成的gltf模型转换为二进制的glb格式,按照b3dm数据结构写入glb信息和属性信息。
S9:瓦片的包围盒、几何误差、瓦片url、瓦片数据包围盒和瓦片四叉树索引对应瓦片集数据描述Tileset JSON内容写入数据,生成tileset.json文件。
本发明主要基于Cesium对倾斜摄影模型数据的单体化问题作为研究重点,为解决倾斜摄影模型数据在三维地理信息系统中限于浏览层面的尴尬局面,采用Cesium开源渲染引擎作为可视平台,利用地物轮廓数据生成D Tiles包围盒数据叠加至倾斜摄影模型上,在Cesium平台上实现了倾斜摄影模型数据的单体化。
在本说明书的描述中,参考术语“一个实施例”、“示例”、“具体示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
以上公开的本发明优选实施例只是用于帮助阐述本发明。优选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本发明。本发明仅受权利要求书及其全部范围和等效物的限制。