我这做表情动画融合到演员身上时被这个函数坑了下,主要还是没有看这个函数的注释。
动画蓝图上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下即可。