Conference

Discovering Fatigued Movements for Virtual Character Animation

Noshaba Cheema, Rui Xu, Nam Hee Kim, Perttu Hämäläinen, Vladislav Golyanik, Marc Habermann, Christian Theobalt, Philipp Slusallek

DFKI; Max Planck Institute for Informatics; Aalto University

一句话总结

本文提出首个面向全身物理仿真角色的”累积疲劳感知”深度强化学习框架:在不需要任何疲劳动作捕捉数据的前提下,让角色随着反复做高强度动作而逐渐变累、动作走样,并自发学会休息恢复策略。

研究背景

  • 领域现状:角色动画与运动合成近年靠大规模动捕数据加机器学习快速进步,物理仿真结合深度强化学习(DRL)尤其擅长产生可交互、可涌现的新行为。
  • 核心痛点:几乎没有工作把”人会累”这一生理变化建模进来。而直接捕捉疲劳动作代价高、风险大——让演员反复做后空翻直到力竭既不现实也易受伤。生物力学里少数疲劳建模工作要么依赖昂贵的肌骨模型,要么只在精心设计的单肢体场景里做,无法涌现全身的疲劳与恢复行为。
  • 本文 idea:不去捕捉疲劳数据,而是把生物力学里的三舱室控制器(Three-Compartment Controller, 3CC)疲劳模型接入 DRL:先学会做动作,再通过随时间、随状态动态收紧关节力矩上限,逼迫策略在”力气变小”的约束下自行摸索出疲劳表现和休息恢复策略。

方法

整体框架是一个两阶段流程:先用生成对抗模仿学习(GAIL)预训练一个能稳定完成技能动作的”专家策略”,同时自动估计各关节的最大力矩上限;再通过迁移学习,用 3CC 疲劳模型算出的剩余能力(Residual Capacity, RC)随时间调制这些力矩上限,让策略适应”力气逐渐流失又能在休息中恢复”的过程。

flowchart LR
  A["参考动作片段 M(无疲劳)"] --> B["GAIL 预训练专家策略"]
  B --> C["自动估计各关节最大力矩上限 Tmax"]
  C --> D["3CC 疲劳模型 → 剩余能力 RC(t)"]
  D --> E["按 RC 收紧力矩上限:受限力矩"]
  E --> F["迁移学习:策略适应力气流失"]
  F --> G["涌现疲劳动作 + 休息恢复策略"]

关键设计:

  • 3CC 疲劳模型作为生理内核:把肌肉运动单元(MU)分为活跃、疲劳、静息三种状态,用一组微分方程描述它们随目标负载在时间上的转移。疲劳系数 \(F\)、恢复系数 \(R\) 与间歇休息倍率 \(r\) 共同决定变累和恢复的快慢。剩余能力定义为 \(RC(t) = M_A + M_R = 100\% - M_F\),即当前还剩多少力气。相比肌骨模型,3CC 只需关节力矩即可驱动,计算便宜、与角色形态无关。

  • 用剩余能力约束力矩上限:每个自由度(DoF)的目标负载取 PD 控制器算出的关节力矩相对最大力矩的比值 \(TL_d(T_d) = \frac{T_d}{T_{max,d}} \cdot 100\%\),代表最大自主收缩百分比。疲劳后的力矩上限被 RC 缩放为 \(\tilde{T}_{max,d} = RC_d \cdot T_{max,d}\),实际施加的力矩被裁剪进区间 \(\tilde{T}_d \in [-RC_d \cdot T_{max,d},\ RC_d \cdot T_{max,d}]\)。这是硬约束,力气不够就是真的做不动。

  • GAIL 模仿目标 + 自动估计力矩上限:由于只有动作片段没有动作标签,判别器训练在状态转移 \(D(s, s')\) 上而非状态-动作对上,奖励定义为 \(r_t = -\log(1 - D(\Phi(s_t), \Phi(s_{t+1})))\)。预训练顺带自动记录每个 DoF 的最大力矩 \(T_{max,d} := \max(T_d, T_{max,d})\),免去手动或网格搜索该超参;并对左右对称关节取最小值以贴合”低能耗动作更自然”的先验。

  • 单三元组训练、多三元组推理:策略只用单一 \((F, R, r)\) 三元组训练,却能在推理时泛化到新的组合。原因是单个三元组本身就对应随时间变化的多种 RC 水平,因此可在运行时通过调 \((F, R, r)\) 交互式地把同一角色从”高体能”调到”低体能”,无需任何疲劳参考动作。为让身体能整体放松/绷紧,动作里还额外输出刚度/阻尼调制系数 \(\beta_t\)。

实验结果

在 Isaac Gym 中用 28 自由度人形角色评估五个动作:后空翻、侧手翻、单脚跳、行走、以及 360 龙卷风踢腿。主实验用”生成帧与动捕片段中最近帧的归一化关节角平均欧氏距离”衡量与原始动作的偏离程度——距离越大说明越偏离原始无疲劳动作,即越能合成数据中不存在的疲劳变体。

方法 后空翻 侧手翻 单脚跳 行走 龙卷风踢
AMP(基线,仅模仿) 0.18 0.24 0.16 0.23 0.24
本文(疲劳感知) 0.44 0.25 0.32 0.36 0.32

本文方法在所有动作上与原始动捕的距离都更大,说明它合成出了数据中不存在的疲劳动作与恢复策略,而 AMP 只能复刻已有动捕、无法体现随时间的疲劳变化。定性上观察到多种涌现行为:踢腿高度和腿间距下降、后空翻变低且收腿增多、侧手翻后靠站立/走动来恢复、单脚跳的高度与频率下降、行走速度与步幅减小,以及在动作间隙自发等待恢复。与 Cheema 等人基于奖励的疲劳建模相比,基于奖励的软约束无法真正对应到应剩的力气水平,且与模仿奖励组合时会被策略”钻空子”,本文的力矩硬约束则忠实反映剩余能力。

亮点与局限

  • 亮点:
    • 首个全身物理仿真角色的疲劳与恢复涌现框架,完全不需要疲劳动作数据。
    • 疲劳系统只基于关节力矩,计算开销小、可实时交互,且因 3CC 与形态无关而可迁移到不同体型的角色。
    • 单三元组训练即可在推理时交互式调节体能水平,一套策略覆盖从高体能到低体能的连续谱。
  • 局限:
    • 整个角色共用一组 \((F, R, r)\)(为易用性与交互性的设计取舍),未按关节区分真实的耐力差异。
    • 依赖 3CC 疲劳模型的假设与参数设定,本质是对生理疲劳的近似而非精确肌肉级建模。
    • 评估集中在少数体育竞技类动作,更广泛动作与真人对照的定量验证有限。

延伸思考

  • 力矩上限硬约束的思路可推广到其他”能力随状态/时间变化”的场景,如受伤、负重、低温僵硬等生理或环境退化建模。
  • 若把全身单一 \((F, R, r)\) 拓展为分关节参数,并结合真实肌电/耐力数据标定,或能进一步提升生理真实感,用于运动科学、康复训练或人机工程分析。
  • 与更强的高层动作规划器或多技能策略结合,有望让疲劳感知角色在长程任务中自发安排”发力—休息”的节奏,贴近真实运动员的配速行为。