角色替换&动画重定向

如何迁移动画
Demo项目中,所有的Lyra动画,以及对第三方动画包整合的动画,都与GenericGame/Shared下的UE5标准骨架进行关联。我的其他所有系统,都共享该骨架。
如果你使用预先做好的Lyra动画,那么你不需要处理动画迁移,通过GMS你可以非常迅速的为关联了任意骨架的角色添加Locomotion动画。
兼容骨架方式
如果你是新项目,我建议你沿用GMS提供的骨架。如果你的项目已经开始,但是你有自己的UE5标准骨架,那么你可以将GMS的骨架添加到你的骨架的”兼容骨架“列表中。这样你的骨架所关联的角色也可以使用GMS骨架所关联的动画。
离线重定向方式
这是最次的选择。如果你已经有开发中的项目,且你的主角没有使用UE5标准骨架,且你自己的角色的骨架与UE5标准骨架有较大差异,那么你可能需要使用5.4的动画重定向来将GMS提供的骨架所关联的动画给迁移到你的角色上。这是一个繁琐的过程。
运行时重定向方式(推荐)
GMS提供一个BC_LiteRetargeterManager
组件和一个通用的动画蓝图ABP_Lite_Retargeter
。

它允许你在真正进行离线动画重定向前,来对不同骨架角色之间的动画重定向效果进行测试和验证,如果是项目初期,也不建议一开始就进行离线动画重定向,你会一开始就面临大量动画资源管理和迁移的心智负担。
准备运行时重定向
首先,你需要找到你的角色的主要Mesh组件,并为其添加“Main”Tag,我们称这个Mesh组件为Source。

同时在SourceMeshComponent
上,建议将VisibilityBasedAnimTickOption
设置为Always Tick Pose and Refresh Bones
用于测试。

然后在Source下附加另外一个SkeletalMesh组件叫做RetargeterMesh
,并为其添加“RetargeterMesh”Tag,这个组件我们称其为Target。

设置运行时重定向组件
为角色添加BC_Lite_RetargeterManager
组件,该组件会根据SourceMeshTag和TargetMeshTag自动查询并设置对应的组件。

Enable:决定是否启用该组件,如果取消勾选,它不会对Source和Target组件进行任何修改。
Randomized:决定是否在Retargeters列表中随机选择一个角色进行运行时重定向。
SourceOverrideMeshAsset:选中的Retargeter中的Mesh会被设置到Target组件上,这时候我们可以在这里指定一个模型去替换Source组件上的原本Mesh,GMS提供一个SKM_Manny_Invis,它具备骨架信息,可以驱动动画,但是它是隐形的。
配置IK重定向器
假设你有自己的自定义角色SKM_YourCharacter
,你希望将GMS提供的动画用到你的角色上,你就应该创建一个SKM_Manny
到SKM_YourCharacter
的IK重定向器,在UE5.4你可以使用自动重定向创建IK_Retargeter资产。
然后你就可以在该组件的Retargeters
数组上配置上要使用的角色,并可以指定它的性别。
监听事件
每当重定向器选择了指定的模型,都会产生OnChange事件,你可以拿到Retargeter的信息,并执行任意自定义逻辑。
比如下图,我根据性别为角色添加了不同的GameplayEffect从而添加了不同的性别标签到角色上。
