Version: 1.7
语言 : 中文
通用角色逆向运动学
Rotation in animations

通用角色动画重定向

动画重定向可以一个动画应用于不同骨架,从而实现更高效的动画复用和灵活性。

核心资产:TRetargeter

团结引擎使用了基于骨骼链匹配的动画重定向,每个角色的骨骼链信息存储于对应的 TRig 资产中,TRetargeter 资产中则记录了重定向中骨骼链的映射关系和相关设置。在具体重定向中,会依次经历根节点重定向、FK 重定向和 IK 重定向。每一个步骤都是可选的,可以对每一条链进行单独设置。

Retargeter Tab 界面
Retargeter Tab 界面

生成 TRetargeter 资产

Project 界面下右键 Create -> TRetargeter 创建资产。TRetargeter 中存在两个引用,分别指向源 TRig 和目标 TRig 资产。

TRetargeter 资产图标
TRetargeter 资产图标

编辑 TRetargeter 资产

修改重定向初始姿势

动画重定向要求两个模型的初始姿势相同,在该界面下我们可以修改他们的重定向初始姿势。和 Skeleton Tab 下相似,可以通过在场景中直接修改 Transform 组件或者 Auto Pose 工具来修改姿势。此处的 Auto Pose 工具除了默认的方式以外,还提供了 Apply Auto Align 的选项,该功能可以自动对齐当前骨骼以匹配要进行重定向的另一副骨骼。大多数情况下,可以优先尝试该选项。修改结束后点击对应的 RevertApply 来撤销或应用。

修改骨骼链映射关系

根骨骼默认会设置为 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 ]”

在该模式下,可以通过 StartStop 按钮来播放和结束动画,在该过程中也可以调整上方的骨骼链设置来优化结果。确认无误后可以修改 Frame Rate(默认为 30 fps),点击 Bake 按钮即可导出重定向动画结果,也可以多选 AnimationClip 点击 Batch Bake 按钮批量导出结果。

运行时重定向:AnimationRetargetNode

Retarget From Other Character

打开 AnimGraph 窗口,在 Parameter Editor 窗口下点下 + 号选择 Object 选项添加 Object 类型参数,并将其对场景可见:

Retarget From Other Character 设置
Retarget From Other Character 设置

Retarget From Parent

开启 AttachToParent 选项后,如果 SourceCharacter 没有连接对象,则会默认将该 AnimGraph 挂载的父对象作为 SourceCharacter

开启 AttachToParent 选项(在 AnimGraph 中选择 Retarget Node 会显示对应的 Inspector 界面)
开启 AttachToParent 选项(在 AnimGraph 中选择 Retarget Node 会显示对应的 Inspector 界面)

因此一种常用的使用方式是,开启该选项,在场景中,将目标模型放置于源模型的下方:

场景中常见的重定向层级结构
场景中常见的重定向层级结构

开放参数端口

AnimGraph 窗口中鼠标单击选择对应的 Retarget Node 后,窗口中的 AnimGraph Inspector 界面会显示相应的设置。

Retarget Node 的 Inspector 界面
Retarget Node 的 Inspector 界面

该界面罗列了该 TRetargeter 资产下的所有骨骼链,可以通过勾选对应的参数来开放图中的端口。其中 “[ Root ]” 表示了根节点相关的属性。

开放端口的左侧 Drawer 是默认值可以直接修改,需要在 Play Mode 下动态修改的值可以通过 Parameter Node 连接,然后通过 AnimGraphManager 的 Set API 进行设置。

重定向 Root Motion

在目标角色的 AnimGraphManager 组件上开启 ApplyRootMotion 选项后,目标角色的根游戏对象的位移会根据源角色的位移进行重定向。该位移会根据重定向的根进行放缩,如果想要保持源角色和目标角色的位移完全一致,可以在 Retarget Node Inspector 中将 Root Motion Scale Weight 设置为 0.0。

通用角色逆向运动学
Rotation in animations