Unity 动作重定向

📝 Unity 动作重定向(Motion Retargeting)标准笔记

核心原理

Unity 的 Humanoid(人形)动画系统 通过一个名为 Avatar(骨骼映射骨架) 的中间件,将"A模型的动画数据"翻译给"B模型"。只要两个模型都被成功识别为 Humanoid,系统就会自动处理身高、手臂长度等身材比例差异,实现完美的动作复用。


📥 第一步:导入资产 (Import Assets)

将以下源文件拖入 Unity 的 Project(项目)窗口中:

  1. 源模型(动作提供者): 从 GVHMR 导出的、带有动画关键帧的灰色人模 FBX。
  2. 目标模型(皮肤拥有者): 经 Maya 导出、已做好标准骨骼绑定(Rigging)与蒙皮(Skinning)的男/女模型 FBX。

🤖 第二步:配置双方的 Humanoid 骨架 (Rig Configuration)

对"源模型"和"目标模型"的 FBX 文件本体,分别执行以下完全相同的操作:

  1. Project 窗口点击选中该模型 FBX 文件。
  2. 在右侧 Inspector 面板顶端,切换到 Rig 标签页。
  3. Animation Type 下拉菜单由 Generic 改为 Humanoid
  4. Avatar Definition 保持默认的 Create From This Model
  5. 点击 Apply 按钮(此时 Unity 会自动生成一个带有 λ˙\dot{\lambda}λ˙ 形状的小绿人图标资产,称为 Avatar)。
  6. 点击 Apply 旁的 Configure... 按钮进入黑色的骨骼映射检查视图:
  • 检查右侧面板的"小绿人"是否全身上下都是绿色圆圈(代表 Unity 自动精准识别了头、胸、四肢等核心骨骼)。
  • 确保模型在场景中呈现标准的 T-Pose (双手水平伸直,双腿并拢,面朝正前方)。如果姿势歪斜,点击右下角 Pose -> Enforce T-Pose 强制纠正。
  • 点击右下角 Apply ,然后点击 Done 退出该视图。

✂️ 第三步:提取动画剪辑 (Extract Animation Clip)

GVHMR 的动画数据默认被锁在源模型 FBX 文件内部,需要提取出来才能自由编辑和挂载:

  1. Project 窗口点击展开源模型(灰色模型)的 FBX 文件(点击其右侧的小三角)。
  2. 在展开的子资产中,找到青色/蓝绿色三角块图标 的资产(这代表动画剪辑 AnimationClip)。
  3. 选中该动画资产,按下键盘快捷键 Ctrl + D(Mac 上为 Cmd + D 进行复制。
  4. 此时会发现一模一样的动画文件被复制到了 FBX 外部。将其重命名(例如:GVHMR_Dance_Motion)。

🕹️ 第四步:构建动画控制器 (Animator Controller)

  1. Project 窗口的空白处右键 →\rightarrow→ Create -> Animator Controller ,命名为 Character_Controller
  2. 双击打开这个新建的 Character_Controller,会弹出一个网格状的连线状态机窗口(Animator 窗口)。
  3. 将第三步中用 Ctrl + D 复制出来的 GVHMR_Dance_Motion 动画剪辑直接拖入这个网格窗口中。它会自动变为橙色,作为默认播放状态。

🎬 第五步:组装并运行 (Assemble & Play)

  1. 将目标模型(带皮肤的模型)从 Project 窗口拖入到层级面板(Hierarchy)或直接拖入场景中。
  2. 选中场景中的目标模型,查看右侧 Inspector 面板,确保其身上挂有 Animator 组件。
  3. 关键插槽配置:
  • Controller 插槽: 把第四步创建的 Character_Controller 拖进去。
  • Avatar 插槽:目标模型自己生成的 Avatar (即第二步为他改 Humanoid 时生成的那个 λ˙\dot{\lambda}λ˙ 图标)拖进去。(⚠️注意:绝对不能放灰色模型的 Avatar)
  1. 点击 Unity 编辑器正上方的 Play(播放) 按钮。

💡 记笔记时的避坑总结(Checklist):

  • 双 Humanoid 原则: 动捕模型和皮肤模型必须都是 Humanoid 模式。
  • 双 T-Pose 原则: 双方在 Configure 界面里的初始姿势必须都是标准的 T-Pose,否则重定向后关节会脱臼或穿模。
  • Avatar 属于自己: 场景里的皮肤模型,其 Animator 组件上的 Avatar 必须绑定它自己的骨架映射,动作才能通过 Controller 正确"翻译"给它。
相关推荐
玖玥拾1 天前
C# 语言进阶(十四)Unity UI界面开发 + 网络消息联动
服务器·开发语言·网络·ui·unity·c#·游戏引擎
野区捕龙为宠1 天前
Unity 持久化数据
unity·游戏引擎·lucene
郝学胜-神的一滴1 天前
[简化版 GAMES 101] 计算机图形学 17:纹理技术从基础原理到多场景实战应用
c++·unity·游戏引擎·图形渲染·three.js·opengl·unreal
_ZHOURUI_H_2 天前
MyFramework: 同样是 Unity 游戏开发框架,和 HTFramework 的设计取向有什么不同?(下)
unity·游戏引擎·游戏开发·游戏ui·手游开发
小贺儿开发3 天前
Unity 知识库智能问答系统(RAG)
人工智能·unity·ai·大模型·智能问答·知识库·互动
丁小未3 天前
基于MVVM框架的XUUI 扩展的UI管理系统教程
unity·mvvm·ui框架·xuui·ui管理器
丁小未4 天前
基于MVVM框架的XUUI HelloWorld 新手教程
unity·性能优化·c#·游戏引擎
丁小未4 天前
基于MVVM框架的XUUI MoreComplex案例
unity·c#
EQ-雪梨蛋花汤4 天前
【Unity笔记】VR 一体机画面锯齿、模型边缘闪烁、接缝抖动排查:MSAA、Mipmap、Render Scale、Z-Fighting 全流程记录
笔记·unity·vr
松树戈4 天前
【Godot4精进之路】03~Godot编辑器常用界面介绍
编辑器·游戏引擎·godot