ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

UniMate:一句话让任意 3D 骨骼动起来,文本驱动骨骼动画完全指南

UniMate:一句话让任意 3D 骨骼动起来,文本驱动骨骼动画完全指南

UniMate:一句话让任意 3D 骨骼动起来,文本驱动骨骼动画完全指南

【免费下载链接】UniMate[SIGGRAPH Asia 2026] UniMate: One Unified Model to Animate Diverse Skeletons项目地址: https://gitcode.com/GitHub_Trending/un/UniMate

UniMate 是 SIGGRAPH Asia 2026 接收的统一 3D 骨骼动画生成模型。它的用法很直接:一个绑好骨骼的 3D 资产(人形、四足机器人、鸟类,甚至一朵花)加上一句文字,就能实时产出一段完整的自然动作,不用为每个骨架单独训练,也不做测试时优化。

🎬 先看效果:它能驱动什么样的骨架

下图里的所有动作都出自同一个模型:人形角色、四足机器人、动物、花朵……骨架结构各不相同,提示词换一句,动作就换一套。

它是什么:为什么一个模型能驱动所有骨架

思路是放弃"一类骨架配一个模型"。UniMate 只训练一个去噪网络,让它同时理解双腿、四足、鸟类、海洋生物、昆虫、铰接刚体等拓扑的运动数据;推理时按流匹配(flow matching,扩散模型靠"逐步去噪"生成图,这里同理)的方式逐帧去噪,文本提示作为引导条件,直接输出一段 60 帧的动作序列。

能做什么:文本生成、编辑、补间与扩展四大能力

下面四项能力全部来自同一个模型,无需任何额外训练。其中编辑、补间、扩展都靠同一套"替换式采样"(见 unimate/inference/):已知帧在每一步去噪时被严格固定,网络只负责补出剩下的部分。

文本生成动作:一句提示词,骨架就动起来

资产加一句 "An object flaps its wings." 之类的提示词,动作实时生成;自己的 GLB / FBX 资产可以先跑一遍 data_process/rig_preprocess/ 再使用。下图中这只 51 个关节的鹰就是仓库自带的示例资产。

文本引导动作编辑:只改你想改的那部分关节

用--keep_joints把颈部、头部这类关节钉在原轨迹上,剩余关节按新提示词重新生成。下面这条示例里,机器人的"转头"被改成了"向前走",被锁定的关节逐帧保持原样。

动作补间:关键帧之间的过渡自动补全

只给首尾两帧关键帧(--keep_frames "0,-1"),中间的过渡全部由模型生成——这正是动画师口中的"中间帧"工作,现在自动化了。

动作扩展:多条提示词拼成一条长动画

测试用例里把值写成列表,例如"站起来、向前走、原地转身"。模型逐段生成,每段开头与上一段尾部对齐,--expand_overlap控制重叠帧数,最后拼成连贯的长序列。

快速上手:三步从克隆到生成第一个动作

装环境很干净,一个 conda 环境通吃数据处理、训练和推理:

git clone https://gitcode.com/GitHub_Trending/un/UniMate conda create -n unimate python=3.10 -y && conda activate unimate pip install "setuptools<81" && pip install -r requirements.txt --no-build-isolation

第二步把官方 checkpointunimate_uniml3d_f60_v3下到outputs/(hf download命令见 README 的 Inference 小节)。若想驱动数据集里的骨架,需再下载 UniML3D 到dataset/(约 88 GB);只用自己资产则可跳过。然后跑:

python -m unimate.inference.sample --exp_dir outputs/unimate_uniml3d_f60_v3 \ --test_cases_json assets/examples/examples.json --num_repetitions 3 --output_dir outputs/samples/examples

产出的.npy动作可用scripts/run_animate_motion.sh驱动回原网格,导出带动画的 GLB / FBX。想自己训练的话,再执行:

accelerate launch -m unimate.training.train --config configs/uniml3d_60frames_graph_adaln.json

scripts/下的封装脚本会自动挑显存最空闲的 GPU,新手直接跑 shell 脚本即可。

幕后:13,769 条动作从哪来

模型的底气来自 UniML3D 数据集:13,769 条带文本配对的运动片段,覆盖 7,430 个骨架,原料取自 Mixamo(人形)、Truebones ZOO(动物)和 Objaverse-XL(杂类资产),全部统一到同一规范姿态下。训练用流匹配做目标,每个片段 60 帧;configs/ 里 8 份 JSON 对应 4 种数据组合 × 2 种注意力变体,改字段即可切换实验,数据流水线的细节见 data_process/README.md。

代码导读:模型各部分放在哪

目录干什么
unimate/models/去噪骨干(图注意力 / 全注意力两种变体)与扩散、流匹配基础设施
unimate/dataset/数据加载、在线增强与条件构造
unimate/training/训练循环、EMA 权重与日志,入口是train.py
unimate/inference/采样入口sample.py,编辑 / 补间 / 扩展都实现在这里
data_process/完整数据管线:Blender 导出渲染、VLM 打字幕、关节标注
configs/8 份训练配置 JSON

适合谁用,局限又是什么

  • 内容制作:给绑好骨骼的角色或资产批量产出动画素材,省去逐帧 K 帧
  • 游戏与机器人团队:四足机器人、动物、机械臂等非人形骨架直接可用
  • 算法研究者:统一骨架动画 + 流匹配训练的完整参考实现

作者也坦率说明:这仍是"任意骨架文本生成动作"的早期探索,部分骨架与动作会失败。如果你遇到不work 的 case,欢迎提 issue——这些失败案例正是推动模型走向下一步的养料。代码采用 MIT 许可,checkpoint 为 CC BY-NC 4.0,三个数据集各自遵循源许可。

【免费下载链接】UniMate[SIGGRAPH Asia 2026] UniMate: One Unified Model to Animate Diverse Skeletons项目地址: https://gitcode.com/GitHub_Trending/un/UniMate

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进