桌游卡面常要保持角色和画风相近,还得把卡名、类别等文字排清楚。可以让图像模型只画插画,再把文字交给排版脚本,避免中文字变形。
这次沿用 s194 的原创狐狸角色图,做三张没有游戏数值的概念卡:行动、事件和角色。先让 ComfyUI 分别编辑同一张参考图,再用 Pillow 合成标题与说明。下载卡面练习包可查看参考图、提示词、生成记录和排版脚本。
1. 先定义卡面差异
三张卡都保留狐狸的橘红毛色、奶油色口鼻与胸口、深青围巾、炭灰上衣、棕靴和斜挎包;分别更换动作、环境和情绪。这里先写卡名、类别和一句说明,暂不设计数值或胜负规则。
| 卡名 | 概念类别 | 插画动作 |
|---|---|---|
| 林间急递 | 行动概念 | 沿林间小路奔跑,手里拿空白信封 |
| 雨后橡果 | 事件概念 | 雨后照料一颗橡果和刚冒出的新芽 |
| 岔路守望 | 角色概念 | 在林间岔路观察方向,拿着空白地图 |
把每张图的提示词保存在 cards.json,每次都从同一个参考图独立编辑,避免连续传入上一次结果而累积角色漂移。
2. 用 ComfyUI 生成三张插画
ComfyUI 官方 FLUX.2 Klein 指南列出 4B 图像编辑和 Distilled 编辑工作流;指南说明蒸馏版是 4 步流程。本机 ComfyUI 0.38.0 使用已安装的 Klein 4B Distilled、Qwen 文本编码器和 VAE。klein_edit.py 通过 ComfyUI 本机接口上传参考图、提交编辑图并保存结果。
在练习包目录运行:
python3 batch_card_art.py
脚本按 cards.json 的顺序逐张调用模型,每次都使用 input/fox-reference.png,输出到 output/dash.png、output/sprout.png 和 output/crossroads.png。本机实测依次耗时 88.46、74.53、74.55 秒,合计 237.54 秒;每张均为 880×1168。种子、提示词、耗时和 SHA-256 保存在 evidence/generation.json。需要单独重做时传卡片 ID,例如:
python3 batch_card_art.py sprout
模型不会绘制卡名;提示词也明确要求不要出现字母、数字、边框或水印。目检中,三张图都保留了狐狸的大体配色、围巾与斜挎包,动作和环境也能区分;“雨后橡果”额外画出棕色手套,“岔路守望”的上衣下摆比参考图更长,属于角色细节漂移。空白信封、橡果和地图都能辨认。本组图适合讨论卡面方向,若要形成统一角色设定仍需美术人工校正。
3. 用 Pillow 排版卡片
python3 layout_cards.py
脚本把插画、类别标签、卡名和说明合成独立卡面,并生成三卡预览图。标题和中文说明都是代码绘制的,方便后续替换;改文字时编辑 cards.json,不需要重新生成插画。
三张卡面概念预览
林间急递
林间急递概念卡
雨后橡果
雨后橡果概念卡
岔路守望
岔路守望概念卡
4. 复核和使用边界
- 核对三张图里的毛色、围巾、上衣和挎包,标记角色外观漂移或不自然姿势。
- 确认每张图表达的是提示词中的动作;若场景或道具不清楚,先重写该卡提示词,再单独生成。
- 卡名、类别和说明应清楚、没有乱码,并和插画表达一致。
- 这组作品只有卡面概念,没有数值、互动规则或平衡性测试;PNG 也没有印刷出血、CMYK 和实体打样检查,不能当作可直接印刷的桌游成品。
来源
本机模型版本、提示词、实际耗时和图片哈希见练习包内 evidence/。官方文档介绍工作流,不保证本机生成结果或印刷效果。