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 正确"翻译"给它。
相关推荐
叶帆12 天前
【YFIOs】用C#开发硬件之设备上云
开发语言·unity·c#
久数君12 天前
AI三维建模工具“造形家”:地理场景三维化的高效解决方案
unity·glb·ai算法·ai三维建模工具·地图框选·造形家·城市建筑模型
会思考的猴子13 天前
Unity VFX 属性 Postion 和 TargetPostion
unity
hai31524754313 天前
九章编程法 · 猜数字游戏 (GW-BASIC 重构版) *
人工智能·microsoft·游戏引擎·游戏程序
心前阳光13 天前
Unity资源导入之自动化资源导入
unity·自动化·游戏引擎
心前阳光13 天前
Unity之2021.3.45f2c1发布安卓程序遇到的问题
android·unity·游戏引擎
纪纯13 天前
PicoVR Unity Integration SDK 3.4 常用交互API
unity·游戏引擎·vr·pico
龙智DevSecOps解决方案13 天前
3A 游戏优化技术栈:如何打通引擎级分析工具与 DevOps 持续集成管线?
unity·性能优化·游戏开发·技术美术·perforce·unrealengine
葛兰岱尔13 天前
从 SolidWorks 到 Three.js,从 Inventor 到 Unity——制造业CAD模型“几何-语义一体化“转换,不再是天方夜谭!
开发语言·javascript·unity
鼎艺创新科技13 天前
三维电子沙盘中OSGB倾斜摄影数据的加载与渲染
游戏引擎·cocos2d