HeightReference 是 Cesium 中用来表示“一个物体的位置高度是相对于什么参考面”而设定的常量集合。它控制的是物体的高度是绝对的,还是相对于地形或 3D Tiles(建筑模型等)的。它的本质就是控制 Z 轴的参考标准。如果在 Cesium 场景里控制一个实体或模型高度,这个属性会跟怎么摆放它、贴不贴地、有无浮空效果直接相关。
每个值的含义:
🔹 HeightReference.NONE
含义:高度是绝对值,不受地形或 3D Tiles 影响。
举例:比如让模型悬在 1000 米高空,不管下面是山还是楼。
✅ 常用于卫星、飞机等位置。
🔹 CLAMP_TO_GROUND
含义:物体贴着地表或 3D Tiles 放,不考虑高度值。
举例:像画线、标点那种贴地效果。
🚫 无法设置高度(height 值会被忽略)。
🔹 RELATIVE_TO_GROUND
含义:相对于地形或 3D Tiles 的表面设置高度。
举例:如果高度设为 50,意思是离当前点的地面 50 米,不管那是山坡还是建筑。
✅ 常用于无人机、风车、灯杆这类“贴地飞起”的东西。
🔹 CLAMP_TO_TERRAIN
含义:只贴地形(Terrain),不理会 3D Tiles(建筑、模型等)。
举例:比如一个山坡上有楼,那这个物体会贴在山坡上,而不是楼顶。
✅ 用在建筑模型不重要,只关注自然地形的场景。
🔹 RELATIVE_TO_TERRAIN
含义:只以地形为参考,设置相对高度。
举例:同样是“高于地面 10 米”,这里只参考地形,不考虑上面有没有 3D 建筑。
✅ 比较适合自然环境中的飞行物。
🔹 CLAMP_TO_3D_TILE
含义:贴在 3D Tiles 表面(比如楼房、道路模型等)。
✅ 常用于贴墙、贴模型、AR 效果。
🔹 RELATIVE_TO_3D_TILE
含义:相对于 3D Tiles 的表面设置高度。
✅ 比如在某栋楼顶上加个天线,可以设为“楼顶上 5 米”。
简化记忆:
名字 | 基准参考物 | 高度是否生效 | 用法 |
---|---|---|---|
NONE | 无(绝对) | ✅ | 精准控制高度,不跟地形或模型对齐 |
CLAMP_TO_GROUND | 地形+3D Tiles | ❌ | 贴地、贴模型表面 |
RELATIVE_TO_GROUND | 地形+3D Tiles | ✅ | 离表面一定高度 |
CLAMP_TO_TERRAIN | 地形 | ❌ | 只贴地,不贴建筑 |
RELATIVE_TO_TERRAIN | 地形 | ✅ | 离地形表面一定高度 |
CLAMP_TO_3D_TILE | 3D Tiles | ❌ | 贴建筑模型表面 |
RELATIVE_TO_3D_TILE | 3D Tiles | ✅ | 离模型表面一定高度 |