Conference

MuscleVAE: Model-Based Controllers of Muscle-Actuated Characters

Yusen Feng, Xiyan Xu, Libin Liu

Peking University

一句话总结

本文提出 MuscleVAE,一个面向肌肉驱动角色的”模拟 + 控制”框架:把肌肉疲劳动力学纳入 Hill 型肌肉模型,用一种肌肉空间的 PD 控制策略解决高自由度肌肉系统的控制难题,并借助基于世界模型的 VAE 从无结构动作数据中学到既编码运动、又编码肌肉控制与疲劳的隐空间。

研究背景

  • 领域现状:相比刚体角色动画,肌肉驱动角色能产出更真实、更符合生物力学的动作,但进展缓慢。主流做法(如 Lee 等人的工作)采用两级控制:先用强化学习学关节级 PD 控制,再训练一个网络把关节力矩”翻译”成肌肉协同。
  • 核心痛点:其一,肌肉驱动空间维度极高(本文角色有 284 条肌肉),仿真慢、训练难;其二,以关节力矩作为驱动信号并不能准确刻画肌肉激活的生物力学模式,且易在特定力矩区间过拟合;其三,疲劳这类重要生理因素在动画研究里鲜有作为完整系统的一部分被建模。
  • 本文 idea:直接在肌肉空间里控制角色——给每条肌肉纤维挂一个 PD 伺服,让策略输出目标肌肉长度;同时把 3CC-r 疲劳模型整合进肌肉模拟器,并用基于世界模型的 ControlVAE 思路学习生成式控制策略,让策略随疲劳水平自动调整运动模式。

方法

整体框架:MuscleVAE 的目标是学到一个隐空间 \(\mathcal{Z}\) 与策略 \(\pi(\boldsymbol{a} \mid \boldsymbol{s}, \boldsymbol{z})\)。从隐空间取一个隐码 \(\boldsymbol{z}\),策略据当前角色状态把它解码成动作向量 \(\boldsymbol{a}\);动作经肌肉空间控制转成肌肉力,驱动角色完成某个技能。训练借助一个可微的世界模型替代真实仿真,从而用梯度优化 VAE 目标。

flowchart LR
  A["动作数据集(无结构)"] --> B["后验编码器 q(z|s,s~)"]
  B --> C["隐空间 Z"]
  C --> D["策略 pi(a|s,z)"]
  D --> E["肌肉空间 PD 控制 + 3CC-r 疲劳"]
  E --> F["肌肉力 f"]
  F --> G["刚体仿真 / 可微世界模型"]
  G --> H["重建动作与肌肉长度"]
  G -.状态反馈.-> D

关键设计:

  1. 肌肉动力学 + 疲劳动力学:肌肉沿用 Hill 型三元件模型,肌肉力由收缩元与并联弹性元共同决定: \[f_m = \alpha f^{l}_{CE}(\bar{l}) f^{v}_{CE}(\dot{\bar{l}}) + f_{PE}(\bar{l})\] 其中激活水平 \(\alpha \in [0,1]\)。疲劳则用 3CC-r 模型:把每条肌肉看成大量”肌腱执行器”,分处激活 \(M_A\)、静息 \(M_R\)、疲劳 \(M_F\) 三个隔室,按一组微分方程演化,如 \(\dot{M}_A = C(u) - F \cdot M_A\)。这里 \(M_A\) 恰好等价于激活水平 \(\alpha\),把疲劳自然嵌入了力的生成。

  2. 肌肉空间 PD 控制(核心贡献):直接用激活信号作动作空间收敛很差。作者改为在肌肉层做类 PD 控制,力为 \[f_{pd} = \max\left(0,\, k_p \cdot (\tilde{l}_M - l_M) - k_d \cdot \dot{l}_M\right)\] 目标肌肉长度由动作决定 \(\tilde{l}_M = (a + 1.0) \cdot l^{tpose}_{M}\)。由于激活受 \([0,1]\) 约束且随疲劳演化,PD 力未必可实现,于是解析地推出可行力的上下界 \([f_{lb}, f_{ub}]\)(分别对应目标载荷 \(u=0\) 与 \(u=1\)),再把力裁剪进该区间 \(f = \mathrm{clip}(f_{pd}, f_{lb}, f_{ub})\)。PD 引入的局部反馈回路让系统能自我修正,显著改善训练。整套流程可微,记作 \(\tilde{\boldsymbol{\alpha}}, \boldsymbol{s}_{muscle} = D(\boldsymbol{s}_{skeleton}, \boldsymbol{s}_{fatigue}, \boldsymbol{a}, \boldsymbol{\alpha})\)。

  3. 基于世界模型的 VAE 训练:仿照 ControlVAE,把不可微的仿真当黑盒,另训练一个可微世界模型 \(\boldsymbol{s}^{t+1} = \omega(\boldsymbol{s}^{t}, \boldsymbol{a}^{t})\) 近似动力学,用它评估目标以便梯度优化。总目标 \(\mathcal{L}_{VAE} = \mathcal{L}_{rec} + \beta \mathcal{L}_{kl} + \mathcal{L}_{act}\):重建损失同时约束骨骼状态与肌肉长度;KL 项让后验贴近状态相关先验 \(p(\boldsymbol{z} \mid \boldsymbol{s})\);激活正则 \(\mathcal{L}_{act}\) 用 \(L_1/L_2\) 抑制过度用力,符合最小生物能耗。世界模型与 VAE 组件交替训练、彼此冻结;因肌肉系统对世界模型累计误差更敏感,额外加了一次可微前向运动学以抑制误差。

  4. 疲劳鲁棒性与下游任务:训练时在每段 rollout 开始随机设定疲劳状态,使策略在不同疲劳配置下都稳健;状态里显式包含疲劳态 \(\boldsymbol{s}_{fatigue}\),让控制随疲劳自动切换策略。冻结 MuscleVAE 与世界模型后,可再训练一个在隐空间输出隐码的高层目标策略 \(\pi(\boldsymbol{z} \mid \boldsymbol{s}, \boldsymbol{g})\) 完成下游任务(如速度/朝向控制)。

实验结果

角色高 1.68 m、重 61.4 kg、23 个刚体、22 个关节、284 条肌肉;肌肉与疲劳动力学以 120 Hz 运行,MuscleVAE 策略以 20 Hz 运行(一个动作复用 6 个仿真步),系统整体实时。训练数据约 25 分钟、取自 LaFAN 数据集的多种运动技能。评测覆盖跟踪、生成、疲劳三类任务:可跟踪未见过的相似运动并平滑切换;从先验随机采样能生成多样高质量动作;疲劳会随激活自然累积并改变动作风格,休息后可恢复。

消融实验是最直接的定量对照——用学习曲线比较肌肉空间 PD 控制与”直接用激活信号”的原始控制(其余网络配置完全一致):

控制策略 能否学到可行策略 平衡与训练表现
肌肉空间 PD 控制(本文) 奖励持续增长,角色可稳定完成复杂技能
原始激活信号控制 不能 无法维持平衡,奖励早早停滞、不再增长

此外,把 3CC-r 的疲劳/恢复系数放大到训练值的 5、10、25 倍,角色仍能在训练好的 MuscleVAE 下运动,只是更快进入疲劳、风格变化更剧烈,显示对疲劳参数的鲁棒性。

亮点与局限

  • 亮点:
    • 用肌肉空间 PD 控制替代关节级两级控制,绕开”关节力矩→肌肉协同”的翻译环节,且引入局部反馈回路,明显改善高维肌肉系统的训练稳定性。
    • 把疲劳当作完整肌骨系统的有机组成部分,能自然产出因疲劳累积而演化的运动风格(如手臂逐渐下垂、跑姿变弱、休息后恢复)。
    • 借助可微世界模型的模型式学习,样本效率与训练稳定性优于模型无关方法,且隐空间可直接支撑多种下游任务。
  • 局限:
    • 大量仿真与控制参数借自面向人体的现有文献,未必匹配本文角色,可能不准确。
    • 未建模肌肉协同,各肌肉独立控制,偶有主动肌与拮抗肌同时激活的非生物力学现象。
    • 目标是忠实复现参考动作,若参考动作物理上不可行(如重定向误差导致腿部自穿插、失衡的马步)会产出跌倒或摇晃等瑕疵;且训练目标未考虑疲劳,角色常坚持到失衡为止。

延伸思考

本文可视为 ControlVAE 从关节驱动到肌肉驱动的一次扩展,核心增量是”肌肉空间 PD 控制 + 疲劳动力学”。一个自然的追问是能否从动作或体测数据自动标定那一大堆生理参数,减少对人体经验值的依赖;另一个方向是把疲劳从纯机械效应上升为风格要素——当前疲劳只改变力的可行域,若能显式建模”疲劳→动作风格”的转变,可能生成更有表现力、更拟人的长时运动。此外,缺乏肌肉协同建模是通往真正生物力学精度的明显缺口,引入主动肌/拮抗肌/协同肌关系或有助于消除同时激活等不自然现象。