qiu-skin-draw-yashu

v2026.09.24

球球大作战自定义皮肤自动作画:用户说"画球球皮肤画XX"(老虎/美女/小鸟/机甲/黑洞等)时触发,通过 AutoJS 在手机画板上自动选色、选笔粗、画曲线、生成皮肤。依赖电脑本地 RapidOCR 服务与手机任务中继。

GitHub
安装命令
npx skhub add steelan9199/qiu-skin-draw-yashu
Markdown
SKILL.md

球球大作战自定义皮肤自动作画

本技能是活文档:每次作画任务完成后回写经验,版本号 minor+1。


⛔ 第零位:自进化第一原则(最高优先级)

这是所有规则之上的铁律,优先级高于一切作画任务。

  1. 踩坑即记:作画过程中只要犯了错、踩了坑、被用户纠正,当场立刻更新本文档或对应 references/ 文件,不要等用户提醒、不要攒到最后、不要"下次再说"。
  2. 错误变SOP:记录不能只写"踩了什么坑",必须写成可执行的自检步骤——下次作画前逐条对照检查,从流程上杜绝再犯。
  3. 规则前置:凡是反复踩的坑、用户多次强调的规则,必须放到本文档最前面(本区域或 §1 之前),不能埋在 references/ 深处。
  4. 版本同步:每次修改文档,frontmatter version minor+1,文末「更新日志」加一行。

✅ 作画前自检 SOP(开画前逐条对照,缺一不可)

每次开始任何一幅画之前,必须过一遍这份清单。这不是建议,是强制流程。

A. 数据准备(必须做)

  • 已读三份存储:qiu-calib(按钮坐标)、qiu-brush-width(三档笔宽)、qiu-board(圆心半径)
  • 所有坐标用实时存储值计算,不凭记忆、不用文档里的旧数值

B. 执行顺序(铁律,一步不能乱)

  • 第1步:清空画板(qiu-clear-board,杜绝上一幅残留)
  • 第2步:设背景色(点"背景"→点色板颜色)
  • 第3步:设边框色(点"边框"→点色板颜色)
  • 第4步:点"画笔"回到画笔模式(否则点色板改的是背景色!)
  • 第5步:选色选笔粗,才动笔画主体

C. 画法铁律(画错方法=白画,必须纠正)

  • ⛔ 画前必先构图思考,禁止上来就写坐标(用户 2026-09-18 定):
    • 开画前先以人类画家视角想清楚以下问题,写下来再下笔:
      1. 空间层次:远景(天空/远山)→ 中景 → 近景,地平线在哪?各元素在画面上1/3还是下2/3?
      2. 元素位置关系:A元素和B元素谁在谁前面?谁在谁旁边?物理上不能重叠/穿越的元素必须分开(沙丘不能穿过河、云不能穿过太阳、草不能长在水面上)
      3. 透视关系:近处元素大、远处元素小;河流近宽远窄;沙丘近大远小
      4. 完整元素清单:画面上应该有哪些元素?每个元素的颜色、笔粗、大致位置?
      5. 每个元素的真实外形:画面上每个元素,你先用一句话描述它真实长什么样?它的核心轮廓是什么形状?是隆起的还是扁平的?团状还是线状?
        • 禁止想都不想就直接写坐标曲线。如果描述不出来这个东西长什么样,或者描述出来的形状和真实物体不符,就不能下笔
        • 禁止用偷懒的简化画法(如"随便画一条线""y稍微上下动一下")代替真实物体的轮廓
        • 每画一个元素前,先在脑子里"看"一眼它应该长什么样,再决定怎么画
    • 反例(大漠皮肤v3):沙丘画成五条水平香肠线——因为没先想"沙丘长什么样"就直接写了一条水平线
    • 自检:写batch前先口头过一遍每个元素"它长什么样、在哪、和谁相邻不冲突",确认无矛盾再生成坐标
  • ⛔ 透视感第一(用户 2026-09-18 定为最重要规则):
    • 球球画板本身就是一个圆盘(球体正面投影),所有图案必须服从"画在球面上"的透视逻辑,而不是平面摆花
    • 中心大、边缘小、边缘被圆边裁切:正面朝向观众的元素大且完整;靠近圆周的元素必须缩小并被圆盘边界自然切掉一部分(故意把路径画到 r 以外,靠圆形画布裁切),绝不能把多个完整图案均匀平铺在圆盘中央——那是"贴纸拼贴",不是足球/星球/球面图案
    • 主色占比要符合真实物体:如足球黑块只占球面 ~12%,白色六边形占主体;图案太满=不像。先算色块占比,再定半径/间距
    • 凡是多单元对称图案(足球多面体、花瓣、星球大陆),外圈单元一律推向圆边并裁切,不要全部完整居中
  • ⛔ 几何建模先行,禁止凭直觉摆位(用户 2026-09-18 定):
    • 凡是带三维体积感的题材(球/多面体/人脸/物体/动物),开画前必须在 PC 端用脚本完成三维投影计算,再下笔,禁止凭对称感/经验直接手摆坐标
    • 标准流程:① 建立三维几何模型(写出所有顶点的单位向量坐标);② 选定观察方向并旋转坐标系使视线对准主轴;③ 枚举可见面——面法向量与视线方向点积 > 0 者可见,反之为背面剔除;④ 将可见顶点/面中心正交投影到画板平面,换算成 (cx+k·x, cy+k·y);⑤ 计算各元素投影极角、径向距离、超出圆盘的裁切量
    • 计算产物即作画依据:投影得到的极角、径向距离、裁切半径直接代入 batch JSON,不再目测微调;足球 v1 凭感觉摆外围五边形偏了 36° 就是反例
    • 纯平面装饰(纯色底 + 无透视的贴纸五官)可豁免;只要题材是"一个有体积的东西",就必须走这一步
  • 实心色块用轮廓嵌套填充法,禁止水平直线堆叠!
    • 正确:先画外轮廓闭合路径 → 逐圈向内缩约 0.7×笔宽 → 再画下一圈 → 直到填满
    • 错误:用多条横线从左到右堆叠填充 → 边缘阶梯锯齿、笔数多、不均匀
    • 详见 references/画曲线经验.md「轮廓嵌套填充法」
  • ⛔ 轮廓嵌套填充:最内圈半径必须 ≤ 0.4×笔宽(中心露底铁律)
    • 笔沿圆周走时,笔的实际覆盖范围只有圆心周围 ±w/2。若最内圈半径 r_last > w/2,圆心周围会漏一个小圆点(真机踩坑:落日中心露黄点,大漠皮肤实证)
    • 正确:逐圈缩小直到 r_last ≤ 0.4×w(留余量),即使下一圈半径算出来是负数也要画一个 r≈0.2×w 的小圈把中心盖住
    • 自检:画完后心算 r_last <= 0.4*w ?,不满足就多画一圈;禁止因为"下一圈半径算出来是负数"就跳过
  • 整圆/闭合路径:points 数组首尾必须重合(最后一点 = 第一点),否则粗笔宽处会漏白
  • 一笔一个 gesture:一条曲线/一个笔画 = 一次 path,不要把多笔塞进一个手势
  • 曲线密采样:点间距 ≤ 40px 才看不到折角;整圆 ≈ 45+1 点,半圆 ≈ 22 点

D. 批量指令文件坑(qiu-draw-batch 专用)

  • JSON 文件必须用无 BOM 的 UTF-8 编码写入!
    • PowerShell 的 Out-File -Encoding utf8 会加 BOM → 手机端解析报 Unexpected token: 
    • 正确写法:[System.IO.File]::WriteAllText($path, $json, (New-Object System.Text.UTF8Encoding $false))
  • file 参数必传,不能留空用默认值——默认读残留旧 qiu_batch.json 会跑错
  • ⛔ 清空画板禁止写在 batch 里(btn:clear 不点确认弹窗)!
    • batch 里的 btn:clear 只点"清空"按钮,不会自动点确认弹窗的"确定" → 弹窗挡住后续 bg/border/选色/path,全部点空或点错位置(真机踩坑:富士山残留透出来)
    • 正确做法:先在 batch 之外单独跑一次 qiu-clear-board 模板(它内部点清空→等弹窗→点确定,回执 clicked:["清空","确定"]),确认清空成功后,再上传只含 bg→border→tool:brush→color→size→path 的 batch 执行
    • 即 batch 的 ops 开头不要放 clear,clear 永远在 batch 之外单独做

1. 触发与定位

  • 触发语:用户说"画球球皮肤画XX"、"在球球画板上画XX"、"自定义皮肤画XX"(XX 可以是老虎/美女/小鸟/机甲/黑洞/任何图案)。
  • ⛔ 开画前先查沉淀索引:用户说画 XX 时,先看 §6 沉淀作品索引——如果 XX 已有 draw_<xx>.js 脚本,直接读对应薄文档复现,不要重新设计坐标;只有索引里没有的新题材才走从零作画流程。
  • 沉淀触发:用户说"沉淀"或"存为脚本",宾语是刚画完的那幅画 → 读 references/沉淀SOP.md 执行(触发词表见该文档)。
  • 本技能不做:不打开 App、不导航到画板页——调用前用户应已停留在画板编辑页;不做支付/上传/分享。
  • 核心依赖:
    1. 手机任务中继(autojs-mobile-automation 技能,端口 9421);
    2. 电脑本地 RapidOCR 服务(端口 8765,必须用它,不用手机内置 OCR)。
    • 服务异常时读 references/启动与排障.md。

2. 数据权威源 = 手机本地存储(本文档零数值)

铁律:文档不保留任何坐标、笔宽、画板几何数值。一切运行期数据实时读手机本地存储(AutoJS storages);读不到就按 references/标定SOP.md 重测,绝不凭记忆或文档数值硬点。

作画前必做(读三份存储):

# 工作目录:autojs-mobile-automation 技能目录
# ⚠️ PowerShell 5 会吃掉 JSON 里的双引号,--args 必须用 \" 转义(见 §5 踩坑)

# 1) 全部按钮坐标清单(读 qiu-calib 存储)
node scripts/run-task.js qiu-calib-read --args '{\"op\":\"list\"}'

# 2) 三档笔宽(读 qiu-brush-width 存储,逐键读)
node scripts/run-task.js storage --args '{\"op\":\"get\",\"name\":\"qiu-brush-width\",\"key\":\"thin\"}'
node scripts/run-task.js storage --args '{\"op\":\"get\",\"name\":\"qiu-brush-width\",\"key\":\"medium\"}'
node scripts/run-task.js storage --args '{\"op\":\"get\",\"name\":\"qiu-brush-width\",\"key\":\"thick\"}'

# 3) 画板圆心/半径(读 qiu-board 存储)
node scripts/run-task.js storage --args '{\"op\":\"get\",\"name\":\"qiu-board\",\"key\":\"board\"}'

使用原则:

  1. 作画前现读三份存储,用返回值算所有坐标与间距;
  2. 点按一律走 tap-calibrated 名字(内部读 qiu-calib 存储);未标定会报错 → 按 references/标定SOP.md 补标定,不要回退硬点;
  3. 安全作画区:以半径 r 向内留 1%~5% 余量,避免笔触贴圆边被裁切;
  4. 曲线公式用变量代入圆心:[cx + R*cosθ, cy + R*sinθ](采样公式见 references/画曲线经验.md);
  5. 换机型/分辨率/游戏界面改版:三份数据全部失效 → 按 references/标定SOP.md 重测。

⛔ 作画前三步铁律(用户 2026-09-18 定,每次开画必走,缺一不可):

  1. 先清空画板:qiu-clear-board(有确认弹窗,走模板一键点清空→确定),杜绝上一幅画残留;
  2. 再设背景色和边框色:按题材选背景(太空/科幻=蓝、夜景=深蓝、雪地/白纸=白等),用 bg 一键铺底;边框色也一并设好(与主体配色协调,如红边框),用 border;两者都不能漏;
  3. 最后才动笔画主体:铺完背景/边框后必须先点"画笔"回到画笔模式,再选色选笔粗开画。 禁止跳过清空直接铺色开画——旧笔触会透出来毁掉新画;clear 必须在 batch 之外单独用 qiu-clear-board 跑(见 §D),batch 的 ops 开头按此顺序排:bg → border → tool:brush → 选色选笔 → 画主体。

界面功能速记(无坐标版):

  • 撤销/重做粒度:一次"按下→画→离开"= 一笔 = 最小撤销单位;一条曲线/一个笔画就发一次 qiu-draw-path 调用,不要把多笔塞进一个 gesture;
  • 画错:优先 tap-calibrated 撤销 逐笔回退(点一次等约 0.7s),不要清空重来;整体构图错了才 qiu-clear-board;
  • 背景/边框:两个"整圆一键着色"开关——点"背景"→点色板颜色 = 整个圆内铺满该色;点"边框"→点色板颜色 = 圆环边框变色。需要底色一键铺底,不要用粗笔来回涂;
  • ⚠️ 铺完背景必须先点"画笔"回到画笔模式,再选画笔颜色,否则点色板改的是背景色;
  • 画笔/橡皮擦:共用同一组三档笔粗;
  • 清空:有确认弹窗(清空→确定二段点击),一律用 qiu-clear-board 模板;
  • 生成皮肤:禁止点击生成皮肤按钮。

3. 手机任务模板表(autojs-mobile-automation 技能下)

模板名作用关键参数
pc-ocr截屏→上传电脑 OCR→返回全文+每个文字块中心坐标query(选填关键词过滤)、minScore(默认0.85)
qiu-board-view作画自检专用:只截中间大圆区域并回传电脑 PNG,无参,直接 Read 看图;自动忽略左右工具栏name(选填文件名)
qiu-clear-board一键清空画板(点清空→等弹窗→点确定)waitMs(默认1000)
qiu-draw-path画曲线/路径(封装 gesture,多点连续)duration(毫秒)、points([[x,y],...])
qiu-draw-batch读手机上的指令 JSON 批量作画(选色/笔粗/工具/多条曲线一次下发),PC 端只传文件、命令行零转义file(必传,默认读残留旧 qiu_batch.json 会跑错,见踩坑记录 2)
tap-point点屏幕坐标x, y
tap-calibrated按名点按画板控件:读 qiu-calib 标定坐标后 tap;未标定或屏幕方向不符报错name
wait等待ms
qiu-calib坐标标定双悬浮窗:红色环形准星可拖动 + 按钮名单分页面板,坐标按名存 qiu-calib。长任务:--wait 0无
qiu-calib-read读标定结果:{"op":"list"} 列出全部已标定坐标op(选填)
qiu-board-measure画板绘制区域精确测量双悬浮窗:全屏 1px 红圆环叠加画板,对齐后「保存」写存储 qiu-board(键 board)cx/cy/r/step(选填初始值)
qiu-brush-width-measure画笔三档粗细精确测量双悬浮窗:两根1px红水平线夹住画笔横线,分别保存三档笔宽(px)到 qiu-brush-width。长任务:--wait 0topY/bottomY/step(选填初始值)

测量模板的完整用法与登记:见 references/标定SOP.md。

调用方式:

cd <autojs-mobile-automation 技能目录>
node scripts/run-task.js <模板名> --args '<json>'

4. 自进化规则

每次完成一次作画任务后,回写经验:

  1. 坐标永远不回写文档(权威源是手机存储,见 §2);
  2. 画出新形状(圆/椭圆/三角/眼睛/嘴型)→ 采样公式追加到 references/画曲线经验.md;
  3. 新配色方案 → 追加到 references/配色库.md(只写颜色名与用途,不写坐标);
  4. 踩坑 → 追加到 references/踩坑记录.md(不存在则创建,顶部加『何时读我』);
  5. frontmatter version minor+1,文末「更新日志」加一行。

不要在多轮对话里"记住"——全写进文件,下个会话读它就能恢复上下文。

5. 沉淀铁律(用户指定 2026-09-18)

完整沉淀 SOP(触发词表/6 步流程/薄文档 8 项)见 references/沉淀SOP.md。此处只留触发判定与两条铁律。

  • 触发:用户说「沉淀」或「存为脚本」且宾语是刚画完的画 → 立刻执行沉淀 SOP,不二次确认;
  • ⛔ 铁律一(脚本只执行不读入):draw_<题材>.js 通常 20KB+,禁止 Read/cat/grep 整篇读入上下文——读薄文档 → 拼命令 → 下发执行 → 只读回执 JSON;唯一例外:改造型走生成器/Patch 路线,或 Read 的 offset/limit 定点读取;
  • ⛔ 铁律二(薄文档自足):references/<题材>.md ≤ 30 行、固定 8 项,必须自足到"不读脚本也能正确调用"。

6. 路由表(按需读取)

场景读什么
服务异常 / 需要启动中继或 OCR / 防火墙references/启动与排障.md
异常排查 / 画错 / 断线 / OCR 识别不到references/踩坑记录.md
作画规划:算曲线采样、选笔档、画细线references/画曲线经验.md
换机型 / 数据缺失 / 未标定报错references/标定SOP.md
用户说「沉淀 / 存为脚本」references/沉淀SOP.md
画某题材需配色 / 画法参考references/配色库.md
构图 / 配色 / 笔触 / 形状等美术指导references/绘画技法参考.md
复现已沉淀作品(老虎)references/TIGER.md(接口卡)
复现已沉淀作品(足球)references/FOOTBALL.md(接口卡)
复现已沉淀作品(太阳系)references/SOLAR.md(接口卡)

沉淀作品索引:scripts/draw_tiger.js(7 stage / 42 笔)、scripts/draw_football.js(3 stage / 13 笔,归一化坐标,运行时查存储)、scripts/draw_solar.js(7 stage / 31 笔,归一化坐标,运行时查存储);新题材沉淀后薄文档自动成为本表条目。

更新日志

  • 0.0.44:后羿射日皮肤实机完成(10 太阳两排交错 + Q版后羿持弓射日,7 色 6 批 36 笔)——踩坑记录新增「粗笔视觉半径=R+40.5,多圆同排间距不足粘成云团,须 ≥R1+R2+81+8 或改两排交错」;配色库新增「后羿射日」配色方案(含箭尖触日=算目标圆进入点经验)。

  • 0.0.43:太阳系皮肤沉淀为脚本 scripts/draw_solar.js(7 stage / 31 笔,归一化坐标,949 点还原最大误差 0.5px,dryRun missing=[],真机逐 stage 0→6 完整复现一轮 ok:1);薄文档 references/SOLAR.md;生成链 _src/solar/(gen/build/verify);预览图 outputs/solar.png。

  • 0.0.42:太阳系皮肤实机完成(太阳+6行星+土星环/木星条纹/地球斑块,7 色,7 批 31 笔)——配色写入配色库;踩坑记录新增「主体色与背景同色=隐形」(地球蓝色画在蓝色背景上只剩绿斑,需补白点云朵+绿斑点缀)。

  • 0.0.41:第5问「物体真实外形」改为通用规则——不针对具体山丘/云/树,而是通用要求:画任何元素前先想清楚它真实长什么样,禁止用偷懒简化画法代替真实轮廓。

  • 0.0.40:⛔「画前必先构图思考」新增第5问「物体轮廓特征」——山丘是向上拱起的∩形不是水平横线,云是团状不是直线,树有干有冠不是一个点。禁止用"一条线上的轻微y波动"代替立体物体。反例:大漠v3沙丘画成五条水平香肠。

  • 0.0.39:⛔ 新增「画前必先构图思考」铁律——开画前必须先想清楚空间层次、元素位置关系(不能穿越/重叠)、透视关系、完整元素清单,写下来再下笔。反例:大漠v2沙丘横穿河道、晚霞穿落日。

  • 0.0.38:⛔ 新增「中心露底铁律」——轮廓嵌套填充时最内圈半径必须 ≤ 0.4×笔宽,否则圆心周围漏一个小圆点(真机踩坑:落日中心露黄点,大漠皮肤实证;根因:笔沿圆周走只覆盖 ±w/2,r_last > w/2 时圆心露底)。即使下一圈半径算成负数也要补一个小圈盖中心,禁止跳过。

  • 0.0.37:足球沉淀为脚本 scripts/draw_football.js(3 stage / 13 笔,归一化坐标,dryRun 通过 missing=[]);薄文档 references/FOOTBALL.md;生成器归档 _src/football/;预览图 outputs/football.png。

  • 0.0.36:⛔ 新增「几何建模先行,禁止凭直觉摆位」——凡带三维体积感的题材,开画前必须在 PC 端完成三维投影计算(建模→选视线→背面剔除→正交投影→裁切量),计算结果直接作 batch 坐标;足球 v1 凭感觉摆位偏 36° 是反例(用户 2026-09-18 定)。

  • 0.0.35:⛔ 「透视感」定为最高美术铁律(用户 2026-09-18 定)——画板=圆盘=球面投影,中心大且完整、边缘小且被圆边自然裁切(故意画到 r 外靠画布切),色块占比符合真实物体(足球黑块~12%),禁止多单元完整平铺居中(足球第一版被批"像花不像球"的实证教训)。

  • 0.0.34:⛔ batch 里禁止写 btn:clear——它只点"清空"按钮不点确认弹窗的"确定",弹窗挡住后续 bg/border/选色/path 全部点空(真机踩坑:富士山作画残留透出来)。清空一律在 batch 之外单独跑 qiu-clear-board 模板;§D 新增自检条,§2 末尾顺序指引同步修正(用户 2026-09-18 定)。

  • 0.0.33:画曲线经验.md 新增「三角形/锥形的轮廓嵌套填充」——三角形比圆形需要更多圈(5~6圈)才能填满中心,否则露底(富士山作画实证)。

  • 0.0.32:新增「第零位:自进化第一原则」(最高优先级,踩坑即记、错误变SOP、规则前置)+ 「作画前自检 SOP」(A数据/B顺序/C画法/D批量文件坑 四大类,开画前逐条对照)——把"禁止直线堆叠必须用轮廓嵌套填充法"、"JSON无BOM编码"这两个反复踩的坑前置为强制流程(用户 2026-09-18 定)。

  • 0.0.31:⚠️ qiu-draw-batch 的 file 参数标为必传——默认读残留旧 qiu_batch.json 会跑错(真机踩到,见踩坑记录 2)。

  • 0.0.30:新增「作画前三步铁律」——开画必走 清空→设背景色→回画笔模式才动笔画;批量 ops 开头按此排序(用户 2026-09-18 定)。

  • 0.0.29:references/绘画技法参考.md 新增 §13「前后遮挡与立体感」——遮挡关系=绘制顺序、弧线端点处理、倾斜圆盘可见面逻辑、无渐变远近表现。

  • 0.0.28:按「按需加载」重构——SKILL.md 瘦身为核心卡+路由表,细节拆分至 references/(启动与排障 / 画曲线经验 / 标定SOP / 沉淀SOP / 配色库)。能力与触发词零变更。

  • (更早历史版本见 git 或旧文档)

发现
标签

此技能尚未发布标签。

版本
最新版本元数据

版本

v2026.09.24

发布时间

Sep 24, 2026

分类

未分类

许可证

未指定

源路径

skills/qiu-skin-draw-yashu

默认分支

main

最新提交

03b646a

Tree SHA

e79e9ee