海量城市灰度模型构建与渲染

2019-04-14 08:37发布

      随着智慧城市的不断发展,城市三维模型作为一种重要的数据,对于城市管理和模拟发挥着越来越重要的作用。三维城市精细城市模型的获取大体有两种方式:一种是通过现场拍摄建筑照片手工建模完成,另一种是通过无人机倾斜摄影测量获取。这两种方式构建的代价都非常昂贵,而且数据量庞大。对于一些对城市模型精度要求没有那么高的项目,精细三维模型就显得有点大材小用了。因此本文提出一种利用城市已有的矢量数据构建海量灰度模型并渲染的方法。
     如上图,各个城市都已有测绘得到的精细城市房屋矢量数据,通过获取矢量几何和属性信息可以快速构建灰度模型。构建灰度模型的方法也有两种:内存中实时构建和预处理成灰度模型。(1)内存实时构建灰度模型     根据上篇博文的方法,提前将矢量数据切割并构建四叉树索引,然后在三维虚拟地球中加载矢量瓦片数据,根据矢量信息获取房屋底面几何点以及房屋高度,实时拉伸出房屋模型。     本文通过开源B/S平台Cesium验证,由于目前Cesium还不支持矢量3DTiles, 因此自己写了一套矢量四叉树调度算法,类似地形瓦片的方法,运用四叉树索引调度。(2)预处理成灰度模型      根据矢量几何信息和高度信息,在三维UTM坐标系下拉伸灰度模型并导出obj,最终通过转换工具批量转换为glb格式。最后构建模型3DTiles结构加载渲染。    如下图,为某城市海量灰度模型调度渲染,其中测试房屋个数为5万多栋,在Cesium中运行稳定,帧率在40帧以上。