Ray Space 标志Ray Space技术 · 场景 · 产品
← 所有文章
具身智能8 分钟阅读

一段网球视频,两种身体:在 Mac 上复现角色与智元 A3 动作

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

智元 A3 数字模型抬臂发球姿态
01

从项目说明,走到两段能看的视频

起点是 Mixamo LLM Mocap。它把视频动作估计、角色适配和 Blender 动画串成一条可由脚本执行的流程。我读完说明后,想验证一个更直接的问题:这套办法能不能在自己的 Mac 上运行,并用到手里的模型?[1]

于是选了 GVHMR 官方仓库里的网球样例。统一到 30 fps 后,片段有 313 帧,约 10.43 秒。先让一个 Q 版角色复现,再让智元 A3 的数字模型跟着做。两次使用同一份人体估计,方便看出不同身体需要怎样适配。[2]

先看结果。下面两段都是原视频与模型逐帧并排,准备、抬臂、挥臂和落地都在同一时间轴上。A3 使用普通 T3.0 型号;画面中的手保留模型固定造型,没有单独恢复球拍、球和手指动作。

视频 1|原视频与 A3 T3.0:313 帧、30 fps,运动学动画。
视频 2|同一段动作适配 nihong 角色,使用左脚修正后的版本。
02

先还原人体,再考虑换成哪种身体

视频只有画面,没有直接可用的三维关节数据。GVHMR 负责从画面估计人体运动;SMPL-X 则是描述人体形状和关节的参数模型。得到这层中间结果后,才能讨论把动作放到角色还是机器人上。[2]

原项目主要面向 CUDA 环境。这次在 Mac 上使用 GVHMR 的 Apple Silicon 分支:预处理用 MPS,也就是 Apple GPU 的计算接口;动作网络沿用该分支的 CPU 路径。因此,本次不能笼统说成“全程 GPU 推理”。[3]

我先检查本机运算和合成动作链路,再取得并校验所需的人体模型,运行真实视频。跟踪抽查确认目标是前景运动员。输出的人体关节旋转和根部轨迹成为两次适配的共同输入;它们仍是三维估计,没有独立测得的三维真值。

同一段视频,怎样换成两种身体:输入视频 → 估计人体 → 适配身体 → 复查结果
同一段视频,怎样换成两种身体 · Ray Space 图解
03

角色能动之前,先把骨架和脚摆对

手里的 nihong FBX 是一个已经蒙皮的 Q 版持枪角色,但只有 10 根简化骨骼,初始姿态也不是双臂平举的 T-pose。蒙皮是把网格顶点关联到骨骼,骨架不完整时,有动作数据也无法正常驱动全身。

我保留原文件,调整基准姿态并重绑为 65 根人形骨骼,再用 Mixamo LLM Mocap 的旋转重定向写入动画。“重定向”可以理解为:保留动作关系,按新身体的骨长、坐标和初始姿态重新表达。[1]

换成短腿角色后,实际蒙皮出现穿地,需要按脚部网格修正高度。还有一个更直观的错误:回看视频时,我们发现左脚朝后了。原因在重绑时误判了脚尖方向,静止模型就已经摆反,单改动画不能解决。

修正左脚静止朝向后,我复用人体估计,重新生成动画、FBX 和预览。313 帧脚部方向检查通过,团结 2022.3.62t14 的 Humanoid 与 Animator 播放也完成验证。指骨已经建立,手指还没有逐指蒙皮。

虚拟角色左脚修正前后对照
先修正静止模型,再重新应用动作。方向检查之外,实际渲染也要看。
团结引擎中虚拟角色的发球姿态
团结引擎对实际 Animator 和蒙皮的采样画面;这是角色链路的引擎验证。
04

换成 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 引擎导入尚未验收
0至10秒六个阶段的网球视频与 A3 姿态对照
六个阶段的同时间对比:既看姿态,也看机器人受限位影响后的差异。
05

复现下来,真正能复用的是哪些操作能力

这次沉淀的能力是:检查输入模型、搭建估计环境、准备动作数据、适配目标身体、批量写入动画,以及把错误定位到具体帧。换一个动作时,这些步骤可以复跑;换一种身体时,中间的人体数据仍可复用。

Mixamo LLM Mocap 的帮助主要在估计后的工程流程:读取角色基准与比例,用旋转表达动作,以配置控制处理,再用对比结果复查。名字里的 LLM 对应 Agent 编排和辅助分析;本次核心姿态估计来自 GVHMR,A3 适配则是另外编写的约束求解。[1]

角色和机器人也需要不同的导出方式。角色有蒙皮人形骨架,走 Humanoid;A3 是刚性连杆对象动画,FBX 应按 Generic 使用。得到一个文件还不够,要重新读回,并检查时间轴、变换和最终画面。

06

它怎样走向虚拟训练和遥操作

对虚拟预演,现有结果已经能用来比较不同模型的动作,提前查看可达范围、关节限位和网格穿地。对模仿训练,它可以作为姿态、轨迹和动作节奏的参考,后续还要让控制策略在物理仿真中学会跟踪并维持平衡。

对遥操作,我认为最值得复用的是人体到机器人的适配层。离线视频和实时操作员输入,都可以先转成受机器人约束的动作目标。但实时系统还需处理采集延迟、失去跟踪、机器人状态反馈和闭环控制;这些尚未在本次验证。

我也查看了智元官方 SONIC 的训练、MuJoCo 仿真与 ONNX 导出流程。现有动画使用 31 个活动关节,而该控制接口使用 29 个、不含两个头部关节,进入训练前需要重新对齐关节顺序与数据格式。本次未启动策略训练,也未生成已验证的控制 ONNX。[5]

下一步可以从站立、抬手、缓慢转身做短时仿真,再评估跳起发球。当前动画的根部可自由移动,没有验证重心、接触力、自碰撞、扭矩或加速度。真正训练击球,还要加入球的感知、球拍接触和击球结果。

应用现有成果可提供下一步需验证
虚拟预演可编辑动作与不同身体的可视化对比任务中的碰撞、可达范围和物体交互
模仿训练人体姿态、A3 关节角与参考轨迹接触与平衡、动力学、策略跟踪
遥操作坐标转换、身体适配与关节约束方法实时采集、延迟、失跟踪处理、闭环反馈

参考阅读

  1. Mixamo LLM Mocap:项目说明与处理流程 ↗
  2. GVHMR:人体运动恢复与官方网球样例 ↗
  3. GVHMR Apple Silicon 分支 ↗
  4. 智元 A3 / A3 Ultra 官方模型 ↗
  5. 智元 SONIC:训练、仿真和部署流程 ↗
阅读 —