Improve Cesium cruise smoothness

This commit is contained in:
2026-08-03 15:17:51 +08:00
parent a824bee69b
commit 0d2dc2228c
10 changed files with 224 additions and 13 deletions

View File

@@ -162,6 +162,21 @@ let baseStatus = "";
相机相关的读数必须跟着渲染循环刷新并**做节流**。用 `setInterval` 会在相机快速移动时
读到过期值,不节流会拖慢帧率。
### 车辆巡航热路径要少分配
车辆巡航是预览层里唯一持续动画的功能。`scripts/lib/cesium-preview.js`
`routeOrientation()``createChaseFollow()` 每帧都会运行,里面的 `JulianDate`
`HeadingPitchRoll``Quaternion``Matrix4` 等临时对象必须在闭包外复用,不要在
`CallbackProperty``viewer.clock.onTick` 回调里 `new`
预览页面加载的是 30MB+ GLB动画时 GPU 已经很忙;巡航辅助线也要避免额外透明合成。
路线 polyline 使用不透明 `Color``arcType: Cesium.ArcType.NONE`,不要为了视觉效果
随手改回半透明 geodesic 线。
不要默认降低 `viewer.resolutionScale` 或关闭 antialias/MSAA 来换取巡航流畅度。
这会让用户误判材质和模型质量。若确实需要性能模式,应做成显式开关,而不是默认牺牲
预览清晰度。
### 单资产 vs 多资产的开关
```js
@@ -207,6 +222,9 @@ python3 -m http.server 8765
| 用定时器代替 `waitForStableFrames` | 遮罩在材质编译完成前就收起,画面是花的 |
| 相机读数用 `setInterval` | 快速移动时读到过期值 |
| 诊断刷新不节流 | 拖慢帧率 |
| 在车辆每帧回调里创建 `JulianDate` / HPR / 矩阵对象 | 巡航时触发 GC 抖动 |
| 默认打开半透明路线辅助线 | 增加透明合成成本,主场景可见时车辆更不顺 |
| 默认降低 `resolutionScale` 或关抗锯齿 | 预览变糊,无法判断材质/模型质量 |
| 再开一个全局变量 | 已有 `window.osmPreview` |
| 用 `file://` 打开 | fetch 被拦,卡在加载中 |