Files
planet/docs/technical/zh/earth-render-layer-order.md
2026-04-29 17:27:44 +08:00

6.0 KiB
Raw Blame History

Earth 渲染图层顺序

本文记录当前 Earth 渲染器的图层顺序和每层意图。后续调整 renderOrder、半径偏移、深度策略或指针交互时,需要同步更新这里。

注意:图层控制面板顺序和注册 / 启动加载顺序是两套语义。

顺序类型 当前顺序 说明
控制面板顺序 海缆 → 轨迹 → 卫星 → 算力中心 → 船只 → BGP → 地形 → 高清材质 → 大气云图 → 国界 → 经纬线 displayOrder 控制,按操作关注度排列。
注册 / 启动加载顺序 经纬线 → 国界 → 高清材质 → 大气云图 → 海缆 → 算力中心 → 船只 → BGP → 卫星 由注册顺序和 startupPriority 控制,按地表到天空排列;船只和卫星默认关闭,只有可见时参与启动加载;轨迹和地形是依赖/可选显示层,不参与常规启动数据加载。

地表图层栈

顺序 图层 来源 渲染 / 半径策略 深度 / 交互策略 备注
-1000 天体背景 mesh celestial.js 背景球 不参与地表拾取 位于所有 Earth 内容之后。
-1 Earth 遮挡球 earth.js 地球内侧不可见球 写入深度 遮挡地球背面的对象。
0 Earth 基座球 earth.js CONFIG.earthRadius 地表拾取兜底目标 深色基座,所有可选地图层关闭时仍可见。
0.2 国界暗色 tint country-boundaries.js tintAltitudeOffset 禁用 raycast 高清材质关闭时使用。
0.86 海陆基座填充 country-boundaries.js landAltitudeOffset; 海洋 #010609,陆地 #080f1b 禁用 raycast 即使国界线关闭,基座地图仍保持可用。
0.96 高清 Earth 材质 earth.js textureOverlayAltitudeOffset 可见时作为地表拾取目标 高清材质始终压过海陆基座填充。
1 大气辉光和云图 earth.js 大气 / 云层球 不走普通对象选择路径 云图由“大气云图”图层开关控制。
1 海缆 cables.js CABLE_CONFIG.line.renderOrder 海缆拾取路径 保持现有海缆层级。
1.2 真实地形 earth.js, terrain.js TERRAIN_CONFIG.baseRadiusOffset 加地形位移 禁用 raycast 地形压过高清材质;高清材质关闭时临时隐藏,重新开启后恢复原状态。
2.05 经纬线 earth.js CONFIG.earthRadius + 0.14 禁用 raycast 低透明度显示在高清材质上。
2.2 国界线 country-boundaries.js lineAltitudeOffset = 0.115 depthTest: true,禁用 raycast 略高于高清材质 0.10,低于地形基准 0.16,减少悬浮感;地形 depthWrite: false,所以地形开启时仍可见。
2.29 国界 hover 光晕 country-boundaries.js hover 半径加 glow 偏移 depthTest: false,禁用 raycast 用 additive 光晕增强交界边和地形开启时的 hover 可见性。
2.3 国界 hover 实线 country-boundaries.js hoverAltitudeOffset = 0.14 depthTest: false,禁用 raycast 霓虹红橘 hover 线;中国和中国(台湾)共享高亮组。
3 卫星 footprint 填充 satellites.js GROUND_FOOTPRINT_RENDER_ORDER depth-testedGroup renderOrder 保持 0 Footprint 在国界线之上,但在算力中心和卫星之下。
3-5 BGP 标记和覆盖层 bgp.js 各 marker 自身 renderOrder BGP 拾取路径 保持现有 BGP 视觉层级。
4.3 AIS 船只轨迹线 vessels.js VESSEL_RENDER_ORDER - 0.1CONFIG.earthRadius + VESSEL_CONFIG.track.altitudeOffset 跟随船只显隐,不单独参与拾取 选中船只后显示最近轨迹,低于船只 marker。
4.4 AIS 船只 marker vessels.js VESSEL_RENDER_ORDERCONFIG.earthRadius + VESSEL_CONFIG.altitudeOffset 船只拾取路径;只取正面 marker 航行船只用三角 sprite停泊/低速用圆点;低于算力中心 4.5
4.5 算力中心 compute-centers.js COMPUTE_CENTER_RENDER_ORDER 算力中心拾取路径 地表设施,保持在卫星下方。
5 卫星背景点 satellites.js 固定 renderOrder 屏幕空间卫星拾取 位于卫星点下方。
6 卫星点 satellites.js 固定 renderOrder 屏幕空间卫星拾取 卫星点压过 footprint 和算力中心。
12+ 卫星锁定 ring、halo、预测轨道 satellites.js SATELLITE_CONFIG.overlayRenderOrder 及偏移 卫星覆盖层路径 用于选中 / 锁定卫星强调。
98-100 太阳 / 月亮 halo 和 sprite celestial.js 固定 renderOrder 天体拾取禁用 前景天体 sprite。

开关联动

开关 行为
高清材质 off 隐藏高清材质,启用国界 tint / 基座表面,禁用地形和昼夜开关交互,并记住地形和昼夜之前状态。
高清材质 on 恢复高清材质,并恢复记住的地形 / 昼夜状态。
地形 on 显示在高清材质之上,但低于国界 hover、footprint、卫星等强调层。
大气云图 只控制云图 mesh 显隐。
国界 控制国界线和 hover 线显隐;海陆基座填充独立存在,作为 Earth 基座地图使用。

交互规则

交互 当前规则
Earth 坐标 hover 高清材质可见时使用高清材质 overlay 作为地表拾取目标,否则使用 Earth 基座球。
国界 hover 先把地表拾取坐标转成经纬度,再用 GeoJSON 点面判断;国界 hover 线本身不接收 raycast。
国界 hover 视觉 hover 时压暗普通国界线,并绘制无深度测试的光晕和实线。
中国 / 台湾 hover CHNTWN 被归到同一个 hover 高亮组tooltip 仍显示鼠标实际命中的 feature。
地形 只作为视觉层参与,terrain.raycast 已禁用。
卫星 使用屏幕空间卫星拾取,避免 footprint 或地表层挡住卫星点击。
船只 使用 sprite marker 拾取,并在 main.js 中先过滤正面船只;点击后可加载轨迹线。