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 正确"翻译"给它。
相关推荐
winlife_2 小时前
全程用 AI 做一款商业级手游 · EP7 表现层与手感:从“能跑“到“摸起来爽“
java·开发语言·人工智能·unity·ai编程·游戏开发·mcp
程序员正茂2 小时前
Unity3d程序发布后自动显示发布日期
unity
晓131312 小时前
【Cocos Creator 2.x】篇——第二章 入门
javascript·游戏引擎
nnsix14 小时前
Unity 贴图压缩格式 笔记
笔记·unity·贴图
ysn111111 天前
搭建状态同步框架的实践心得
unity·架构
一线灵1 天前
Axmol:小众引擎的硬核逆袭
游戏引擎
weixin_441940011 天前
【Unity教程】使用vuforia创建简单的AR实例
unity·游戏引擎·ar
郝学胜-神的一滴1 天前
[简化版 GAMES 101] 计算机图形学 12:可见性与 Z‑Buffer 深度缓存
unity·godot·图形渲染·three.js·opengl·unreal
归真仙人2 天前
【UE】LineTraceByProfile
ue5·游戏引擎·ue4·unreal engine