Files
main_plugin_farm/docs/14-crop-position-calibration.md
T
2026-10-19 17:25:25 +08:00

65 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 作物阶段位置校准
> 历史试验:本页人工锚点方案已被
> `15-crop-position-formula.md` 的统一定位规则取代。
> 后续绘制使用统一公式;以下保留为试验记录,不再扩展。
## 本轮范围
只校准现有本地草莓素材的种子、发芽、小叶、大叶、开花、成熟阶段。
其他作物和通用枯萎图保持原定位;没有自动套用草莓的数据。
不改旧版参考素材,不裁透明留白,不保存网页作物 ID。
## 参考点与证据边界
采用本地美术基准:茎与地面相接处;种子使用种子簇的落地点。
这是一组人工观察后的本地标注,并非 QQ 网页原始 pivot 的复原结果。
低分辨率边缘存在约 1~2 个原始像素的人工标注误差,
后续可以在同一配置中微调,不能宣称已核验所有作物。
坐标原点是完整参考画布的左上角,x 向右,y 向下。
`reference_size` 是标注时的画布宽高,`anchor` 是其内部落地坐标。
数字均为本地参考画布像素,不是屏幕坐标。
| 本地阶段 | 参考画布 | 落地锚点 |
| --- | --- | --- |
| 0 种子 | 35 × 58 | 17, 20 |
| 1 发芽 | 32 × 81 | 19, 27 |
| 2 小叶 | 61 × 99 | 33, 44 |
| 3 大叶 | 102 × 121 | 58, 72 |
| 4 开花 | 107 × 129 | 62, 75 |
| 5 成熟 | 112 × 139 | 64, 78 |
种子图原始文件较大,参考画布采用当前运行时的 35 × 58 显示尺寸。
其他阶段采用原始 PNG 尺寸;全部保留透明区域。
## 拼接公式
```text
地面目标点 = 地块中心 + 原有作物级 offsetX/offsetY
目标锚点 = anchor × 实际绘制图片尺寸 / reference_size
图片左上角 = 地面目标点 − 目标锚点
```
先缩放图片,再按实际宽高换算锚点,避免不同分辨率取整累计漂移。
普通和高清图采用同一参考坐标,不再分别维护偏移。
## 配置与发布
源配置:`src/farm_render/data/crop_positions.json`。
每个阶段保存 `sprite`、`reference_size`、`anchor`、图片 `sha256`。
`basis` 说明人工标注依据。
导出脚本将标注写入渲染 metadata,并检查图片哈希、阶段和画布尺寸。
更换素材或改变种子尺寸后必须重新标注,不能静默套用旧锚点。
这些是绘图数据,保存在包内配置;不需要修改玩家 SQLite 结构。
复现对照图:
```text
python scripts/preview_crop_positions.py --output <输出目录>
```
图中红十字为地块目标点;阶段 0~5 在相同地块和相同缩放比例下比较。
预览同时给出旧居中算法与新落地锚点算法,观察茎根而非叶片或果实边缘。
自动测试校验跨阶段、跨分辨率的坐标变换;美术位置还需结合预览检查。