我这做表情动画融合到演员身上时被这个函数坑了下,主要还是没有看这个函数的注释。
动画蓝图上DefaultGroup下有两个槽AnimationSlot和FaceAnimationSlot,通过LayeredBlendperBone使表情动画的头部动画融合到人身上,动画蓝图大致以下:
然后代码或者Sequencer中向两个槽设置动画即可,但发现效果是不对的。
代码和sequencer都是通过PlaySlotAnimationAsDynamicMontage来实现的,看注释的时候发现:
/** Play normal animation asset on the slot node by creating a dynamic UAnimMontage. You can only play one asset (whether montage or animsequence) at a time per SlotGroup. */
UFUNCTION(BlueprintCallable, Category="Animation")
UAnimMontage* PlaySlotAnimationAsDynamicMontage(UAnimSequenceBase* Asset, FName SlotNodeName, float BlendInTime = 0.25f, float BlendOutTime = 0.25f, float InPlayRate = 1.f, int32 LoopCount = 1, float BlendOutTriggerTime = -1.f, float InTimeToStartMontageAt = 0.f);每个Group只能调用一个动画资源,发现问题了,把两个槽放到两个Group下即可。
本文介绍在使用动画蓝图进行表情动画融合时遇到的问题及解决方法。通过合理设置AnimationSlot和FaceAnimationSlot,并利用LayeredBlendperBone,确保每个Group只调用一个动画资源,从而正确融合表情动画。

527

被折叠的 条评论
为什么被折叠?



