一段网球视频,两种身体:在 Mac 上复现角色与智元 A3 动作
我想试一件具体的事:让视频里的网球动作,换到自己的角色和智元 A3 上。两段对比视频已经做出,动作也能在 Blender 中编辑。这篇记录怎样跑通、哪里出过错,以及这些动作数据下一步能怎么用。

从项目说明,走到两段能看的视频
起点是 Mixamo LLM Mocap。它把视频动作估计、角色适配和 Blender 动画串成一条可由脚本执行的流程。我读完说明后,想验证一个更直接的问题:这套办法能不能在自己的 Mac 上运行,并用到手里的模型?[1]
于是选了 GVHMR 官方仓库里的网球样例。统一到 30 fps 后,片段有 313 帧,约 10.43 秒。先让一个 Q 版角色复现,再让智元 A3 的数字模型跟着做。两次使用同一份人体估计,方便看出不同身体需要怎样适配。[2]
先看结果。下面两段都是原视频与模型逐帧并排,准备、抬臂、挥臂和落地都在同一时间轴上。A3 使用普通 T3.0 型号;画面中的手保留模型固定造型,没有单独恢复球拍、球和手指动作。
先还原人体,再考虑换成哪种身体
视频只有画面,没有直接可用的三维关节数据。GVHMR 负责从画面估计人体运动;SMPL-X 则是描述人体形状和关节的参数模型。得到这层中间结果后,才能讨论把动作放到角色还是机器人上。[2]
原项目主要面向 CUDA 环境。这次在 Mac 上使用 GVHMR 的 Apple Silicon 分支:预处理用 MPS,也就是 Apple GPU 的计算接口;动作网络沿用该分支的 CPU 路径。因此,本次不能笼统说成“全程 GPU 推理”。[3]
我先检查本机运算和合成动作链路,再取得并校验所需的人体模型,运行真实视频。跟踪抽查确认目标是前景运动员。输出的人体关节旋转和根部轨迹成为两次适配的共同输入;它们仍是三维估计,没有独立测得的三维真值。
角色能动之前,先把骨架和脚摆对
手里的 nihong FBX 是一个已经蒙皮的 Q 版持枪角色,但只有 10 根简化骨骼,初始姿态也不是双臂平举的 T-pose。蒙皮是把网格顶点关联到骨骼,骨架不完整时,有动作数据也无法正常驱动全身。
我保留原文件,调整基准姿态并重绑为 65 根人形骨骼,再用 Mixamo LLM Mocap 的旋转重定向写入动画。“重定向”可以理解为:保留动作关系,按新身体的骨长、坐标和初始姿态重新表达。[1]
换成短腿角色后,实际蒙皮出现穿地,需要按脚部网格修正高度。还有一个更直观的错误:回看视频时,我们发现左脚朝后了。原因在重绑时误判了脚尖方向,静止模型就已经摆反,单改动画不能解决。
修正左脚静止朝向后,我复用人体估计,重新生成动画、FBX 和预览。313 帧脚部方向检查通过,团结 2022.3.62t14 的 Humanoid 与 Animator 播放也完成验证。指骨已经建立,手指还没有逐指蒙皮。


换成 A3,不能直接复制角色的骨骼动画
机器人由刚性连杆和机械关节组成。官方 A3 模型提供 URDF,其中描述了连杆连接、旋转轴及关节限制。这次下载四套官方模型,实际选择普通 A3 T3.0,并固定所用版本。[4]
A3 没有沿用角色的短腿接地结果。我从共同的人体估计出发,转换为机器人的坐标系,按上臂、前臂、大腿、小腿的方向分别求解关节角。逆运动学,就是从希望得到的姿态反求各关节应该转多少。
求解时加入官方角度范围和相邻帧的离散速度上限。31 个活动关节、313 帧中,角度越界为 0,离散速度越界为 0。但腰、头、肩和脚踝的部分样本触及限位,机器人会对人体动作作出妥协。
左臂相对估计人体的方向平均差约 0.20°,个别样本最大差约 25.54°。平均值会掩盖局部问题,而且这衡量的是机器人对当前人体估计的拟合,不是真实动作的三维准确度。关键帧和完整视频要一起看。
| 检查对象 | 本次结果 | 结果能说明什么 |
|---|---|---|
| A3 关节轨迹 | 31 个活动关节;313 帧;角度和离散速度越界均为 0 | 满足本轮采用的运动学约束 |
| Blender 连杆 | 40 个刚性网格;逐帧位置与独立正向运动学一致 | 动画层级与 URDF 变换实现一致 |
| A3 脚部网格 | 逐帧最低点约 +2 mm;最大上移补偿约 5.02 cm | 可视化中避免穿地,尚不能证明平衡 |
| FBX 与视频 | FBX 读回验证;两段 A3 视频完整解码 | 导出数据和预览可用,A3 引擎导入尚未验收 |

复现下来,真正能复用的是哪些操作能力
这次沉淀的能力是:检查输入模型、搭建估计环境、准备动作数据、适配目标身体、批量写入动画,以及把错误定位到具体帧。换一个动作时,这些步骤可以复跑;换一种身体时,中间的人体数据仍可复用。
Mixamo LLM Mocap 的帮助主要在估计后的工程流程:读取角色基准与比例,用旋转表达动作,以配置控制处理,再用对比结果复查。名字里的 LLM 对应 Agent 编排和辅助分析;本次核心姿态估计来自 GVHMR,A3 适配则是另外编写的约束求解。[1]
角色和机器人也需要不同的导出方式。角色有蒙皮人形骨架,走 Humanoid;A3 是刚性连杆对象动画,FBX 应按 Generic 使用。得到一个文件还不够,要重新读回,并检查时间轴、变换和最终画面。
它怎样走向虚拟训练和遥操作
对虚拟预演,现有结果已经能用来比较不同模型的动作,提前查看可达范围、关节限位和网格穿地。对模仿训练,它可以作为姿态、轨迹和动作节奏的参考,后续还要让控制策略在物理仿真中学会跟踪并维持平衡。
对遥操作,我认为最值得复用的是人体到机器人的适配层。离线视频和实时操作员输入,都可以先转成受机器人约束的动作目标。但实时系统还需处理采集延迟、失去跟踪、机器人状态反馈和闭环控制;这些尚未在本次验证。
我也查看了智元官方 SONIC 的训练、MuJoCo 仿真与 ONNX 导出流程。现有动画使用 31 个活动关节,而该控制接口使用 29 个、不含两个头部关节,进入训练前需要重新对齐关节顺序与数据格式。本次未启动策略训练,也未生成已验证的控制 ONNX。[5]
下一步可以从站立、抬手、缓慢转身做短时仿真,再评估跳起发球。当前动画的根部可自由移动,没有验证重心、接触力、自碰撞、扭矩或加速度。真正训练击球,还要加入球的感知、球拍接触和击球结果。
| 应用 | 现有成果可提供 | 下一步需验证 |
|---|---|---|
| 虚拟预演 | 可编辑动作与不同身体的可视化对比 | 任务中的碰撞、可达范围和物体交互 |
| 模仿训练 | 人体姿态、A3 关节角与参考轨迹 | 接触与平衡、动力学、策略跟踪 |
| 遥操作 | 坐标转换、身体适配与关节约束方法 | 实时采集、延迟、失跟踪处理、闭环反馈 |
参考阅读
阅读 —
