效果图先行
这里是借用的一群里网友的数据.
几个概念重要的
摄影测量的格式
常见的有:
- osgb
- dae
- gltf
- b3dm
- …其他格式
这里我主要介绍OSGB格式的倾斜摄影测量
OSGB是OSG三维引擎定义的数据格式.OSG为二进制格式,然后贴上纹理图片就可以转换为OSGB
几大主流三维引擎介绍
目前,图形处理上,比较出色的引擎有OGRE,OpenGVS,Vtree,OSG等
逻辑串行
几个大佬公司,比如OSG公司经过一系列操作,开发了一套格式,规定了,这种格式的文件(OSGB)可以记录或者是处理无人机飞行的倾斜摄影数据(一般无人机飞出来的数据,我个人猜想可能是一些我没见过的格式,比如.xxx).然后经过几个大佬公司开发的工具,经过一些列的算法验算和推理,变成了我们目前流行的格式,比如.OSGB;然后,我需要研究的就是,如何把OSGB格式的文件,加载到cesium上去.
1 数据准备
经过我一系列骚操作,搞来了一些原始数据,感谢提供数据的大佬
这里就是OSGB的原始数据了.不过要知道.无人机刚飞出来的数据肯定不是这样的.可能更原始,比如是txt文件.但具体是什么样的格式我也不知道.这里的OSGB应该是已经经过处理的数据.如果把无人机飞出来的数据是一级数据,那么我个人认为,OSGB可以认为是二级数据.
2 把OSGB数据显示出来
其实OSGB格式的数据是OSG公司定义的,他们肯定有一套处理工具,把这些数据往里面一丢,就可以把数据都渲染出来了.但是其他公司也有他们自己的倾斜摄影格式.但无奈,谁叫OSG公司牛逼呢.所以他成为了业界标杆.我们要开发一套工具来处理OSGB格式的数据,然后转变为我们自己的格式数据.毕竟数据这东西,都是行业机密嘛.
然后我经过一系列骚操作,把OSGB格式的文件转换了下,变成如下:
然后往我们自己公司开发的软件里一丢,就渲染出来了
渲染的还不错哈.但是这里不是重点.关键是要把它弄到cesium里面去渲染.
在cesium里面加载出倾斜摄影
由于cesium不支持加载osgb数据的倾斜摄影,它有自己的一套加载数据,3d tiles;所以我们需要转换一下
1 把osgb原始数据转换为3d tiles数据
上面呢,就是通过转换工具转换为的3d titles数据.工具有很多,每个公司都不一样.每个公司一般都会研发自己的转换工具.不难,可以用Java或者c#或者c++写一套.网上也有很多.比如比较有名的cesiumlab;但是我用了下,不好用,各种错误,我也搞不懂.然后我用我们公司自己的搞的.
2 写代码,在cesium里面加载出来
//加载倾斜摄影
var tileset = new Cesium.Cesium3DTileset({
//相对路径
url: './modle/dayanta/Tileset.json',
});
//添加到球体上
viewer.scene.primitives.add(tileset);
//定位过去
viewer.zoomTo(tileset);
3 看效果图
到这里就全部搞定了