SequenceEvaluator和SequencePlayer一样本质上最终都是输出动画序列的信息。但SequencePlayer可以直接自动播放动画,SequenceEvaluator不行. SequenceEvaluator更强调通过在其自身中使用动画节点函数来得到想要的指定动画的帧信息。 SequenceEvaluator和SequencePlayer的相互转换 在Lyra中SequenceEvaluator经常需要和节点函数搭配使用,动态...
这里为了显示效果,使用的是Sequence Evaluator来输出Sequence在某个时间点的固定动作。 2.5 State Machines 状态机 状态机提供了一种图形化的方法来将Skeletal Mesh上的大量Animation划分到一系列不同的State中。 State之间的切换可以通过转换条件(Transition Rules)进行控制,并且可以设置在切换时使用的Blend模式,这里与在动...
全新的动画节点函数,方便获取动画状态信息。Sequence Evaluator - 序列评估器 程序控制节点,支持动画性能优化。Debugging Tools - 调试工具 RewindDebugger等增强调试功能。IK Rig & Control Rig - 动画系统 详细介绍IK Rig和ControlRig的使用方法和更新内容。物理控制组件 - 物理动画提升 物理动画组件升级,...
2.4 Blend Nodes列举了几种混合节点,根据需要选择。示例中使用Sequence Evaluator输出特定时间点的固定动作。2.5 State Machines 状态机状态机提供图形化方法,将Skeletal Mesh上的大量动画划分到不同State中,通过转换条件控制State切换,并设置切换时使用的Blend模式。状态机允许轻松控制角色在不同动画之间...
进入TurnInPlaceRotation状态后,动画仅包含一个SequenceEvaluator节点。第一次进入时,执行OnBecomeRelevant函数,将TurnInPlaceAnimTime置为0,表示动画播放的起始时间。OutputAnimationPost的SetUpTurnInPlaceRotation函数中会根据当前的RootYawOffset计算转身方向,大于0表示向左,小于0表示向右。关键的是Update...
Distance Matching只能应用于sequence evaluator节点,目前我是没有找到使用Blend Space之类的方式,理论上可以通过修改或者扩充源码实现对Sequence Player节点的支持的,像上述的使用多个停步动画做成Blend Space的方式就行不通了,不过问题不大,因为这几个动画也不能做融合。 使用Distance Matching的前提是动画序列有根运动数据...
官方没有用动画节点来实现,而是利用SequenceEvaluator和AnimNode 函数来实现的。github上有个大佬之前做了动画节点版本的,个人觉得比较好用:RomanMerkushin/DistanceMatching: Distance matching plugin (http://github.com) 官方文档:Distance Matching 第一部分基本就这些内容了,最后小结: ...
//根据输入的DistanceToTarget(此刻角色离预测的目标点的距离),与距离曲线上的值 //来得到动画应该步进到的位置,即NewTime const float NewTime = UE::Anim::DistanceMatchingUtility::GetAnimPositionFromDistance(AnimSequence, -DistanceToTarget, CurveUID); if (!InSequenceEvaluator.SetExplicitTime(NewTime)) ...
其次是各个节点的更新,对应的函数为FAnimNode_Base::Update_AnyThread。很多节点需要每Tick做一些事情,比如Sequence Evaluator,状态机节点都需要执行更新。 最后就是计算Pose,对应的函数为FAnimNode_Base::Evaluate_AnyThread。 Blend节点 如何看一个节点做了什么呢,以Blend节点为例。
先从FaullBody_CycleState中讲起,主要需要知道的就是动画播放的逻辑是用SequncePlayer和SequenceEvaluator进行播放的重写他们的OnUpdate函数输出对应的动画,区别是SequncePlayer是取整个动画,而SequenceEvaluator只是取其中的一帧,这里上半身的动画只取一帧就行,因为只用瞄准的抬手的姿势进行混合上半身就可以了 ...