deep-motion-editing
deep-motion-editing 是一款基于深度学习的开源库,专为 3D 角色动画的编辑与渲染设计。它实现了从动作文件读取、智能编辑到最终渲染的全流程自动化。
在动画制作中,不同骨骼结构的角色往往难以复用同一套动作,且手动调整风格耗时费力。deep-motion-editing 利用 AI 技术解决了这一痛点,提供两大核心功能:动作重定向与动作风格迁移。前者能自动将动作适配到不同骨骼结构的角色身上,后者则支持将特定风格(如舞蹈节奏)应用到新动作中,甚至能从视频中提取风格并转换。这些能力基于 SIGGRAPH 2020 的前沿研究成果,支持跨结构适配及 2D 视频到 3D 动画的风格转换。
该项目适合游戏开发者、3D 动画师以及计算机视觉研究人员使用。虽然需要配置 Python 和 GPU 环境,但官方提供了预训练模型和详细示例,大大降低了实验门槛。对于追求高效动画生产流程或致力于动作生成算法探索的团队而言,deep-motion-editing 是一个极具价值的开源资源。
使用场景
某独立游戏工作室正在制作一款奇幻题材的动画短片,核心需求是将真人动作捕捉数据精准适配到非人形怪物角色上。
没有 deep-motion-editing 时
- 手动调整骨骼权重耗时极长,极易破坏原始动作的流畅自然感,导致角色僵硬。
- 不同比例的角色骨架无法直接复用现有动捕数据,技术门槛高且需要大量重复劳动。
- 想要改变动作风格(如从稳健变为轻快)需重新录制或逐帧修改关键帧,成本高昂。
- 渲染流程复杂,需频繁在多个软件间切换导出中间文件,版本管理混乱且效率低下。
使用 deep-motion-editing 后
- 利用深度学习自动完成跨结构重定向,完美保留动作精髓并适配新骨架,无需人工干预。
- 支持视频关键点到动画的风格迁移,无需昂贵设备即可获取特定运动风格,素材来源更广。
- 内置 Blender 渲染模块,一键生成可视化结果,大幅缩短从数据到成片的预览周期。
- 模型处理非线性变形能力强,有效避免了传统方法中常见的关节扭曲和穿模问题。
通过自动化深度编辑流程,它让非专业团队也能高效实现高质量的角色动作适配与风格化创作。
运行环境要求
- Linux
- macOS
CPU 或 NVIDIA GPU,需 CUDA 和 CuDNN,具体型号及显存未说明
未说明

快速开始
Deep-motion-editing
本库提供了在深度学习中使用 PyTorch 进行 3D 角色动画处理的基础和高级功能。代码包含端到端模块,从读取和编辑动画文件到使用 Blender 进行可视化和渲染。
此处提供的主要深度编辑操作——动作重定向 (Motion Retargeting) 和 动作风格迁移 (Motion Style Transfer),基于两篇发表于 SIGGRAPH 2020 的论文:
Skeleton-Aware Networks for Deep Motion Retargeting: 项目 | 论文 | 视频
Unpaired Motion Style Transfer from Video to Animation: 项目 | 论文 | 视频
本库由 Kfir Aberman、Peizhuo Li 和 Yijia Weng 编写和维护。该库仍在开发中。
前置要求
- Linux 或 macOS
- Python 3
- CPU 或 NVIDIA GPU + CUDA CuDNN
快速开始
我们提供了预训练模型以及使用指定为 bvh 格式的动画文件的演示示例。
动作重定向 (Motion Retargeting)
从 Google Drive 或 百度网盘 (ye1q) 下载并解压测试数据集。然后将 Mixamo 目录放置在 retargeting/datasets 内。
要使用预训练模型生成演示示例,请运行
cd retargeting
sh demo.sh
结果将保存在 retargeting/examples 中。
要使用预训练模型重建定量结果,请运行
cd retargeting
python test.py
重定向后的演示结果,包括结构内重定向 (intra-structual retargeting) 和跨结构重定向 (cross-structural retargeting),将保存在 retargeting/pretrained/results 中。
动作风格迁移 (Motion Style Transfer)
要获取演示示例,只需运行
sh style_transfer/demo.sh
结果将保存在 style_transfer/demo_results 中,
其中每个文件夹包含原始输出 raw.bvh 和经过脚部滑行清理 (footskate clean-up) 后的输出 fixed.bvh。
从头训练
我们提供了重新训练模型的说明
动作重定向
数据集
我们使用 Mixamo 数据集来训练模型。您可以从 Google Drive 或 百度网盘(4rgv) 下载我们预处理的数据。然后将 Mixamo 目录放置在 retargeting/datasets 内。
否则,如果您想自行下载 Mixamo 数据集或使用自己的数据集,请遵循以下说明。除非特别说明,所有脚本应在 retargeting 目录下运行。
若要自行下载 Mixamo,可参考 此 优秀教程。您需要下载 fbx 文件(不需要皮肤),并在
retargeting/datasets/Mixamo下为每个角色创建子目录。在我们的原始实现中,我们下载了 60fps 的 fbx 文件并将其降采样为 30fps。由于我们在训练中使用无配对方式,建议将所有动作分为两组大小相等的集合,并为每组中的每个角色分配大小相等的集合。如果您使用自己的数据,需要确保您的数据集由具有相同 T 姿势 (t-pose) 的 bvh 文件组成。您还应将数据集放在retargeting/datasets/Mixamo的子目录中。进入
retargeting/datasets目录并运行blender -b -P fbx2bvh.py将 fbx 文件转换为 bvh 文件。如果您已经有 bvh 文件作为数据集,请跳过此步骤。在我们的原始实现中,我们手动分割了
group A中骨架的三个关节。如果您想遵循我们的流程,请运行python datasets/split_joint.py。此步骤是可选的。运行
python datasets/preprocess.py通过移除一些不太重要的关节(例如手指)来简化骨架,并将 bvh 文件转换为 npy 文件。如果您使用自己的数据,需要在retargeting/datasets/bvh_parser.py中定义简化的结构。此信息目前硬编码在代码中。有关更多详细信息,请参阅源文件中的注释。让您的数据集工作的步骤有四个。训练和测试的角色在
retargeting/datasets/__init__.py中是硬编码的。如果您想使用自己的数据集,需要修改它。
训练
准备好数据集后,只需运行
cd retargeting
python train.py --save_dir=./training/
它将使用默认超参数 (hyper-parameters) 训练模型,并将训练好的模型保存在 retargeting/training 目录中。更多选项可在 retargeting/option_parser.py 中找到。您可以通过运行以下命令使用 TensorBoard 监控训练进度
tensorboard --logdir=./retargeting/training/logs/
动作风格迁移
数据集
从 Google Drive 或 Baidu Drive (提取码:zzck) 下载数据集。数据集由两部分组成:一部分来自 Xia et al. 提出的动作风格迁移数据集,另一部分是我们的 BFA 数据集,其中两部分都包含针对 CMU mocap 数据集 (动作捕捉数据集) 标准骨架重定向的 .bvh 文件。
将 .zip 文件解压到
style_transfer/data为训练预处理数据:
cd style_transfer/data_proc sh gen_dataset.sh这将在
style_transfer/data中生成xia.npz,bfa.npz。
训练
下载数据集后,直接运行
python style_transfer/train.py
来自视频的样式
要在测试阶段使用自己的视频运行我们的模型,您首先需要使用 OpenPose (姿态估计工具) 从视频中提取 2D 关节位置,然后按照示例演示中使用生成的 JSON 文件。
Blender 可视化
我们提供了一个简单的 Blender Python API (2.80) 包装器用于渲染 3D 动画。
前置条件
从 blender.org 分发的 Blender 版本在所有平台上都包含完整的 Python 安装,这意味着您在系统 Python 中安装的任何扩展都不会出现在 Blender 中。
要使用外部 Python 库,您可以直接将新包安装到 Blender 的 Python 发行版中。或者,您可以通过以下方式更改默认的 Blender Python 解释器:
删除内置的 python 目录:
[blender_path]/2.80/python。创建一个符号链接或直接复制一个 python 解释器到
[blender_path]/2.80/python。例如:ln -s ~/anaconda3/envs/env_name [blender_path]/2.80/python
该解释器应为 python 3.7.x 版本,并至少包含:numpy, scipy。
使用方法
参数
由于 Blender 的 argparse 系统,参数列表应与 python 文件用额外的 '--' 分隔,例如:
blender -P render.py -- --arg1 [ARG1] --arg2 [ARG2]
engine: "cycles" 或 "eevee"。更多详细信息请参考 Render 部分。
render: 0 或 1。如果设置为 1,数据将在 Blender GUI 之外渲染。如果您需要手动调整相机,建议使用 render = 0。
完整参数列表可以通过以下命令显示:
blender -P render.py -- -h
加载 bvh 文件 (load_bvh.py)
要加载 example.bvh,请运行 blender -P load_bvh.py。请先完成准备工作。
注意,目前它使用具有 5 个顶点的 primitive_cone 作为肢体。
注意,Blender 和 bvh 文件有不同的 xyz 坐标系。在 bvh 文件中,“高度”轴是 y 轴,而在 Blender 中它是 z 轴。
load_bvh.py在BVH_file类初始化函数中交换了轴。
目前 bvh 文件中的所有
End Sites都被丢弃,这是因为utils/中使用的外部代码。
加载 bvh 文件后,其高度被归一化为 10。
材质、纹理、灯光和相机 (scene.py)
此文件允许向场景添加棋盘格地板、相机、“太阳”,并为角色应用基本颜色材质。
地板放置在 y=0 处,如果需要(取决于 bvh 文件中的角色参数),应手动修正。
渲染
我们支持 Blender 2.80 提供的两种渲染引擎:Eevee 和 Cycles,权衡在于速度和画质。
Eevee(左)是一种快速、实时的渲染引擎,提供有限的画质;而 Cycles(右)是一种较慢、无偏置的光线追踪 (ray-tracing) 渲染引擎,提供照片级渲染结果。Cycles 还支持 CUDA 和 OpenGL 加速。
蒙皮
自动蒙皮
我们提供了一个 Blender 脚本,用于对输出骨架应用“蒙皮”(skinning)。您首先需下载对应目标角色的 fbx 文件(例如,"mousey")。然后,只需运行即可获取蒙皮动画:
blender -P blender_rendering/skinning.py -- --bvh_file [bvh file path] --fbx_file [fbx file path]
注意,该脚本可能无法对所有 fbx 和 bvh 文件正常工作。如果失败,您可以尝试调整脚本或遵循下面的手动蒙皮指南。
手动蒙皮
这里我们提供一个“快速且粗糙”的指南,说明如何在 Blender 中将皮肤应用到生成的 bvh 文件:
- 下载对应重定向角色的 fbx 文件(例如,"mousey")
- 将 fbx 文件导入 Blender(取消勾选“import animation"选项)
- 合并网格 - 选择所有部分并合并它们 (ctrl+J)
- 导入重定向后的 bvh 文件
- 点击“上下文” (菜单栏) -> “休息位置” (在骨架下)
- 手动对齐网格和骨架(旋转 + 平移)
- 选择骨架和网格(骨架对象应高亮显示)
- 点击 对象 -> 父级 -> 带自动权重 (或 Ctrl+P)
现在骨架和皮肤已绑定,动画可以进行渲染。
致谢
utils 目录中的代码主要取自 Holden et al. [2016]。
此外,部分 MoCap 数据集 (动作捕捉数据集) 取自 Adobe Mixamo 以及 Xia et al. 的工作。
引用
如果您在本研究中使用此代码,请引用我们的论文:
@article{aberman2020skeleton,
author = {Aberman, Kfir and Li, Peizhuo and Sorkine-Hornung Olga and Lischinski, Dani and Cohen-Or, Daniel and Chen, Baoquan},
title = {Skeleton-Aware Networks for Deep Motion Retargeting},
journal = {ACM Transactions on Graphics (TOG)},
volume = {39},
number = {4},
pages = {62},
year = {2020},
publisher = {ACM}
}
and
@article{aberman2020unpaired,
author = {Aberman, Kfir and Weng, Yijia and Lischinski, Dani and Cohen-Or, Daniel and Chen, Baoquan},
title = {Unpaired Motion Style Transfer from Video to Animation},
journal = {ACM Transactions on Graphics (TOG)},
volume = {39},
number = {4},
pages = {64},
year = {2020},
publisher = {ACM}
}
常见问题
相似工具推荐
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
NextChat
NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。