首页 / Cesium / 使用示例
点云的层级抽稀
泼溅数据的层级,本质是不同密度的点集。示例用一层点按视距抽稀,把 LOD 的切换过程摆在明面上。
源码与运行效果
这个示例在做什么
五千个半透明彩色点聚成一团云雾状物体。滚轮拉远拉近时,左上角会显示当前视距与层级, 远处的点会被抽稀、点尺寸变大,近处则全部显示、点变细,这就是最朴素的 LOD 策略。
高斯泼溅(Gaussian Splatting)的瓦片也是这层逻辑:不同层级存不同密度的点集,
相机远了就切到低层级瓦片。示例没有真实的分层数据,于是按「每隔几个点显示一个」
的方式模拟抽稀,step 就是抽稀倍数。
关键接口
| 接口 | 作用 |
|---|---|
tileset.maximumScreenSpaceError | 真实数据的 LOD 阈值,值越大越省性能 |
PointPrimitive.show | 逐点显隐,用来模拟抽稀 |
PointPrimitive.pixelSize | 点尺寸,远距离适当放大 |
Cartesian3.distance | 视距计算,作为层级切换依据 |
可以直接改的地方
| 位置 | 改什么 | 效果 |
|---|---|---|
step = Math.pow(2, 4 - level) | 换成 3 的幂 | 抽稀更细,层级更多 |
size = 4 + level * 4 | 改系数 | 远观点的大小 |
alpha: 0.35 | 改成 0.8 | 点更实,接近实心 |
5000 个点 | 改成 20000 | 点云更密,注意帧率 |
替代说明:官方示例加载 ion 上的分层高斯泼溅数据。这里用单层点云按视距抽稀,
复现「远景省资源、近景看清细节」的效果;换成真实数据时交给
maximumScreenSpaceError 控制即可。