Cesium初学者求助:如何创建指定位置的3D Tile图层?
旧金山区域3D Tile图层创建详细指导
一、准备数据源
- 若没有现成的3D Tile数据,先获取旧金山附近的3D数据:
- 可从公开数据集提取,比如USGS的3D建筑数据集;也能用摄影测量软件(如ContextCapture)处理旧金山区域的航拍照片生成3D模型
- 确保数据坐标系为WGS84(EPSG:4326),或可转换为Cesium支持的坐标系(如EPSG:3857)
二、转换为3D Tiles格式
- 使用Cesium官方工具
3d-tiles-tools完成转换:- 整理你的3D模型(如GLB/GLTF、OBJ格式),保证模型分块合理
- 创建
tileset.json配置文件,指定几何数据路径、边界范围、LOD等级等参数 - 执行转换命令:
3d-tiles-tools convert --input ./san-francisco-model.glb --output ./sf-tileset
- 如果你用的是I3S格式数据(对应你参考的示例类型),可直接跳过转换步骤,后续直接加载
三、在Cesium中加载图层
加载3D Tiles瓦片集
- 初始化Cesium Viewer:
const viewer = new Cesium.Viewer('cesiumContainer'); - 加载本地或部署好的3D Tiles:
const sfTileset = viewer.scene.primitives.add(new Cesium.Cesium3DTileset({ url: './sf-tileset/tileset.json' // 替换为你的瓦片集路径 })); - 定位到旧金山区域:
viewer.camera.flyTo({ destination: Cesium.Cartesian3.fromDegrees(-122.4194, 37.7749, 500) });
加载I3S格式图层(对应参考示例)
直接修改示例代码中的数据源路径,替换为你的旧金山I3S数据地址:
const i3sLayer = await Cesium.I3SDataProvider.fromUrl('./sf-i3s-data/layer.json'); viewer.scene.primitives.add(i3sLayer);
四、调试与优化
- 打开Cesium Inspector(按F8)查看瓦片加载状态,排查加载失败问题
- 调整瓦片集的LOD参数,保证缩放时模型加载流畅
- 精简模型面数,移除不必要的细节,避免性能卡顿
内容的提问来源于stack exchange,提问作者Beginner
相关产品推荐
相关产品推荐

