一、什么是 quantized-mesh?
先给一个通俗定义:
quantized-mesh(量化网格)是一种轻量化的二进制地形格式,它不存储每个高程点的原始数值,而是通过“量化压缩”和“三角网格”的方式描述地形表面,既能大幅减小文件体积,又能保证渲染效率。
对比传统地形格式(如 GeoTIFF):
- GeoTIFF:存储规则格网的高程值,精度高但文件大(1km×1km 30m分辨率的 DEM 约 10MB);
- quantized-mesh:仅存储地形的三角网格顶点+量化高程,同等区域仅需几KB到几十KB,加载速度提升10倍以上。
二、quantized-mesh 的核心设计思路
1. 核心优化手段
(1)高程量化(Quantization)
- 原理:将地形瓦片范围内的高程值,从「原始浮点数(如 568.23m)」映射到「0~65535 的整数」(16位无符号整数),减少数据存储量。
- 举例:若某瓦片的高程范围是 100m ~ 1000m,那么 100m 对应 0,1000m 对应 65535,中间的 550m 会被量化为
(550-100)/(1000-100)*65535 ≈ 36408。 - 优势:16位整数仅占2字节,远小于浮点数的4字节,且渲染时可快速反算回真实高程。
(2)三角网格(Mesh)
- 原理:不再存储规则格网的所有点,而是用不规则三角网(TIN) 描述地形——地形平坦区域用少量三角形,地形起伏大的区域用更多三角形,兼顾精度和性能。
- 效果:同等视觉精度下,三角网格的顶点数量比规则格网少 50%~80%。
(3)层级金字塔(Level of Detail)
- 原理:生成不同层级的瓦片(如 0级全球、10级省级、18级城区),Cesium 会根据相机距离自动加载对应层级的瓦片:
- 远距离:加载低层级(少顶点)瓦片,渲染快;
- 近距离:加载高层级(多顶点)瓦片,细节全。
2. quantized-mesh 瓦片的结构
一个 .terrain 后缀的 quantized-mesh 瓦片包含:
- 顶点数据:量化后的高程+经纬度坐标;
- 三角网格索引:描述哪些顶点组成三角形;
- 边界信息:瓦片间的无缝拼接数据;
- 可选:法向量(用于地形光影)、水面掩码(用于水域渲染)。
三、如何生成/使用 quantized-mesh 地形?
1. 生成工具(回顾)
所有主流 Cesium 地形工具都默认输出该格式:
- Cesium Terrain Builder (CTB):
ctb-tile -f Mesh(Mesh 即 quantized-mesh); - MapTiler:选择「Cesium Terrain (quantized-mesh)」输出;
- pycesiumterrain:指定
format="quantized-mesh"。
2. Cesium 加载示例
// 加载本地 quantized-mesh 地形瓦片
const terrainProvider = new Cesium.CesiumTerrainProvider({
url: "./cesium-terrain", // 瓦片目录(含各级 quantized-mesh 文件)
requestVertexNormals: true, // 加载法向量(光影效果)
requestWaterMask: false // 无需水面掩码时关闭
});
const viewer = new Cesium.Viewer("cesiumContainer", {
terrainProvider: terrainProvider
});
3. 验证 quantized-mesh 瓦片
可通过 Cesium 官方工具验证瓦片有效性:
// 检查地形格式是否为 quantized-mesh
terrainProvider.readyPromise.then(() => {
console.log("地形格式:", terrainProvider.tilingScheme); // 输出 WGS84 即正确
console.log("是否支持 quantized-mesh:", terrainProvider.supportsQuantizedMesh); // 应返回 true
});
四、关键优势与适用场景
| 优势 | 适用场景 |
|---|---|
| 文件体积小,加载快 | 网页端 Cesium 地形加载(核心场景) |
| 渲染效率高 | 大规模地形(全国/全球)可视化 |
| 支持层级细节(LOD) | 交互式地形浏览(缩放/漫游) |
| 无缝拼接 | 跨瓦片的连续地形显示 |
总结
- 核心本质:quantized-mesh 是 Cesium 专用的轻量化二进制地形格式,通过「高程量化+三角网格」大幅压缩体积,提升加载/渲染效率;
- 生成方式:CTB/MapTiler/pycesiumterrain 等工具可一键生成,无需手动配置格式细节;
- 使用要点:Cesium 中通过
CesiumTerrainProvider加载,开启requestVertexNormals可获得更好的光影效果。
简单来说,只要你是在 Cesium 中做地形可视化,优先选择 quantized-mesh 格式,这是兼顾性能和精度的最优解。
书签篮