# 加载的模型没有贴地
问题:加载的矢量数据或者三维模型,浏览时会在地面漂浮。
解决方法:因为模型或数据的高度在地面以下造成的;
- 开启深度检测:viewer.scene.global.depthTestAgainstTerrain = true
- 如果看不到模型,说明高度确实有问题,调整模型高度
- 关闭深度检测:viewer.scene.global.depthTestAgainstTerrain = false
// 调整模型高度
tiles.readyPromise.then(tilests => {
if (tilests) {
const cartographic = Cesium.Cartographic.fromCartesian(
tilests.boundingSphere.center
)
const surface = Cesium.Cartesian3.fromRadians(
cartographic.longitude,
cartographic.latitude,
cartographic.height
)
const offset = Cesium.Cartesian3.fromRadians(
cartographic.longitude,
cartographic.latitude,
-20
)
var translation = Cesium.Cartesian3.subtract(
offset,
surface,
new Cesium.Cartesian3()
)
tilests.modelMatrix = Cesium.Matrix4.fromTranslation(translation)
}
})
# 加载的矢量数据或倾斜模型数据位置不正确
问题:使用国内公开访问的底图服务时,如高德、百度等,都是国测局对坐标进行偏移,如果数据没有偏移,叠加后,肯定会出现模型与底图发生了偏移。 解决方法:使用与数据相同坐标系的底图,或者对矢量数据做加偏处理。
# 加载的 glTF 模型不出现
解决思路:
- 查看加载的 url 是否可以访问。
- 模型比例大小问题,修改模型缩放 scale 参数或缩放下视角进行浏览。
- 模型位置在地面下,可以尝试关闭深度检测:viewer.scene.global.depthTestAgainstTerrain = false
# 立体面的拉伸高度设置问题
问题:polygon entity 对象的高度与拉伸高度无论怎么设置好像都不是想要的值。 问题原因: polygon 的与高度相关的两个参数的具体含义:
- height 是指 polygon 距离地面的高度
- extrudeHeight 是指 polygon 拉伸后的面距离地面的拉伸高度
只有当 extrudeHeight 大于 height 时才会呈现挤出高度的效果,且 polygon 的厚度就是两者之间的差值。
# Cesium 加载的数据
如下表格:
如果是卫星影像图加载,可以使用 arcgis、geoserver 等工具进行切片处理,然后客户端进行加载切片后的数据。在线地图的加载内网部署也是一样的,现在的互联网地图基本都是 xyz 的金字塔瓦片数据。可以下载导出 xyz 标注金字塔格式瓦片进行加载。
地形数据处理: 根据 tif 格式的 DEM(数字高程模型)地形文件,生成 Cesium 可用的离线 terrain 格式地形瓦片数据,目前可以通过3个工具进行处理:
- CTB 地形处理工具
- GDAL 地形处理工具
- CesiumLab 处理工具
# glTF 小模型转换处理
需要将 3dmax、Maya 等建模软件建好的三维模型导出为 dae 或 obj 数据,再通过 dae 和 obj 格式转换为 gltf,转换方式有以下方式:
- 在线转换:https://cesiumjs.org/convertModel/
- dae 转 glTF:https://github.com/KhronosGroup/COLLADA2GLTF
- obj 转 glTF:https://github.com/CesiumGS/obj2gltf 或者https://github.com/PrincessGod/objTo3d-tiles,https://github.com/fanvanzh/3DTiles
- glTF 内部优化处理:https://github.com/CesiumGS/gltf-pipeline
# 3DTiles 三维模型数据处理
Cesium 对数据处理工具没特别要求,生产的数据格式满足 Cesium 要求的 3DTiles 格式即可。3DTiles 格式规范: https://github.com/AnalyticalGraphicsInc/3d-tiles
- 城市建筑白膜:在拥有如 shp、kml 等格式的建筑物二维面边界坐标数据,和高度或楼层数属性信息,再通过工具转换为三维立体的白膜建筑物 3DTiles 模型。
- 倾斜摄影:一般是无人机拍摄,拍摄的数据通过建模工具 ContextCapture Cente 软件可以直接导出 cesium 3DTiles 格式。也可以通过 osgb 通用格式转 3DTiles 格式后在平台中使用。
- 点云数据:一般是激光扫描后生产的数据。
- 人工建模:数据来源于 3dmax、Maya 等建模软件建模,建好的三维模型导出为 dae 和 obj 数据后,再转换为 3DTiles 数据格式。
- BIM 模型:数据来源于专业的 BIM 软件,常见的有 rvt 和 dgn 格式,目前市面没有免费软件,都是收费为主。
目前处理数据的工具:
- github 开源的小工具
- Cesium 官方推出的 Cesium Ion 在线平台
- cesiumLab 等
阅读量: