首页 / Cesium / 使用示例
把实体贴到起伏地形
高程由余弦函数算出,32 × 32 的高度图拼成一座山。 椭圆面、翻山的线、三个标记点都设了贴地,位置随地形起伏。
源码与运行效果
高度图怎么喂给地球
CustomHeightmapTerrainProvider 的 callback
按瓦片的行列号与层级返回一个 Float32Array,
长度是 width × height。示例把每个像素折算成经纬度,
再调用 heightAt 求高程,全部计算都在前端完成。
32 × 32 的分辨率比较粗,山头会出现明显的块状台阶。
把 SIZE 提高到 64 或 128 会更平滑,代价是每块瓦片计算量变大。
贴地的三种图元
点和标签用 heightReference: CLAMP_TO_GROUND,
线和面用 clampToGround: true。两种写法都会在渲染时
采样地形高度,因此不需要手动给每个顶点写高程。
面板上的两个高程来自 sampleTerrainMostDetailed,
返回的是同一份地形数据算出的结果,可以和画面里的贴地效果对照。
可调参数
| 位置 | 改什么 | 效果 |
|---|---|---|
SIZE | 32 改成 64 | 山体更平滑,计算更慢 |
heightAt 的系数 | 1800 改成 600 | 山体变矮 |
| 椭圆的半径 | 5200 / 3800 各减半 | 覆盖范围缩小 |
scene.globe.enableLighting | 改成 false | 坡面明暗消失 |
贴地依赖地形就绪。地形瓦片还没加载完时,贴地图元会先落在一个
估算高度上,随后跳到位。示例先设置 terrainProvider 再添加实体,
并把相机放在较高的位置,让首批瓦片尽快加载完毕。