Codex 桌宠制作记录:Hoodie Tide
Codex 桌宠制作记录:Hoodie Tide
这篇记录的是我把一张参考图做成 Codex 自定义桌宠 Hoodie Tide 的过程。原始记录更像操作日志,这里整理成一次制作复盘:先讲角色怎么定型,再讲动画行怎么生成,最后讲几个真正影响成品质量的修正点。
最终成品是一个 8 列 9 行的透明 WebP spritesheet,单格尺寸 192x208,可以安装到 Codex 的 custom pets 目录里使用。
角色目标
参考图的核心特征很明确:黑色蓬松长发、宽松浅色 hoodie、安静的侧脸气质,以及带一点灰蓝和水彩线稿感的整体氛围。

我给这次桌宠定下的目标不是复刻原图,而是把它压缩成桌宠可读的形象:
- 保留黑发轮廓和 hoodie 识别点。
- 转成紧凑全身比例,保证在
192x208单格里能看清。 - 背景不参与角色设计,方便后续抠透明。
- 让所有动画行保持同一张脸、同一套服装和同一组颜色。
第一张 base 图生成后,角色已经从半身参考图变成适合桌宠的全身 Q 版形象。

制作流程
这次使用的是 hatch-pet 工作流。它会把桌宠拆成三个阶段:准备角色请求、生成各状态动画行、再把每一行拆帧并拼成最终 atlas。
最终 atlas 规格如下:
| 项目 | 值 |
|---|---|
| atlas 尺寸 | 1536x1872 |
| 网格 | 8 x 9 |
| 单格 | 192x208 |
| 输出格式 | spritesheet.webp |
| 通道 | RGBA |
最终 contact sheet:

九行动画状态分别是:
| Row | State | Frames | 用途 |
|---|---|---|---|
| 0 | idle | 6 | 待机、眨眼、呼吸 |
| 1 | running-right | 8 | 向右移动 |
| 2 | running-left | 8 | 向左移动 |
| 3 | waving | 4 | 打招呼 |
| 4 | jumping | 5 | 跳跃 |
| 5 | failed | 8 | 失败或取消 |
| 6 | waiting | 6 | 等待输入 |
| 7 | running | 6 | 正在工作 |
| 8 | review | 6 | 审阅输出 |
生成策略
图像模型使用 gpt-image-2。因为最终需要透明底,而生成阶段不直接依赖真透明,所以采用 chroma key 策略:
- 让模型在纯色背景上生成角色动画行。
- 用本地脚本按背景色抠除。
- 拆成独立帧。
- 重新拼成透明 spritesheet。
这次使用的背景色是纯黄色 #FFFF00。好处是角色本身主要是黑、白、灰蓝,不容易和背景混在一起。
动画预览
下面是几条代表性动画。Idle 保持轻微呼吸和眨眼,running-right 用来确认移动方向,waving 和 review 则检查角色表情、手部动作和身份一致性。




关键修正
1. 不直接相信第一次方向
第一次生成 running-right 时,动作质量不错,但角色视觉上更像朝左。这里没有直接废掉,而是把它作为 running-left 保留,再按单个 frame slot 做水平镜像生成真正的 running-right。
这个细节很重要:不能把整张长条图直接反转后倒用帧顺序,否则动画时间会变乱。正确做法是逐格镜像,保留第 0 到第 7 帧的时间顺序。
2. 并行生成时避免 manifest 竞争
waving、jumping、failed、waiting 这些动画行可以并行生成,但多个进程同时写 imagegen-jobs.json 容易互相覆盖。所以并行时只生成图片,不立即写 manifest,等图片完成后再统一登记状态。
3. 先验收帧,再验收 atlas
桌宠不是只看一张 contact sheet 漂亮就够了。真正要过两层检查:
- 每一帧必须是
192x208。 - 不能有空帧、靠边裁切和明显背景残留。
- 最终 atlas 必须是
1536x1872、RGBA、透明像素无 RGB 残留。
最终验证结果:
frame inspection errors: 0
frame inspection warnings: 0
atlas validation errors: 0
atlas validation warnings: 0
transparent RGB residue pixels: 0最终安装
最终安装目录结构很简单:
<CODEX_HOME>\pets\hoodie-tide\
pet.json
spritesheet.webppet.json 内容:
{
"id": "hoodie-tide",
"displayName": "Hoodie Tide",
"description": "A soft anime-style black-haired companion in a pale hoodie, adapted into a compact Codex pet.",
"spritesheetPath": "spritesheet.webp"
}重启 Codex 后,就能在自定义桌宠列表里看到 Hoodie Tide。
复盘
这次最有价值的不是“生成了一张桌宠图”,而是把随机性比较强的图像生成任务拆成了可验证的工程流程。参考图负责身份,base 图负责统一角色,row prompt 负责动作,拆帧和 atlas 验证负责把成品拉回可用标准。
对这类桌宠制作来说,最容易出问题的地方通常不是最后一步,而是中途某一行动画悄悄跑偏:方向反了、角色变脸了、背景没抠除干净,或者帧太靠边。把这些问题拆成可检查的指标后,成品就稳定很多。