一、 导入cesium for unity插件
1、添加配置
在editor->project setting->pack manager添加配置
name:Cesium
URL: https://unity.pkg.cesium.com
scope: com.cesium.unity
点击apply
2、加载cesium for unity插件
打开window->package manager ,找到cesium for unity 插件,点击安装
插件加载完成之后,就可以加载地图了。
二、添加cesium插件的相机和地形
点击cesium 选择连接cesium,此时会跳转到网页,按照流程登录账号,当出现如下页面,表示登录成功。
回到unity中,新建一个场景,删掉相机,打开cesium,选择相机和地形右边的+,添加到场景中。
如果需要加载cesium自带的bing地形,可以选择cesium world terrain 加载到场景中,在后面出现的弹窗中选择生成默认token即可。
效果如下:
一、加载本地地形
加载地形用到的是cesium 3D Tileset 组件(删掉其余组件)。
首先将cesium 3D Tileset组件的 tileset Source 属性改为Url,然后填入处理好的地形数据,即layer.json的地址,(注意:地址中的反斜杠\,全部改成正斜杠/)。
直接访问本地数据和通过网络服务访问均可,加载成功会出现一个球体的白模,因为此时只加载了地形数据,没有加载对应的影像。
二、加载本地影像
由于影像是覆盖在地形上的,因此可以在同一个对象上加载,在刚刚加载地形的物体上添加Cesium tile Map Service Raster Overlay(加载TMS瓦片),设置加载地址,本地和网络服务都可以,以及加载的层级(tilemapresource.xml里面能看到具体的层级),设置完成之后,unity不报错,那应该就是加载成功了。
此时如果你像我一样,配置完成之后,没有报错信息,但还是呈现地球的白模,不要慌张,仅仅是因为此时相机所在的和影像的位置太远了,影像太小,看不见,这时我们只需要调整相机的位置即可。
我们先将DynamicCamera对象的位置置零,然后设置它的父物体CesiumGeoreference的经纬度,具体的经纬度可以在加载的tilemapresource.xml文件里面查看。
设置完成之后就能看到影像成功加载了。
说明:
地形和影像的处理,这里就不展开说明了,cesiumlab、QGIS之类的软件都可以处理,网上也有很多教程,在这里放一个tms影像的资源,以供测试使用。
链接: 影像瓦片
经博主测试,cesium for unity可以加载天地图wmts服务的数据,但不能直接加载,需要修改cesium for unity的源码,有兴趣的可以参考链接:
Cesium for Unreal 加载天地图
虽然视频是添加UE的天地图,但方法和流程都是一样的,非常感谢这位UP主,为我提供了处理的思路和方向。