介绍
动画层指的是实现了某个动画层接口(AnimLayerInterface)的独立动画蓝图。在传统虚幻开发中,一般直接链接到主动画蓝图。
而GMS是一个数据驱动的运动系统,它进一步将动画层的概念进行拆分:
- 动画层设置:静态数据,用于配置一个动画层实例会用到的动画资源,逻辑参数等。
- 动画层实例:即实现了GMS中预设动画层接口(ALI_Locomotion,ALI_Overlay 等)的独立动画蓝图,即动画的逻辑。
你可以在运动集设置中选择不同的动画层设置,当你切换不同的运动集,GMS会自动将"动画层设置"对应的"动画层实例"给链接到主动画蓝图,这叫做“实现跟随配置”的代码设计模式。
而动画层设置与动画层的关系是由动画图表设置(AnimGraphSetting)定义。
动画图表设置
动画图表设置是一个类型为GMS_AnimGraphSetting的数据资产,你可以在运动系统组件(GMS_CharacterMovementSystem)上通过AnimGraphSetting指定不同的图表设置。
下图是默认提供的针对Mannequin动画图表设置。
它能做什么?
得益于“动画层设置”和“动画层实例”之间的映射关系,当不同的动画层设置被应用时,会自动链接不同的动画实例,以达到动态切换底层逻辑。采用这种灵活的架构,你可以完全轻易地新增,修改,或替换相应的功能。
Note
如果你有自定义的动画层she'zhi,它会自动出现在运动集的配置上,但你需要在动画图表中指定好它们之间的映射关系,才能使其正常工作。
步幅扭曲(Stride Warping)
Stride Warping 会根据角色的实际移动速度调整动画步幅,帮助脚步与地面位移保持一致。
骨骼引用
Stride Warping 的骨骼引用按骨架配置。在与目标骨架配套的 GMS_AnimGraphSetting 数据资产中设置:
StrideWarpingBoneReference:填写PelvisBone和IKFootRootBone。StrideWarpingFootDefinitions:为每条腿添加一项,填写对应的IKFootBone、FKFootBone和ThighBone。双足角色通常配置左右腿各一项。
默认的 States 动画层会在应用图表设置时自动读取并传入这些引用。自定义动画层或自定义节点图需要将相同配置传给 Stride Warping 节点的 ExternalBoneReference 和 ExternalFootDefinitions。
动画图表中的节点
在 locomotion 动画图表中添加 Generic Stride Warping 节点(AnimGraph 节点分类:GMS|Animation Warping),并为其提供上述骨骼引用。图表节点的 Mode 决定步幅数据来源:
- Graph:从动画根运动数据读取步幅方向和根运动速度,并根据实际移动速度计算缩放。此模式需要根运动数据;默认的缺失根运动处理会停用节点,因此没有根运动时不会执行扭曲。
MinRootMotionSpeedThreshold默认值为10,可按项目需要调整。 - Manual:使用显式输入的
StrideDirection和StrideScale。
默认运动动画层中的开关
默认运动动画层设置为 Start 和 Pivot 动画提供 Stride Warping 启用与混合参数;Cycle 动画通过 bEnableStrideWarping 控制是否启用。对于非人形骨架,应关闭 Stride Warping。配置后请检查所有骨骼引用都存在于目标 Skeleton 中,并在实际动画图表中确认节点输入已接通。