基于Cesium的实景三维模型动态更新-以3Dtiles为例

Posted lwx2233

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于Cesium的实景三维模型动态更新-以3Dtiles为例相关的知识,希望对你有一定的参考价值。

一.简介

Cesium众所周知,是一个前端的三维框架,本项目利用Cesium平台来实现实景三维模型的动态更新。

(不认识Cesium的同学戳这里:cesium中文网 | 学习cesiumjs 的好地方--伐罗密

实景三维模型,概括来讲就是倾斜摄影三维模型,是利用无人机五镜头航飞出来,经过smart3D/photoscan等软件处理生成的三维模型,本项目利用osgb格式的三维模型来进行动态更新。

osgb格式的倾斜摄影模型,文件格式为Data文件夹+metadata.xml,Data文件夹中是由许多瓦块文件夹,其中有不同层级osgb格式的文件,metadata.xml是元数据,其中包含了该倾斜摄影模型的空间参考等信息。

二.目的

国家三调与农村房地一体权籍调查的过程中,实景三维模型为作业人员提供了不少帮助,在城市更新与旧城改造等项目推动下,实景三维模型动态更新可以很好的在智慧城市等平台上展示成果。

在单位实习的时候,我和一个同事负责这个研究课题,现在辞职回来考研了,希望将这部分研究记录下来。

三.动态更新

要弄懂动态更新的含义,我们要先知道Cesium读取实景三维模型并展示的流程,下面是我的做法:

1.Cesium无法直接加载osbg格式的倾斜摄影模型,所以需要将osgb转成Cesium能够加载的3Dtiles格式文件

用Cesiumlab就可以转格式(Cesium实验室官网

2.利用tomcat将其发布,得到一个3Dtiles文件中的tileset.json的服务路径,形式大致如下(注意看你将3Dtiles发布的路径):

http://xx.xxx.xx.xxx:9095/data/3dtiles/qingxiemodel/xxx/tileset.json

Cesium加载3Dtiles通过下面这个方法就可以加载

var tileset = new Cesium.Cesium3DTileset(url: url) //url就是上文的路径
viewer.scene.primitives.add(tileset)

动态更新,其实就是在一个空间位置中,有不同时期的不同倾斜摄影模型,通过确定的更新范围,展现不同时间该区域的改变情况

多说无益,先看看效果:(左为旧,中为中间步骤,右为新)

更新范围的确定是通过业务驱动的,这个我们不需要去考虑,我们只需要知道更新范围就可以了。

四.结语

东西太多,我会分成好几篇来陈述,第一篇我先将一些概念已经技术基础摆出来,接下来的部分会是两种关于三维模型更新的方法,请看下章。

同时一些额外的技术实现(cesiumlab的使用,tomcat的使用,osgb格式与3Dtiles格式的转换)等,我会补充在番外篇,整个系列大概会是一周内完结,敬请期待。

 

以上是关于基于Cesium的实景三维模型动态更新-以3Dtiles为例的主要内容,如果未能解决你的问题,请参考以下文章

基于Cesium的实景三维模型动态更新-以3Dtiles为例

基于Cesium的实景三维模型动态更新-以3Dtiles为例

基于Cesium的实景三维模型动态更新-以3Dtiles为例

基于Cesium的实景三维模型动态更新-以3Dtiles为例

基于Cesium的实景三维模型动态更新-以3Dtiles为例

基于Cesium的实景三维模型动态更新-以3Dtiles为例