DEVELOPER'S JOURNAL

NOTE 03 · FROM A SHEET TO A BODY

角色管线挣扎录——从设定图到刚体部件

让生成模型直接吐 3D 角色为什么翻车、后来走通的管线长什么样、没有骨骼的角色、哥布林的朝向、吸血鬼的披风和邪恶牛头人的一天四版。

这些是我自己写的记录,会提到失败、犹豫和还没做完的事。它描述的是现在,不是最终形态,也不是任何发售承诺。

前言

最开始的想法很朴素:设定图已经定了造型、配色和武器,模型无非是它的立体版本,把图丢给一个足够强的生成模型,让它直接吐一个能进游戏的角色,应该是最短的路。这条路走了,很快翻车。不是生成得不好看——经常挺好看的——问题是正视图和顶视图不是同一个物体的两个投影,握点在哪儿说不清,斧刃几个齿、剑多宽全变成“大概那个意思”。最要命的是没法对着一个语义模糊的网格说“这里错了”,因为说不出“这里”是哪里,说不清哪里错的东西也就没法修。

所以停了。工具不是不够强,是问题问错了:「给我一个能进游戏的角色」不是一个能判断对错的问题。这篇就记一下后来那条走通的管线,以及路上几次比较大的翻车。

管线

后来的做法是把大任务拆成一串很窄的环节,每一步都能单独说过或不过。

设定图不再是“参考”,而是结构合同:一张图上要有正、侧、背、顶几个视图,同一个身体、同一套衣服、同一只手拿武器、同样数量的挂点。任何要花钱的调用之前先做一轮零成本检查——是不是只有一个主体、各视图是不是同一个人、肢体全不全、尺寸对不对、顶视图是不是真正的正交顶视图。顶视图不一致就先改图,不让生成工具替一张不合格的输入背锅。

真正花钱的只有一步:让 Meshy 从这些视图出基础几何,不要贴图不要重拓扑,一次只回答一个几何假设。之后全是本地的确定性流程:修结构、修比例、拆件、绑颜色、装刚性部件、导进 Godot、实机验证,最后人工看一眼。机器合同全过仍可能被打回,这两道门是分开的。

顺带一提,这游戏里的角色没有骨骼。每个逻辑部件是一块合并的网格,共用同一个体素间距,动作是刚性部件的位移和旋转。体素角色本来就是分块的,刚性部件视觉上没损失;更重要的是可验证——一个部件要么在正确的位置要么不在,“蒙皮权重稍微有点怪”这种话没法写进校验器。

四个角色的高度比第二天就锁死了:哥布林 0.68,剑士 1.00,牛头人 1.72,霸主 2.45。这四个数字比任何一张图都有权威——生成图里的比例是压缩过的,好看但不算数,之后所有“它是不是太大了”的争论都拿这把尺子量。

实机截图:旅人广场上站着两名剑士、一只哥布林、一个牛头人和两个尚无正式形象的黑色人物,背后是石造拱门与小屋实机截图 · 开发中版本
广场上的展示角色,从左到右大概能看出那把尺子。两个黑黑的人是吸血鬼的占位形象。实机截图,开发中版本。

哥布林与牛头人

哥布林和普通牛头人的保真度恢复做了一个阶段又一个阶段,其中最难堪的一次是朝向:一条候选链完整派生完了才发现整个模型朝向是错的——哥布林的双耳探针读数为零,也就是它压根没朝前。整条链作废。从那以后规则变成最便宜的失败必须最先发生:朝向、肢体数量、剪影这类检查全排在任何颜色和武器工作之前。

7 月 19 日这条线叫停,原话是「目前在这两个模型上消耗了太多时间」。当时的版本不完美,但继续迭代的边际收益已经低于成本。叫停之后做了件比继续改更有用的事:把途中踩过的坑写成一张表,每条写清楚犯了什么错、浪费了什么、以后固定成什么规则。有几条现在是强制的:一个候选只回答一个假设,不许一次同时试颜色、拓扑、姿势和武器;沉没成本不改变门,“反正已经付过费了”是这个流程里最贵的一句话;武器不走付费几何,有独立武器板的时候永远本地做。

吸血鬼

吸血鬼是后来加的第二位旅人,形象改得最反复:披风做了好几版——三片、分离、合并、有一版停在半路被搁置、最后干脆从头重来。等披风终于安分下来,那天最后一条提交记录写的是「restore readable vampire hands」,把手改回能看出是手的样子;第二天又重做了下半张脸。

到今天,吸血鬼的玩法是完整的,三种语言的界面也齐了,但正式形象仍然停在审定里,游戏里上场的是占位的样子。名册上他的状态是「形象审定中」而不是「已确认」,这不是措辞谨慎,是事实。

邪恶牛头人

邪恶牛头人的重做集中在 7 月 30 日一天。第三版被否:身上大片白色体素,看着不像“邪恶牛头人”。第四版被否,是在咆哮那一帧上看出来的:解剖学左手腕读起来是断开的,武器的月牙形也不够像斧。第五版又被否:手腕要重做成一段连续的、从宽到窄的锥形护腕,斧要更大更锋利、齿更明显、看得出部族纹样。第六版从第四版的冻结状态重新派生——不叠在第五版上,被否的东西不当基础——终于过了。

第六版送审前还有一处小插曲:一次独立审计发现斧刃和斧柄之间有道缝,修法是加了个“锻造的斧座”,让刃和柄在任何角度都是一整块。被否的三版全部原样留在仓库里,一个字节没动。

名册

网站角色页上只有五位:剑士、吸血鬼、哥布林、牛头人、邪恶牛头人。没有剪影,没有“敬请期待”。不是仓库里没别的东西,是别的东西还没走完流程;在一个形象真正定下来之前,不太想用一个黑影去暗示它是什么样。按这个项目三十几天的历史,第一版几乎从来不是最后一版。

后记

这条管线上最实际的一条体会:生成模型在“把一个定义清楚的问题做完”上很强,在“替你定义问题”上很弱。第一次翻车不是工具不行,是给了它一个自己都没想清楚的任务;把「给我一个能进游戏的角色」换成「从这几张一致的正交视图里,产出一个满足这些约束的基础几何」,成功率立刻变了。另一条也许更重要:要给失败留位置——被否的第四版还在,朝向错误的那条链还在记录里。只允许成功留下的流程,记的不是真实过程,是事后整理出来的故事。