动画重定向可以一个动画应用于不同骨架,从而实现更高效的动画复用和灵活性。
团结引擎使用了基于骨骼链匹配的动画重定向,每个角色的骨骼链信息存储于对应的 TRig 资产中,TRetargeter 资产中则记录了重定向中骨骼链的映射关系和相关设置。在具体重定向中,会依次经历根节点重定向、FK 重定向和 IK 重定向。每一个步骤都是可选的,可以对每一条链进行单独设置。
在 Project 界面下右键 Create -> TRetargeter 创建资产。TRetargeter 中存在两个引用,分别指向源 TRig 和目标 TRig 资产。
动画重定向要求两个模型的初始姿势相同,在该界面下我们可以修改他们的重定向初始姿势。和 Skeleton Tab 下相似,可以通过在场景中直接修改 Transform 组件或者 Auto Pose 工具来修改姿势。此处的 Auto Pose 工具除了默认的方式以外,还提供了 Apply Auto Align 的选项,该功能可以自动对齐当前骨骼以匹配要进行重定向的另一副骨骼。大多数情况下,可以优先尝试该选项。修改结束后点击对应的 Revert 和 Apply 来撤销或应用。
根骨骼默认会设置为 ModelImporter Inspector 界面下的 Root Node。只有当两个模型的 Root Node 都非 None,根骨骼的重定向才会真正生效。
根骨骼相关设置参数说明如下:
参数 | 说明 |
---|---|
Offset | 位置上的偏移值 |
Translation Weight | 根骨骼重定向的位移权重 |
Rotation Weight | 根骨骼重定向的旋转权重 |
下方的表格罗列了所有的目标骨骼链,用户可以手动选择对应的源骨骼链,也可以点击 Auto Mapping 根据名字模糊匹配。匹配提供了以下方式:
匹配方式 | 说明 |
---|---|
Fuzzy Auto-Map | 模糊匹配所有骨骼链 |
Fuzzy Auto-Map (Only For Unassigned) | 只模糊匹配尚未匹配的骨骼链 |
Precise Auto-Map | 精准匹配所有骨骼链 |
Precise Auto-Map (Only For Unassigned) | 只精准匹配尚未匹配的骨骼链 |
Clear 按钮会清空所有的匹配。此处的操作是实时生效写入本地的。
选中某一行映射关系可以更进一步设置它的参数,相关参数如下:
参数 | 说明 |
---|---|
ActivateFK | 启用 FK |
* FK Rotation Weight | FK 重定向的旋转权重 |
ActivateIK | 启用 IK |
* IK Source Weight | IK 重定向中源目标位置的权重 |
* IK Source Weights | IK 重定向中源目标位置的权重(区分x,y,z轴),最终:每一个轴的权重 = IKSourceWeights.x/y/z * IKSourceWeight |
* IK Offset Translation | IK 位移偏移 |
* IK Offset Rotation | IK 旋转偏移 |
在这个过程中如果需要修改模型的骨骼链,可以点击 Source/Target TRig 右侧的 Goto 按钮跳转到编辑界面,修改完成后点击 Back 按钮返回重定向界面。
跳转 | ![]() |
---|---|
返回 | ![]() |
在 Source AnimationClip Candidates 中可以添加想要预览的 AnimationClips, 点击 + 号按钮可以选择 Add AnimationClip 添加单个 AnimationClip 或者选择 Add Folder 添加整个文件夹下的所有 AnimationClip,如果选择添加的资产是 FBX 格式,则也会导入该 FBX 资产下的所有 AnimationClip。除了 + 号,也可以直接从 Project 界面拖动 AnimationClip 或者 FBX 资产放入该区域。添加成功后,选择单个 AnimationClip ,点击 Show Preview 可以在场景中实时查看重定向后的结果,场景状态由 “[ Match Initial Pose ]” 切换为 “[ Preview ]”。
在该模式下,可以通过 Start 和 Stop 按钮来播放和结束动画,在该过程中也可以调整上方的骨骼链设置来优化结果。确认无误后可以修改 Frame Rate(默认为 30 fps),点击 Bake 按钮即可导出重定向动画结果,也可以多选 AnimationClip 点击 Batch Bake 按钮批量导出结果。
打开 AnimGraph 窗口,在 Parameter Editor 窗口下点下 + 号选择 Object 选项添加 Object 类型参数,并将其对场景可见:
开启 AttachToParent 选项后,如果 SourceCharacter 没有连接对象,则会默认将该 AnimGraph 挂载的父对象作为 SourceCharacter。
因此一种常用的使用方式是,开启该选项,在场景中,将目标模型放置于源模型的下方:
在 AnimGraph 窗口中鼠标单击选择对应的 Retarget Node 后,窗口中的 AnimGraph Inspector 界面会显示相应的设置。
该界面罗列了该 TRetargeter 资产下的所有骨骼链,可以通过勾选对应的参数来开放图中的端口。其中 “[ Root ]” 表示了根节点相关的属性。
开放端口的左侧 Drawer 是默认值可以直接修改,需要在 Play Mode 下动态修改的值可以通过 Parameter Node 连接,然后通过 AnimGraphManager 的 Set API 进行设置。
在目标角色的 AnimGraphManager 组件上开启 ApplyRootMotion 选项后,目标角色的根游戏对象的位移会根据源角色的位移进行重定向。该位移会根据重定向的根进行放缩,如果想要保持源角色和目标角色的位移完全一致,可以在 Retarget Node Inspector 中将 Root Motion Scale Weight 设置为 0.0。