1.7 KiB
1.7 KiB
Earth WebGL Instancing Satellites Plan
Source note: this plan absorbs useful ideas from a sisyphus-created draft formerly stored at
.sisyphus/plans/webgl-instancing-satellites.md.
Goal
把 Earth 卫星渲染从当前方案继续推进到更适合高数量卫星的 instancing 方向,目标是:
- 支持更多卫星
- 降低渲染压力
- 仍然保留当前数据层和交互层
Why It Matters
当前卫星系统已经具备:
- 数据加载
- 轨迹
- 选择/锁定
- 图例
- 相关区域联动
但当卫星数量持续增加时,渲染层会越来越接近瓶颈。
Recommended Direction
优先调研并原型验证:
InstancedBufferGeometry + custom shader
而不是一开始就推倒重写成 raw WebGL。
原因:
- 仍能保留 Three.js 主架构
- 更容易渐进迁移
- 比继续堆普通点渲染更有上限
What Should Stay
尽量保留这些层:
- 卫星数据获取
- 位置计算
- 锁定/悬停逻辑
- legend / info-card / 相关联动
主要替换的是:
- 卫星点渲染实现
- 颜色/大小等实例属性更新方式
Phases
Phase 1: Prototype
- 用 instancing 做最小原型
- 先只渲染卫星点
- 不碰轨迹系统
Phase 2: Integrate
- 接入当前
satellites.js数据层 - 保留当前选择和高亮语义
Phase 3: Tune
- 调整可视大小
- 调整选中高亮方式
- 评估是否需要分层 LOD
Risks
- 透明度排序更复杂
- Shader 调试成本更高
- 选中态和 hover 态不能简单复用旧材质逻辑
Acceptance
- 在更高卫星数量下保持可接受帧率
- 不破坏现有锁定/高亮语义
- 图例、信息卡、相关卫星联动仍然成立