FRUITICECAKE REC · 00:00:00:00

[00:00:00] 技术文档 / 3D · 计算机视觉

让 AI 给任何怪物做骨骼动画

人类有动捕和 Mixamo,怪物什么都没有。双机位消除深度歧义,用怪物自己的渲染训练关节识别器,再用一场自动考试守住质量。

2026-10-2011 MIN READSRC · Can It Code?
// TL;DR别让 AI 去「猜」动画,让视频模型「表演」,再用几何和一个只为这只怪物训练的小模型把表演「读」回骨架。一只怪物从 4 天人工逐帧校对,缩短到几分钟。

本文整理自 YouTube 频道 Can It Code? 的视频《AI Can Now Animate Any Monster》(2026-10-17,9 分 19 秒),加入了我的理解和图解。章节标题里的时间码可以对照原视频跳转。

[00:00:00]

为什么怪物没有「动捕」

给人做动画很容易:有动作捕捉,有 Mixamo,背后是海量真人运动数据库,AI 有足够的东西可学。但巨魔、双足飞龙、拿剑的半人马呢?世界上没有怪物的运动数据库,所以也没有现成工具——至少还没有公开的。

作者的目标是:四条腿、两条腿、带翅膀、带尾巴、拿着剑,任何怪物都能动起来,而且不手动修一帧。

[00:01:20]

不做动画,只「拍」动画

故事从游戏里的一只鹿开始。先让 Opus 用代码写走路关键帧,结果是僵硬的「方块步」;换上 Tripo 生成的更好的模型,同样的代码走路,还是不像真动物。

于是有了一个疯狂的想法:根本不做动画,直接「拍」。用 AI 视频模型 Seedance 生成一段这只鹿走路的视频,再把视频「抄」到骨架上——每一帧由 Opus 写的脚本摆好模型姿势、渲染、检查轮廓是否和视频吻合。

对鹿来说勉强能用,但暴露出两个根本问题:

  1. 认错腿:侧面看过去腿不停交叉,脚本分不清哪条是哪条,只能让 Opus 回头逐帧手动标脚。农夫角色也一样,近侧腿和远侧腿老是搞混。
  2. 没有深度:举石头的人和视频几乎逐像素吻合,但一看三维全是错的。视频是平的,像一张照片,脚本只能猜每个部位离镜头多远——而它猜错了。

[00:02:27]

一张图里,放两台相机

先说 Seedance 的一个特性:同一张图、同一句提示词跑两次,会得到两段不同的视频。所以分别生成正面和侧面行不通,两段动作永远对不上。

解法是给 Seedance 一张「左边正面、右边侧面」的拼图,让它生成拼图视频。两个视角在同一段视频里,动作天然同步。有了两台相机,一个点在空间中就只能在一个位置——两条视线在这里相交,深度问题消失了。回头看首屏的红色对极线:同一个关节在两个画面里的高度永远相同。

MODULE_01 · 三角测量DRAG / ← ↑ → ↓

静态版图解:正面相机能确定关节的左右(x)和高低(y),侧面相机能确定前后(z)和高低(y)。从两台相机各引一条视线,两条线只会在空间中的一个点相交——这个点就是关节的真实 3D 位置。只有一台相机时,同一条视线上的所有点在画面里都重合,这就是「认错腿」和「没有深度」的共同根源。

切到「只有侧面相机」:同一条视线上的所有点在侧面画面里重合——这就是「认错腿」和「没有深度」的共同根源。

然后脚本报告「84% 匹配,所有检查通过」。打开实验室一看,大部分帧都是坏的。最后还是 Opus 把视频和模型上下对照,逐帧找出坏帧修好。

可以用,但太贵:一只巨魔要 Opus 花 4 天、消耗大量 token。目标于是变成——一个工具,任何怪物、任何动作,零人工修帧。

[00:03:22]

六条走不通的路

作者把能找到的方法挨个试了一遍。每一条都在同一个地方栽跟头:分不清哪条腿是哪条,或者只适用于真实动物。

MODULE_02 · 失败方法日志 · 6 / 0 通过HOVER
方法思路为什么失败结论
点追踪(Google DeepMind)第一帧是自己的渲染,已知每个像素属于哪块身体,逐帧追踪几步之后点就滑到身体上,腿上一个点都不剩腿上的点丢光
轮廓分割(Meta · SAM 2)每条腿一个轮廓奔跑时腿糊成一片,远侧腿消失或跳到胸口,前后腿颜色互换分不清哪条腿
单图深度(Depth Anything)用深浅判断哪条腿在前两条腿只差约 10 cm,模型分辨不出正确率 4/10
给腿涂色(手工技巧)每条腿穿一种颜色的「袜子」完全依赖 Seedance 每次都画对颜色;六肢怪物不够用不稳定,难推广
动物姿态检测(真实动物照片训练)数千张动物照片训练的关键点检测侧面把远侧腿画到肚子上,正面一团乱视角一变就崩
MoCapAnything(最新研究)用真实动物动捕数据训练狼跑起来是歪的,飞奔也不对;对怪物无效只认识真实动物

「给腿涂色」最接近成功:每条腿一种颜色的「袜子」,Seedance 也确实保住了颜色。但这让一切都押在 Seedance 每次都画对颜色上——而它从不生成两次相同的视频。何况狼只有四条腿四种颜色,六肢的半人马、带翅膀的龙怎么办?

[00:05:29]

重新思考:把问题化简成一件事

停下来重新想。如果两台相机都知道某个关节在画面里的准确位置,3D 部分就只是一次简单的几何映射——两条线一交,完事。所以:

整个难题只剩一件事:在每一帧里,找到每一个关节,并且知道它是哪一个。

第一步:先给怪物一副骨架

每只新怪物都需要骨架,这成了工具的第一步。作者用 UniRig——一个看着 3D 模型、在内部画出骨骼的 AI。它不错,但不完美:四次尝试里有骨头戳出体外的,也有整条腿没骨头的。所以工具拿每次结果去对照模型本身打分,保留最好的一副,再把手指收进手掌、裁掉戳出体外的部分。

MODULE_03 · 绑骨择优AUTO

UniRig 跑多次,每次按三条规则打分,保留得分最高的一副:

  1. 每条着地的腿都必须有骨骼;
  2. 左右两侧必须对称;
  3. 骨骼必须都在模型体内。

选中后再修整:把手指收进手掌,裁掉戳出体外的骨骼。

[00:06:27]

一个只认识这只巨魔的 DINO

骨架有了,难的是在视频里找到这些关节。没有任何现成工具能读懂这只巨魔,因为没有任何 AI 见过它。但作者有比数据库更好的东西:巨魔本身。

做法是拿 Meta 的 DINO——一个已经看过数百万张图片的视觉模型——只教它一件事:找到这只巨魔的每个关节。训练数据是把巨魔在两台相机下渲染成 3000 个随机姿势。因为图是自己渲染的,每个关节在哪里都精确已知,标注是免费且完美的。

而且要故意「做难」:大约一半的姿势是快速动作,手脚带着运动模糊——因为 Seedance 给出的视频就是这样。试试下面的生成器,关掉某一步,看看训练图会缺什么:

MODULE_04 · 合成数据生成器TOGGLE / NEXT

每一张训练图都这样生成:

  1. 随机弯曲每个关节,但不超过真实关节的活动范围;
  2. 随机转身,让模型见过各个角度;
  3. 给快速运动的部位加运动模糊——约一半姿势是快速动作;
  4. 再故意劣化:模仿 Seedance 的光照、色偏和模糊的手臂。

无论哪一步,关节坐标都在渲染时直接得到,不需要人工标注。

DINO 在这一只巨魔上学这一件事,在作者的显卡上大约 30 分钟。之后读一段 Seedance 视频,每个关节在两个画面里逐帧亮起,只要几秒。

[00:07:40]

考试:不靠人眼的质量保证

怎么确定工具读对了,又不用人逐帧检查?给它出一场考试。对每一只怪物——哪怕是全新的——自己编一段动作:每个关节在活动范围内随机运动,用同样的双机位在「摄影棚」里渲染成视频。因为动作是自己编的,每一帧每个关节的位置都是标准答案。工具像读 Seedance 视频一样读它,然后逐骨骼和答案比对。

MODULE_05 · 回归考试SWITCH BUILD

考试流程:

  1. 自己编一段动作:每个关节在活动范围内随机运动;
  2. 用同样的双机位渲染成视频;
  3. 因为动作是自己编的,每一帧每个关节的位置都是标准答案;
  4. 工具读视频,逐骨骼和标准答案比对。

工具的任何改动,都必须让所有怪物通过考试,否则不合入。

新的蜥蜴怪在花一分钱买 Seedance 视频之前就先过了这场考试;工具的任何改动,都必须让所有怪物通过考试,否则不合入。

考试之外还有一道入场检查:Seedance 视频进来之前,先确认左右两半是不是同一个动作。Seedance 偶尔会在两半里各演一个动作,这时重新生成比修复更快。

[00:08:32]

深度,第二次机会

还记得 Depth Anything 吗?作者想:能不能把深度图和双机位结合,让结果更好?既然自己的渲染里也知道每个关节离镜头多远,干脆也训练一个专属深度模型。

MODULE_06 · 哪条腿更近?10 FRAMES

「哪条腿更近?」同一段奔跑里:

  • Depth Anything(通用单目深度):10 次对 4 次;
  • 专属深度模型(用这只怪物的渲染训练):每一次都对;
  • 双机位几何:两条视线直接相交,本来就知道深度。

同一段奔跑里,专属模型每一次都选对了更近的那条腿;Depth Anything 10 次只对 4 次。但和双机位结合后,结果几乎没变——两台相机本来就看得见深度。那它能替代第二台相机吗?还不能:它知道哪条腿更近,但不知道到底近多少。

[00:09:08]

从 A 到 Z 的流水线

把所有环节串起来:

MODULE_07 · 完整流水线CLICK / ← →
  1. 建模(Tripo):用 Tripo 生成怪物的 3D 模型。→ 怪物网格
  2. 自动绑骨(UniRig):AI 在模型内部画骨骼;跑多次按规则打分择优,再收拢手指、裁掉戳出体外的骨头。→ 骨架
  3. 双机位参考图(渲染):把怪物的正面和侧面拼进同一张图,让两个视角永远同步。→ 正面 + 侧面拼图
  4. 生成表演(Seedance):视频模型负责「演」:跑、跳、挥剑,任何动作。→ 动作视频
  5. 视频质检(质检):先确认左右两半是同一个动作;不一致就重新生成,比修复更快。→ 通过 / 重拍
  6. 专属关节识别(DINO):用这只怪物的 3000 张合成渲染微调 DINO,约 30 分钟;读视频只需几秒。→ 两视角 2D 关节
  7. 三角测量(几何):两条视线交汇,还原每个关节的空间位置。→ 逐帧 3D 姿态
  8. 落地(Blender):写回骨架,导入 Blender,直接进游戏。→ 游戏动画
TIME / MONSTER4d~min每只怪物的处理时间
SYNTH FRAMES3000张合成渲染,标注免费
FINETUNE30min单卡微调 DINO,每只怪物一次

[RESULT]

结果与局限

  • 适用范围四条腿、两条腿、翅膀、尾巴、拿剑都行;新怪物(蜥蜴、老鼠)没有手动修过一帧。
  • 成本一只巨魔从「Opus 逐帧校验 4 天 + 大量 token」变成几分钟。学习只需每只怪物一次,之后可以生成任意多的动作。
  • 局限 1如果 Seedance 在两半画面里演了两个不同的动作,工具只能跟随其中一个。
  • 局限 2被身体挡住的手,仍然是猜的。

[NOTE]

我的收获:四条可迁移的方法论

  1. 几何约束胜过模型猜测。能用多视角把歧义消掉,就别指望单目模型去猜深度。专属深度模型再准,也补不上双机位已经给出的信息。
  2. 用自己的资产合成标注数据。通用模型没见过你的东西,但你能无限渲染你的东西,标注免费且完美。关键是把渲染「做坏」到和真实输入一样。
  3. 先造考试,再花钱。一段已知答案的合成动作,比任何「84% 匹配」的自评指标都可靠,而且能挡住每一次退化。
  4. 把模糊问题化简为可测量的子问题。「让怪物动起来」很难评估;「每帧找对每个关节」可以逐骨骼打分。

[REF]

参考

  • 原视频:AI Can Now Animate Any Monster. Opus 5.5 Built the Tool — Can It Code?
  • 文中提到的工具:Tripo(3D 生成)· UniRig(自动绑骨)· Seedance(视频生成)· SAM 2 · Depth Anything · DINO · MoCapAnything
  • 页面中标注「示意」的数值和图形为图解,不是视频公布的数据。