/sky 批次 440 · 结构失败诊断

触发:老板目检判定「渲染的图片是失败的,无法使用,与提供的样板图完全不一致」→ 复核结论:判定成立。
对拍对象:SKY-BASELINE-CT1.png(老板指定冻结标准)↔ 440-prod/desktop.png(vite build 生产产物)
结论 这不是「参数没调好」,是场景与 CT-1 不是同一套解构。

CT-1 是**实体几何夜景城市**:塔楼剪影有高矮、左右实体山体、连续地平线光带、中轴光柱、体育馆/河流/路网、天空大面积星云团块。
而当前实现是一团**程序化点阵**披在城市形状上 + 一块均匀青色地脚圆盘 —— 视觉上是一块会发光的 LED 屏,不是一座夜里的城市。

我这三个批次(420 / 430 / 440)一直在优化「分区均亮」,而该指标对结构完全失敏:实现的地貌区 L*>4 占比 81.67% vs CT-1 77.64%(0.95×,看起来"很准"),可它测的是「点阵灯毯」和「城市」碰巧平均亮度接近。方法论失败,责任在我。

一、致命对拍(同一区域裁切,上=CT-1,下=440)

zone comparison
四列分别为:左手山体 | 中段天空+光带 | 城市中轴 | 右下地面。
CT-1:山体实体有明暗;地平线光带连续且向天空放射;塔楼剪影高矮错落、人形立在光爆中心、脚下向四面放射光线;右下有体育馆椭圆与河流。
440:山体完全没有;光带是一堵点阵亮墙;城市是一条等高的点阵带,无塔楼、无光柱、无放射线;右下是一片均匀灯毯。

二、结构指纹(与「均值」无关的量化证据)

结构指纹CT-1实现 440比值 / 判定说明
天空 L*>4 占比(除 UI 盒)10.02%5.13%**0.51×**CT-1 天空有星云/银河级弥散;实现近空黑
天空 L*>8 占比(除 UI 盒)2.56%1.21%**0.47×**同上,亮部只有 CT-1 的一半
天空 24×24 块 std>2 占比29.44%14.33%**0.49×**CT-1 天空近三成有纹理团块;实现只有均匀星点
天际线极差(相对地平线)51.08%33.61%**0.66×**CT-1 有 19% 高差的中轴塔楼/光柱;实现顶沿几乎一条直线
塔楼数(列局部极大)90**0**实现完全没有可辨识的塔楼峰
中 40% 列最高结构(地平线上)+19.2%+1.71%**0.09×**CT-1 中轴光柱/高塔越出地平线 19%;实现仅 1.7%
左 12% 列最高结构(地平线上)−30.4%−31.9%≈贴底两侧均为底噪,但 CT-1 在山体内有实体,实现无山
地貌区 L*>4 占比77.64%81.67%**0.95× ✅**唯一接近的一项 —— 也正是「均值指标通过」的原因
脚本:sky-build/struct_probe.py(自底向上连通实体法求天际线,规避星点与 UI 文字干扰)|原始输出 shots/struct-440.txt

三、天际线轮廓真相

skyline profiles
红=CT-1(含中轴光柱的 19% 高差与中段塔楼起伏);青=440(顶沿近乎一条直线)。

四、逐层缺失清单(CT-1 有 / 实现无)

层级CT-1 形态实现 440 实际归属文件级别
① 城市塔楼实体剪影高矮错落的楼体剪影、侧面明暗、独立窗光一片等高「LED 点阵墙」,无塔楼轮廓、无高差`solidCity.ts` / `geoEngine.buildSolidCity`P0
② 左右山体左右各一列实体山脉,山脊有明暗与纹理,框住城市**完全缺失**(只有几条折线,肉眼不可见)`geoEngine.buildRidges`(3 层折线)P0
③ 地平线连续光带横贯全画的连续亮带 + 从地平线向上的放射光线有亮度但形态是「点阵亮墙」,无连续带、无放射线`atmosGlow.ts`P0
④ 中轴光柱人形上方一道贯穿地平线进入天空的光柱(CT-1 中轴最高结构 +19.2%)**完全没有**`LIGHT_SHAFT` 未生效/未渲染P0
⑤ 天空星云团块大面积青蓝絮状星云 + 银河带(天空 29% 面积有纹理)近纯黑 + 均匀细星点,无团块`atmosGlow.NEBULA_FRAG` / `NebulaOverlay`P1
⑥ 星座连线星点连成的多组星座多边形(大小适中、有节点)几条贯满屏的稀疏长斜线,不成星座星座连线模块P1
⑦ 月亮中轴偏上、明显暖色弯月(暖色连通域 = 4)极小、几乎不可见(暖色连通域 = **0**)`moon.ts`P0
⑧ 地面地标与路网体育馆椭圆 + 河流 + 道路网 + 城市街区格网一片均匀点阵灯毯,**全无**`water/roads/landmarks` 全为空P1

五、根因(两层,缺一不可)

方法论 用「分区均亮 ±10%」当唯一验收口径
分区均亮是 0 阶统计量:只要「点阵灯毯」的整体亮度碰巧接近「城市」,指标就通过 —— 它对「塔楼有没有轮廓」「山体在不在」「光带连不连续」全部无感。三个批次的"进展"有相当部分是指标漂移而非视觉改善。
→ 需要把验收口径换成结构指纹(本页第二节)+ 逐层可见性核对,均值只作辅助。

工程 真实城市/山体/水系数据管线从未接通渲染
早前 IP 首页测试已记录(阻塞项 B3):cityAdapter.loadCityToPayload 全仓零调用点,SkyScene.ts 只走台北 tile / 伪随机天际线。
→ 所谓「城市」是程序化生成的等高点阵,「山脊」是 3 层折线,「水系/道路/地标」对象列表全空。这就解释了第四节 ①②⑧ 三项为何是"完全缺失"而不仅仅是"没调好"。

六、重建清单(按 ROI,建议顺序)

S1
城市改实体塔楼剪影(P0)—— 由点阵改回不透明盒体:按真实城市数据或确定性城市模型生成「高矮错落 + 侧面明暗 + 独立稀疏窗光」,顶沿产生真实起伏(目标:塔楼峰 ≥8 个、天际线极差 ≥30%)。
触及 solidCity.ts / geoEngine.buildSolidCity;这是"观感是不是城市"的第一决定项。
S2
左右实体山体(P0)—— 折线改实体剪影(近山等高线 + 远山点阵浮雕),左右框住城市,山顶越出地平线 10–18%。
触及 geoEngine.buildRidges;CT-1 构图的两翼框。
S3
地平线光带 + 中轴光柱 + 放射光线(P0)—— 光带改连续(非点阵);补 CT-1 的中轴光柱(+19% 越出地平线)与脚下放射线。
触及 atmosGlow.ts / LIGHT_SHAFT / 能量连接场。
S4
月亮(P0,最小工作量)—— 放大到 CT-1 尺度、暖色可见(目标暖色连通域 = 4 → 至少 1)。
触及 moon.ts;当前 V4 是唯一硬判据失败。
S5
天空星云团块 + 星座多边形(P1)—— 均匀细星点 → 絮状团块 + 银河带(目标天空块 std>2 占比 ≥29%);稀疏长斜线 → 星点连成的星座多边形。
触及 atmosGlow.NEBULA_FRAG / NebulaOverlay / 星座连线模块。
S6
地面地标与路网(P1)—— 体育馆椭圆 + 河流 + 道路网/街区格网。
触及 water / roads / landmarks(现全空)。
S0
验收口径改造(贯穿)—— 每轮必出「结构指纹表 + 逐层可见性核对 + 同区裁切对拍图」;分区均亮降为辅助项,不得单独用于宣布达标。

七、请老板拍板

诊断脚本:sky-build/struct_probe.py、build_diag_440.py|原始数据:shots/struct-440.txt|对拍图:shots/440-struct/{full-sbs,zoom-sbs,zones,skyline}.png
纪律:仅改 worktree thread-sky-v2-exec/src/;主仓零改动;未提交、未部署;线上 /sky 仍为 09-13 v2。
本页为 2026-09-15 批次 440 的失败复盘,取代 REVIEW-20260915-440-vs-CT1.html 的"三区达标"结论。