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 正确"翻译"给它。
相关推荐
郝学胜-神的一滴4 小时前
游戏设计:原型与开发 08:我们到底在为谁做游戏
程序人生·游戏·游戏引擎·游戏开发·游戏策划
五仁烧饼5 小时前
动手学 Shader Graph(二):溶解与边缘发光
游戏·unity·shader·shader graph
淡海水6 小时前
06-02-源码-增量标记算法实现
算法·unity·c#·gc
淡海水7 小时前
06-01-源码-Incremental GC总览与设计
unity·c#·gc
郝学胜-神的一滴10 小时前
游戏设计:原型与开发 07:像游戏设计师一样工作
图像处理·游戏·unity·图形渲染·游戏策划·游戏设计
Wanda12141 天前
机器人与机电一体化3D数字孪生机器-Day5
人工智能·unity·游戏引擎·数字孪生
Wanda12141 天前
机器人与机电一体化3D数字孪生机器-Day4
3d·unity·机器人·数字孪生
年少无知且疯狂2 天前
【Unity】Shader spine动画冻结效果
unity·spine
淡海水2 天前
05-02-源码-Boehm GC标记阶段
算法·unity·c#·游戏引擎·gc
淡海水2 天前
05-03-源码-Boehm GC分配与碎片管理
开发语言·算法·unity·c#·游戏引擎·gc