上一期视频分享了怎么用 Codex 制作桌面宠物,当时的案例是我家的小狗钱钱。这个功能我觉得很有意思,这两天我又尝试了几个其他形象,顺便研究了一下它的实现原理。这期给大家看一下新形象的效果,以及桌面宠物的动作素材具体是怎么生成出来的。

三个新的自定义形象

打开 Codex 的设置,进入 Appearance,底下有一个 Pets 选项。

Codex 设置里的 Pets 选项

在 Custom pets 里可以看到我新制作的三个形象:第一个是高达 Aegis,第二个是宇智波鼬 Itachi Crow,第三个是巴达兽 Patamon。

Custom pets 里的三个新形象,当前选中宇智波鼬

这几个里面我比较喜欢宇智波鼬,它的左上角还飞着一只乌鸦。鼠标 hover 上去的时候会有漂浮的效果,根据 Codex 不同的任务状态,它还会切换不同的动作。

九个动作是怎么生成的

为了方便查看,我把宠物素材丢到了自己做的一个 Agent 画布工具上。可以看到默认造型是有一张参考图的,不然让它自己去猜,形象没有这么准确。

画布工具上查看宇智波鼬的参考图和制作文档

宠物的动作总共有九个,比如空闲、向右跑、向左跑,每个动作都有对应的提示词文档和生成出来的动作视频。

每个动作对应一份提示词文档和动作视频

生成过程大概是这样的:先生成一张基础图片,确定视觉风格,然后基于图生图的方式生成网格状的雪碧图。最开始它是一条一条生成的,第一个动作生成第一条,第二个动作生成第二条,全部生成完之后拼到一张雪碧图里面,再通过程序的方式剪成视频。我们在桌面上看到的宠物动作,其实就是一帧一帧的画面组合到一起的。

生成出来的雪碧图,每个动作占一排

生成宠物的时候会跑一个子 Agent 来执行这个任务,提示词是可以在过程里看到的。我把基础形象的提示词整理了出来,可以看到它对形象描述、风格约束和输出规格写得很具体,比如要求纯色背景、不要文字和多余装饰。

子 Agent 生成基础形象的完整提示词

复杂形象的效果问题

高达这个形象有一个问题:宠物图片的宽度和高度是固定的,比较复杂、不那么 Q 版的形象,在相同大小的网格里空白的位置比较多,主体就会显得比较小,它也没办法自己去调整大小。

高达 Aegis 在固定尺寸下主体偏小

对比一下就很明显。小狗钱钱的外观圆圆的,显示出来非常清晰;高达这种偏人形的形象就会显得太小,我觉得反而没有 Q 版形象好看。巴达兽这种胖嘟嘟的也比较清楚。

小狗钱钱在同样尺寸下显示很清晰

纯色背景抠图和 hatch-pet skill

巴达兽的制作过程是类似的,但可以看得更清楚。第一步生成的主体图片是带背景的,而且特意使用纯色、比较奇怪的颜色,比如绿色、青色或者紫色,目的是方便程序抠图,把主体从背景里抠出来。

巴达兽的主体图使用紫色纯色背景,旁边是抠图后的雪碧图

主体抠出来之后,再通过图生图的方式保持主体不变,生成每一个动作的序列。这些动作序列使用的是 hatch-pet 这个 skill 内置的提示词,也就是上一期安装的那个孵化宠物的 skill。

Codex 里的 Hatch Pet skill,负责生成宠物动作雪碧图

我还尝试给它做了一个从巴达兽进化为天使兽的动作。这个序列可能比较难生成,做得不是很准确,生成了一个胖嘟嘟的天使兽。另外这个动作在什么情况下会被调用,我还没有试出来。

雪碧图里的进化动作,生成了一只胖嘟嘟的天使兽

Codex 的能力边界在变广

这个功能推出之后,我的感觉是 Codex 的能力边界变得越来越广了。自从它自带生图工具,玩法丰富了很多:我们用它做应用或者做游戏的时候,它可以天然地生成游戏素材和更精美的 UI,比传统纯生成代码的方式上限高了不少。

Codex 现在自己有一个好的编程模型,也有一个好的生图模型。假设未来 OpenAI 有更好的视频生成模型,Codex 的模态会变得越来越丰富,我们做复杂应用的难度也会越来越低。