fix(shanhai): 治本去除竞技场背景烤黑边(裁黑带+bicubic 回填,四边岩纹收口)

- assets/bg/bg-map1-arena-01.jpg: 裁左右顶烤黑带 + bicubic 缩放回填 1560x2960,四边纯黑硬框消除(采样 min 21-34 带纹理),右崖本征暗阴影保留作暗崖收口
- 拼接/贴边/裁切已于 a4dc91c4 解决;本提交治本黑边,背景定稿
This commit is contained in:
lili 2026-07-25 02:32:34 -07:00
parent a4dc91c43a
commit f6f817da4c
3 changed files with 259 additions and 0 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB

After

Width:  |  Height:  |  Size: 1.3 MiB

View File

@ -0,0 +1,170 @@
{
"checkpoint": "round-13 治本去 bg 烤黑边(裁黑带+bicubic 缩放回填)替换 + CDP 复核",
"utc": "2026-07-25T09:17:59.386Z",
"machine": "lili-mac.local(开发机本地)",
"node": "v22.22.3",
"url": "http://127.0.0.1:4533/?engine=stub&mode=evidence&seed=777",
"dpr": 2,
"viewport": {
"w": 390,
"h": 844
},
"arena": {
"w": 1560,
"h": 2960
},
"collector": "/tmp/arena-e2e-r13.mjs(临时,不入仓)",
"shots": [
{
"name": "01-arena-center-panorama.png",
"desc": "全景:玩家场心(0,0),镜头居中,竞技场整幅背景中心区",
"phase": "play",
"pos": {
"x": 0,
"y": 0
},
"timeS": 0.9,
"score": 0,
"drainOk": true,
"sha256": "584181a172ca11199aed693234a963a63c2c17177e8cc6e7b80c95f0b3216784",
"bytes": 1652033,
"utc": "2026-07-25T09:18:05.540Z",
"brightness": {
"ok": true,
"width": 780,
"height": 1688,
"bright": 1282717,
"total": 1316640,
"ratio": 0.974
}
},
{
"name": "02-arena-edge-right.png",
"desc": "右边缘:玩家贴右界(x≈684,岩壁内沿),应见岩纹收口而非黑带",
"phase": "play",
"pos": {
"x": 684,
"y": 0
},
"timeS": 7,
"score": 3,
"drainOk": true,
"sha256": "7d9532a62c5b8dc17289c0ee67d6d52a57adb87934347cfd1f589aca77b93cd4",
"bytes": 1531895,
"utc": "2026-07-25T09:18:06.115Z",
"brightness": {
"ok": true,
"width": 780,
"height": 1688,
"bright": 691791,
"total": 1316640,
"ratio": 0.525
}
},
{
"name": "03-arena-edge-top.png",
"desc": "上边缘/右上:玩家贴上界(y≈-1384),顶应岩纹收口",
"phase": "play",
"pos": {
"x": 684,
"y": -1384
},
"timeS": 23.7,
"score": 15,
"drainOk": true,
"sha256": "d0f1f12094b20bd72b6f21fb738d2f12431ce02dbe693214301c87bd96cd0592",
"bytes": 1341817,
"utc": "2026-07-25T09:18:07.117Z",
"brightness": {
"ok": true,
"width": 780,
"height": 1688,
"bright": 260942,
"total": 1316640,
"ratio": 0.198
}
},
{
"name": "04-arena-edge-left.png",
"desc": "左边缘/左上:玩家贴左界(x≈-684),左应岩纹收口",
"phase": "play",
"pos": {
"x": -684,
"y": -1384
},
"timeS": 40.5,
"score": 28,
"drainOk": true,
"sha256": "5c9efb033ed4c58bf4f276c4a2a59057c12c515d7845956ef985529a79ba7580",
"bytes": 1254619,
"utc": "2026-07-25T09:18:08.201Z",
"brightness": {
"ok": true,
"width": 780,
"height": 1688,
"bright": 214500,
"total": 1316640,
"ratio": 0.163
}
},
{
"name": "05-arena-edge-bottom.png",
"desc": "下边缘/左下:玩家贴下界(y≈1384),底应岩纹收口",
"phase": "play",
"pos": {
"x": -684,
"y": 1384
},
"timeS": 73.5,
"score": 55,
"drainOk": true,
"sha256": "0e24f49eb38d538022564445bb3e458cf807432d8f10dcaff248fe31dd988189",
"bytes": 1524921,
"utc": "2026-07-25T09:18:09.678Z",
"brightness": {
"ok": true,
"width": 780,
"height": 1688,
"bright": 593402,
"total": 1316640,
"ratio": 0.451
}
},
{
"name": "06-arena-corner-br.png",
"desc": "右下角:同时贴右+下界,角落收口",
"phase": "play",
"pos": {
"x": 684,
"y": 1384
},
"timeS": 90.2,
"score": 71,
"drainOk": true,
"sha256": "5ac5fff82609edc4333e439b22cea591ea62ba901796716356172af0c99493fa",
"bytes": 1410634,
"utc": "2026-07-25T09:18:10.831Z",
"brightness": {
"ok": true,
"width": 780,
"height": 1688,
"bright": 1302327,
"total": 1316640,
"ratio": 0.989
}
}
],
"targetId": "3ACE052453272F97844CB90FF843ADA2",
"boot": {
"ok": true
},
"arenaBgAssetProbe": "ready 1560x2960",
"startState": {
"phase": "play",
"pos": {
"x": 0,
"y": 0
}
},
"consoleErrors": []
}

View File

@ -0,0 +1,89 @@
# round-13 · 治本去除背景图烤黑边
- 检查点:round-13(去 bg-map1-arena-01.jpg 烤黑边 + 替换重接 + CDP 复核)
- 时间(UTC):2026-07-25T09:03 取证 / 处理 02:0102:03
- 机器:lili-mac.local(开发机本地,非 mini-desktop),node v22.22.3,Chrome 150
- 本检查点**未 commit**(待主代理复核 + 创始人眼验)
- 改动边界:仅 `assets/bg/bg-map1-arena-01.jpg`(替换)+ `dist/`(重打 JS bundle)+ 本目录证据;**未改 src/、plugins/、contracts**
## 病灶(处理前逐列/逐行亮度剖面测定)
目标图 1560×2960。四边黑带性质不同:
- **左**:纯黑 (0,0,0) 平铺 056px,x≈80 处锐变进岩纹(列均亮 1.4→21.3)。
- **右**:纯黑 056px + 近黑缓坡延伸到 offset≈130 才到岩纹(列均亮 17→22,无锐变)。
- **顶**:无纯黑,是暗青崖渐变 0153px(行均亮 1622,有纹理)。
- **底**:**本即岩纹**(行均亮 3044,苔绿),无黑带,无需处理。
左右两条**纯黑竖带**是烤边病灶:游戏在四边叠半透明暗角(`drawArenaBounds`,峰值 α=0.5),半透明叠纯黑仍≈黑,render 侧治不了,故治本改 jpg。
## 处理手法(PIL 确定性:裁黑带 + bicubic 缩放回填)
裁掉四边黑/近黑带到岩纹起始处,裁后核心区 bicubic 缩放回 1560×2960:
- 裁切线:左 L=84、右 R=1428(右裁 132)、顶 T=160、底不裁。裁后核心 1344×2800。
- 缩放比:x×1.161 / y×1.057。存 JPEG quality=92 / 4:2:2。
### 为何选缩放、弃镜像(对比实证)
并行产出两候选(同裁切线),用 Read 工具**亲眼看**全景与边条后定夺(亮度二阶指标抓不到结构对称,必须肉眼):
- **镜像外翻填充**(`_cmp/preview-M-mirror.png`):黑带虽除,但左右岩壁巨石被镜像成左右对称的"墨渍/Rorschach"重复图案,顶部出现镜像拱形——正是工单警告的镜像痕迹,人工感强。
- **裁后缩放**(`_cmp/preview-S-scale.png`):黑带除,岩壁巨石自然延伸到四边,无对称伪影;1.16x 上采样颗粒在全景与边条原分辨率下均不可见。
结论:镜像痕迹(中心无、边缘显眼的人工对称)比缩放颗粒(全图轻微软化)更刺眼,故选缩放。镜像候选仅作诚实留证,未采用。
### 为何不用 mmx 重生成
本地确定性图像处理已干净消除病灶,无需引入生成模型的随机性与 API 成本;且重生成无法保证与现有竞技场构图/熔岩走向一致,会牵动 render 侧已调好的暗角/clamp 对齐。仅在 PIL 两法均不可接受时才退回 mmx(本检查点未触发)。
## 副作用(如实)
- **整图轻微上采样**:中心主玩区随边一起放大 1.16x,岩纹略软;亲眼看(01 全景)颗粒不可接受度低。
- **右崖本征阴影**:源图右半是阴影崖面(岩纹列均亮 ~2026),非烤边。缩放后右缘读作"暗崖"而非"亮岩"——这是源图本来的明暗,不是缺陷;游戏暗角叠其上读作天然崖影。
- **四角偏暗**:裁切线恰落在左右黑带与顶暗带相交的暗角处,四角 12×12 均亮 811;游戏中四角本就被双暗角压到最暗(round-12 同位亮度比 0.0490.105),暗角属设计内,未因本次处理变差。
- 无镜像痕迹、无裁切错位、无颜色偏移。
## 处理后四边像素采样(读磁盘新 asset,含 JPEG 重压真实值)
0120px 列/行**均亮**(每 15px),应渐变、无平黑硬带:
| 边 | 0 | 15 | 30 | 45 | 60 | 75 | 90 | 105 | 0120 最小 |
|---|---|---|---|---|---|---|---|---|---|
| 左 | 23.7 | 24.2 | 25.0 | 25.4 | 27.3 | 27.1 | 27.2 | 28.8 | 23.3 |
| 右 | 22.0 | 23.6 | 23.7 | 23.5 | 25.6 | 25.9 | 25.0 | 23.3 | 21.4 |
| 顶 | 26.6 | 25.5 | 29.9 | 26.4 | 27.1 | 27.0 | 28.7 | 33.5 | 25.5 |
| 底 | 34.7 | 35.2 | 37.0 | 36.8 | 36.3 | 39.2 | 44.9 | 48.2 | 34.4 |
- 最外 4px 平黑带占比:左 0.65% / 右 0.71% / 顶 0.24% / 底 0.19%(**处理前左右≈100%**;现仅为岩缝深阴影的散布像素,非连续硬带)。
- 缘带纹理(列/行均亮标准差):左 1.9 / 右 1.2 / 顶 2.4 / 底 4.7(>0 = 有岩纹渐变,非平黑)。
- 右缘最小 21.4 略低于 22 阈值:即上表右崖本征阴影(带纹理渐变,非黑带),见副作用说明。
## sha256
- 新 asset `assets/bg/bg-map1-arena-01.jpg`:`5e3cc78b3339efc616efeb573924224c359c5cfeb47a8d3f4fef25029b80db8f`(1560×2960,1.41MB)
- 处理前备份 `bg-before-blackfix.jpg`:`aaa42f3a2f2a47e35f2d7f68cf7e64e7a53726983f68081c0d9f86daadec1956`
- 6 截图 sha256 见 `00-arena-bg-result.json` 各 shot(本文末尾亦列)。
## CDP 截图(engine=stub&mode=evidence,seed=777,dpr2,视口 390×844;stepFrames 确定性驱动)
进 play 态,对角走位压墙钳到四边/四角,截图前 `drainFade` 关升级弹层并等其关闭淡出(≤250ms)结束,保证截的是干净战场:
| 文件 | 视角 | 玩家位 | phase | 亮度比(lum>40,自定口径,仅看相对) |
|---|---|---|---|---|
| 01-arena-center-panorama.png | 中心全景 | (0,0) | play | 0.974 |
| 02-arena-edge-right.png | 右边缘 | (684,0) | play | 0.525 |
| 03-arena-edge-top.png | 顶/右上 | (684,-1384) | play | 0.198 |
| 04-arena-edge-left.png | 左/左上 | (-684,-1384) | play | 0.163 |
| 05-arena-edge-bottom.png | 底/左下 | (-684,1384) | play | 0.451 |
| 06-arena-corner-br.png | 右下角 | (684,1384) | play | 0.989 |
6 张 sha256:
- 01 `584181a172ca11199aed693234a963a63c2c17177e8cc6e7b80c95f0b3216784`
- 02 `7d9532a62c5b8dc17289c0ee67d6d52a57adb87934347cfd1f589aca77b93cd4`
- 03 `d0f1f12094b20bd72b6f21fb738d2f12431ce02dbe693214301c87bd96cd0592`
- 04 `5c9efb033ed4c58bf4f276c4a2a59057c12c515d7845956ef985529a79ba7580`
- 05 `0e24f49eb38d538022564445bb3e458cf807432d8f10dcaff248fe31dd988189`
- 06 `5ac5fff82609edc4333e439b22cea591ea62ba901796716356172af0c99493fa`
肉眼复核结论(交创始人终验):左右原纯黑竖框已消失,改为岩壁/崖纹自然收口;顶缘为带纹理暗崖;底缘为岩纹。四边无 (0,0,0)/近黑硬带。亮度比仅自定口径参考,美丑不定论。