枢纽
实时

MotionBricks:像搭乐高一样「拼」出实时动作

Tingwu Wang, Olivier Dionne 等(NVIDIA + ETH + SFU + UT Austin)。ACM TOG Vol.45 No.4,2026 年 7 月;arXiv:2604.24833。 开源于 nvlabs.github.io/motionbricks · action_genmotion synthesisreal-time

🧠 一句话心智模型:游戏工业里管动作的「动画状态机」(如《刺客信条》15000 段动画、5000 个状态、12 层嵌套)维护不动了,而学术界的扩散/自回归动作模型又跑不到实时。MotionBricks 提出「低层一个超大生成模型管所有动作 + 高层两个 smart primitive 当乐高积木」:用 35 万段动捕数据训一个 latent 生成主干,再加「smart locomotion」和「smart object」两个积木式接口,2ms 延迟 / 15000 FPS、零样本上 Unitree G1 真机

🎯 为什么重要:游戏工业的动画图 vs 学术界的扩散模型,两边都卡住

实时动作控制是游戏和机器人的基础能力,但两条主流路线都遇到了瓶颈:

核心矛盾
① 工业动画图(state machine)——把预录片段连成状态机,scale 不动。AAA 大作要管理 15000+ 动画、5000+ 状态、12 层嵌套,扩展和维护几乎不可能,只有大工作室玩得起。
② 生成式模型(扩散、token-based)——质量好、多样性高,但太慢。Diffusion 几秒到几分钟才能生成一段;自回归 token 模型勉强能实时但精度差。两边都没法满足工业级互动需求。

MotionBricks 来自 NVIDIA,目标明确——做出能上产线的实时生成式动作系统。所以它的成功标准不只是「指标好」,而是「真在 UE5 里跑、真在 G1 上部署、真在 RTX 5090 上 2ms 出一帧」。

💡 核心思想:低层一个生成主干 + 高层 smart primitive 当乐高

Stage 0 · Smart Primitives(积木接口,零训练) 🚶 Smart Locomotion(导航) 🪑 Smart Object(物体交互) 用户命令 / 游戏事件 → smart primitive 自动生成关键帧 Stage 1 · Root Module 从关键帧约束 → 预测时长 + 根轨迹 (50M 参数 transformer) Stage 2 · Pose Module 多 latent pose token 分布建模(粗→细) (150M 参数 transformer) Stage 3 · Token Decoder → 连续动作 Multi-head Tokenizer root-pose 解耦 K 个 codebook 每头 128-256 token 总计 ~10⁹ 容量 ⏱ 2ms / 帧 · 15000 FPS
图 1(据论文 Fig.2 重绘):四阶段流水线。Stage 0 是可设计的积木接口(用户配),Stage 1-3 是固定预训练的神经主干(一次训练,所有应用复用)。

核心结构哲学:「in-betweening」作为底层范式。把所有动作统一成「给定起始/目标关键帧 + 中间补全」的问题。smart primitive 负责把高层意图(「走过去」「开门」)翻译成关键帧,神经主干负责把这些关键帧连成连续动作。所有任务、所有应用,都通过同一组关键帧接口和主干交互——这就是「积木」的意思。

🛠️ 三个让生成模型实时 + 可 scale 的关键设计

设计心智为什么必要
① 多头 tokenizer(root-pose 解耦)把动作的 root 和 pose 分开编码;pose 用 K 个独立 codebook 量化,每个头 128-256 token,总容量可达 10⁹单头 VQ-VAE 在大容量时性能饱和(论文 Fig.10)。多头让模型容量随 codebook 规模持续涨,这是 35 万段数据能被吃下的前提
② 粗→细的渐进生成Root Module 先出根轨迹和大致时长;Pose Module 在此基础上预测 pose token 分布;最后 decoder 还原连续动作层级化让每一步只解决子问题,避免端到端生成的「不可诊断」。中间结果可检查、可干预,这对工业部署至关重要
③ Smart Primitive(高层积木)Smart Locomotion:从速度/方向命令生代理关键帧,并神经细化根轨迹;Smart Object:基于物体几何自动放置交互关键帧(带 socket / 锚点旋转)底层主干不懂「游戏事件」和「物体语义」。primitive 是主干和应用的接口,让非动画师也能 10 分钟内配出新交互——这才是「scale」的真正含义
🔮 直觉:为什么不直接训一个超大端到端模型?
端到端模型有「黑盒病」——出问题不知道改哪、配新场景要重训。MotionBricks 把「低层动作生成本领」(35 万段训一次就够)和「高层交互设计」(每个游戏/机器人都不同)彻底分开:主干是一次训练、终身复用的基础设施,primitive 是每个应用自己搭的乐高。这种「基础设施 vs 应用层」的分层,正是工业级系统的方法论。

📊 结果:35 万段数据训一个模型,2ms / 15000 FPS 远超实时

方法延迟FPSFID ↓Win Rate ↑Reaching Success ↑
Cond. Inbtwn. (2022)2.4ms27,0001.5940.8%87.7%
CondMDI (2024, 扩散)33.2ms1,9301.21315.6%61.3%
MMM (2024, token)18.1ms3,6001.54419.9%34.8%
Closd-DiP (2025, 扩散)15.3ms4,2001.29215.1%75.7%
MotionBricks(本文)2ms15,0001.05486.5%99.6%

表:350k 数据集上的核心指标对比(来自论文 Tab.3)。MotionBricks 同时拿下速度分布质量人评关键帧精度四个维度。

维度数字(来自原文)
训练数据35 万段动捕(约 700 小时,9300 个独立技能,36 类,163+ 表演者)
主干规模tokenizer 23.5M + root module 50M + pose module 150M(~220M 总参数,32× H100 GPU,约 17 天)
实时性能RTX 5090 上 2ms 延迟、15,000 FPS 吞吐(远超实时)
关键帧精度Reaching Success 99.6%(基准最好水平 ~87%),关节误差最低
物理可信性Foot Skate 0.003 m/frame(最低)、Foot Contact Accuracy 92.6%(最高)
机器人为迁移LaFAN1-G1 数据集(34 个关节,含末端执行器)训练 + G1 真机部署
真机部署Jetson Orin + Unitree SDK,5ms/帧(Orin 算力受限),10Hz 重规划,配合 Luo et al. 2025 的 tracking controller
人评40 人用户研究:Win Rate 86.5%,Likert 评分 4.06/5(SOTA)
关键洞察:值得注意的对比是「同样快的方法质量差,同样质量的方法慢」。Deterministic baseline(Cond. Inbtwn.)够快但 FID 差、Win Rate 几乎为零;diffusion 方法质量好但 30-60ms 延迟。MotionBricks 在两个维度上同时领先——这意味着它不是在帕累托前沿上移动了一个点,而是把整条前沿往右下推。这是「Scale + 多头 tokenizer + 渐进生成」三者合力的结果。

🌐 在领域中的位置

PFNN / motion matching(确定性,scale 不动) MDM / MMM(扩散/token,质量好但慢) MotionBricks(生成式 + 实时 + 可 scale)⭐ SONIC 等机器人运动 token 模型

MotionBricks 的位置是「生成式动作模型首次达到工业级实时 + scale」。它的方法论(生成主干 + smart primitive 分层)对机器人领域有直接启发——「低层技能生成 + 高层任务接口」的分层架构,正是当下 humanoid robot 学界也在探索的方向(如 ASE、CALM 的潜在空间组合)。它也直接和 SONIC(NVIDIA 同期的机器人 token 模型)形成对照:同代、同公司、不同 tokenizer 和应用域。关联线索:T08 动作生成谱系

❓ 常见误区

2ms 延迟 / 15000 FPS 听起来太夸张了,是不是作弊?

不是。这是「生成两关键帧之间的动作」的耗时,不是端到端游戏帧延迟。MotionBricks 是 autoregressive 的:每次生成一段动作塞进 buffer,运行时从 buffer 弹帧,命令变了或 buffer 空了才重新生成。所以 2ms 是「一次规划的开销」,最终游戏帧率取决于 UE5 渲染(通常 30-60 FPS)。

生成动作跑得这么快,质量会不会差?

恰恰相反。FID(分布质量)1.054 是所有方法里最低(最好);人评 Win Rate 86.5%(40 人用户研究);Reaching Success 99.6%。论文的关键论点是「scale 还没饱和」——多 head tokenizer 让模型在大 codebook 上仍能持续学习,不像单头 VQ-VAE 早早就饱和了。

那它能直接拿来控制 Unitree G1 吗?

能,但要配合 tracking controller。MotionBricks 输出的是运动学动作(关节位置等),不是动力学控制。真机部署时把它生成的动作当作 tracking target,喂给 Luo et al. 2025 的物理跟踪策略。这是「规划-控制分离」的范式——也意味着 MotionBricks 的输出需要满足物理可行性(论文 limitation 里承认它偶尔会生成自碰撞或超硬件极限的动作)。