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

2.7 KiB
Raw Blame History

作物阶段位置校准

历史试验:本页人工锚点方案已被 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 尺寸;全部保留透明区域。

拼接公式

地面目标点 = 地块中心 + 原有作物级 offsetX/offsetY
目标锚点 = anchor × 实际绘制图片尺寸 / reference_size
图片左上角 = 地面目标点 − 目标锚点

先缩放图片,再按实际宽高换算锚点,避免不同分辨率取整累计漂移。 普通和高清图采用同一参考坐标,不再分别维护偏移。

配置与发布

源配置:src/farm_render/data/crop_positions.json。 每个阶段保存 sprite、reference_size、anchor、图片 sha256。 basis 说明人工标注依据。 导出脚本将标注写入渲染 metadata,并检查图片哈希、阶段和画布尺寸。 更换素材或改变种子尺寸后必须重新标注,不能静默套用旧锚点。 这些是绘图数据,保存在包内配置;不需要修改玩家 SQLite 结构。

复现对照图:

python scripts/preview_crop_positions.py --output <输出目录>

图中红十字为地块目标点;阶段 0~5 在相同地块和相同缩放比例下比较。 预览同时给出旧居中算法与新落地锚点算法,观察茎根而非叶片或果实边缘。 自动测试校验跨阶段、跨分辨率的坐标变换;美术位置还需结合预览检查。