混合节点

根据一组条件将多个动画混合在一起的动画节点。

Windows
MacOS
Linux

混合节点(Blend Node) 用于将多个动画混合起来。此类节点只能放置在动画蓝图的 动画图(Anim Graph) 中。每个混合节点获取多个姿势和一个阿尔法或权重值,这个值用来计算每个姿势在最终输出中的权重。一些混合节点可能更为复杂,且需要更多输入数据。

应用递增

应用递增(Apply Additive)应用网格体空间递增(Apply Mesh Space Additive) 节点根据阿尔法值向基本普通动画姿势添加递增姿势。

ApplyAdditive.png

引脚

说明

输入引脚

基本(Base)

要用作基础的普通姿势。

递增(Additive)

要在基础上混合的递增姿势。

阿尔法(Alpha)

范围[0.0, 1.0]之间的浮点值,用作阿尔法值。它确定递增姿势的作用力。值0.0表示完全没有向 基本(Base) 输入姿势添加 递增(Additive) 姿势,而值 1.0 表示向 基本(Base) 输入姿势添加了拥有完整作用力的 递增(Additive) 姿势。

输出引脚

姿势(Pose)

应用混合后的最终姿势。

应用递增(Apply Additive) 节点也受到4.11中引入的 LOD阈值(LOD Threshold) 系统的影响,您可以在 应用递增(Apply Additive) 节点的“细节(Details)”面板中找到该设置。

perf.png

属性

描述

LOD阈值

这是此节点所允许运行的最大LOD。举例而言:如果将LOD阈值设为2,其将运行到LOD 2,但在组件LOD变为3时将自身禁用。

混合

标准的 混合(Blend) 节点就是两个输入姿势根据阿尔法值的混合结果。

Blend.png

引脚

说明

输入引脚

A

要混合的的第一个姿势。

B

要混合的第二个姿势。

阿尔法(Alpha)

范围[0.0, 1.0]之间的浮点值,用作阿尔法值。它确定两个姿势的权重。值0.0让A输入姿势获得完整权重,而值1.0让B输入姿势获得完整权重。

输出引脚

姿势(Pose)

应用混合后的最终姿势。

按布尔值混合姿势

按布尔值混合姿势(Blend Poses by bool) 节点使用布尔值作为键,基于时间混合两个姿势。当布尔值为true时,使用与true输入引脚相连的姿势;当布尔值为false时,使用false姿势。每个姿势都有一个浮点值“混合时间(Blend Time)”,用来控制混入这个姿势所需的时间。

BlendPosesByBool.png

引脚

说明

输入引脚

活跃值(Active Value)

这是用来决定要使用两个姿势中的哪个姿势的输入布尔值。

True姿势(True Pose)

使用当布尔值设为true时将混合的姿势。

False姿势(False Pose)

使用当布尔值设为false时将混合的姿势。

True混合时间(True Blend Time)

定义混入true姿势所需的时间。

False混合时间(False Blend Time)

定义混入false姿势所需的时间。

输出引脚

姿势(Pose)

应用混合后的最终姿势。

In the Details panel, you can show/hide the Blend Time pins as well as set the Transition Type (Standard or Inertialization ), or Blend Type .

按整数值混合姿势

按整数值混合姿势(Blend Poses by Int) 节点使用整数值作为键,基于时间混合任意数量的姿势。对于每个输入整数值,将使用与该值输入引脚关联的姿势。例如,当整数设为0时,将使用与“混合姿势0(Blend Pose 0)”相连的姿势。每个姿势都有一个浮点值“混合时间(Blend Time)”,用来控制混入这个姿势所需的时间。

BlendPosesByInt.png

要创建更多混合姿势输入,需在节点上单击右键,并从上下文菜单中选择 添加混合引脚(Add Blend Pin)

AddBlendInput.png

在所需输入上单击右键并选择 移除混合引脚(Remove Blend Pin) 可以移除输入。

引脚

说明

输入引脚

活跃子索引(Active Child Index)

该输入整数值决定要使用哪个姿势。

混合姿势X(Blend Pose X)

使用“活跃子索引(Active Child Index)”设为X时将混合的姿势。

混合时间X(Blend Time X)

定义混入X姿势所需的时间。

输出引脚

姿势(Pose)

应用混合后的最终姿势。

细节(Details) 面板中,可显示/隐藏混合时间引脚,并能设置 过度类型(Transition Type)(标准或惯性化 )或混合类型

按列举混合姿势

按列举混合姿势(Blend Poses by Enum) 节点将列举值用作键,并基于时间在姿势间进行混合。可使用默认姿势,也可通过 活跃列举值(Active Enum Value),在连接列举中添加已辨识值的额外姿势。此外,各姿势均具有用于控制混合到姿势所需时长的浮点值“混合时间”。

BlendByEnum.png

引脚

说明

输入引脚(Input Pins)

活跃列举值(Active Enum Value)

由附加列举或索引值定义的当前选定姿势。

默认姿势(Default Pose)

要使用的默认姿势。

附加姿势(Additional Poses)

基于指定列举值的附加姿势。

混合时间(Blend Time)

定义混合到指定姿势所需的时间量。

输出引脚(Output Pins)

姿势(Pose)

应用混合后的最终姿势。

细节(Details) 面板中,可显示/隐藏混合时间引脚,并能设置 过度类型(Transition Type)(标准或惯性化 )或混合类型

按骨骼分层混合

按骨骼分层混合(Layered blend per bone) 节点执行遮掩混合,这种混合方式仅影响骨架中的一小部分特定骨骼。例如,如果您只想对一个角色腰部以上的部位应用动画,可以使用 按骨骼混合(Blend Per Bone) 来实现。

混合节点——按骨骼混合

引脚

说明

输入引脚

基本姿势(BasePose)

要混合的第一个姿势。

混合姿势(BlendPose)

要混合的第二个姿势。

混合权重(BlendWeight)

范围[0.0, 1.0]之间的浮点值,用作阿尔法值,用来确定递增姿势的作用力。值0.0表示完全没有向 基本(Base) 输入姿势添加 递增(Additive) 姿势,而值1.0表示向 基本(Base) 输入姿势添加了拥有完整作用力的 递增(Additive) 姿势。

添加引脚(Add Pin)

创建另一个混合姿势和混合权重输入。

输出引脚

输出姿势(OutPose)

应用混合后的最终姿势。

插槽

Slotnode.png

插槽(Slot) 节点显示来自给定动画插槽的结果动画。

有关将插槽与动画蒙太奇系统结合使用的更多详细信息,请参阅动画蒙太奇

惯性化

上图左侧通过传统淡入淡出继续挥舞,但右侧使用惯性混合更自然地结束。

惯性混合是传统动画淡入淡出的高性能替代方案,可生成后期处理的自然过渡。激活惯性混合后将不再计算源姿势。相反,传统混合在过渡期间会计算源姿势和目标姿势,将其组合成混合姿势。动画图表必须包含 Inertialization 节点方可使用惯性混合。

Inertialization.png

在图表中,Inertialization节点位于惯性混合请求源 之后 的位置。Inertialization节点追踪姿势运动和曲线变化,以便在激活惯性混合后继续向目标动画移动。此节点由流入源姿势的惯性混合请求来激活。状态机过渡混合节点链接动画图表链接动画层 均可触发惯性混合,如下图所示。

Node_TransitionType.png

上图中,Blend Poses by bool 节点的过渡类型设为惯性化(Inertialization)。要使用惯性混合,在动画图表中,Inertialization节点必须放置在Blend Poses by bool节点之后的位置。

下图中两个 转换规则(Transition Rules)混合逻辑(Blend Logic) 已设为使用惯性化。要使用惯性混合,在动画图表中,Inertialization节点必须放置在包含此类过渡的 State Machine 节点之后的位置。

StateMachine_Transition.png

欲了解在状态机中使用惯性混合的详情说明,请参见转换规则 .。

下图中选择了 "Upper Body" 动画图层详细信息(Details) 面板显示了 图表混合(Graph Blending) 选项。动画图层可混入或混出,但只能借助惯性混合。Inertialization节点必须放置在链接此动画蓝图的 Linked Anim Layer 节点之后的地方。负值表示混合时间将由另一传入或传出动画图层决定。

LinkedAnimGraphLayer.png

Inertialization节点必须在惯性混合请求源之后的位置连接,但不一定要紧挨着。将Inertialization节点尽量靠近 输出姿势(Output Pose) 连接,便能可尽可能多地延迟惯性混合。这有助于减少或消除图表中的标准混合,并提高性能。若图表缺少Inertialization节点,将在 消息日志(Message Log) 窗口中记录运行时错误。

Inertialization_Graph.png

单个Inertialization节点可处理多个惯性混合请求。将使用请求的最短混合时长。

考虑惯性混合创作动画和图表时,最好在动画仍处于运动时就开始过渡。由于惯性混合负责处理到休息姿势的自然过渡,因此无需返回中间姿势。由于惯性混合是后期处理,用于将动作过渡到目标动画,因此短混合效果最佳。惯性混合可被其他惯性混合中断,但由于可能要为了保持姿势稳定而削减后续混合时间段,因此应尽量避免导致持续中断的情况。

可根据需要在图表中放置多个Inertialization节点,各节点将处理来自源姿势的惯性混合请求。这意味着可在不同空间执行惯性混合。例如,有时需要将角色上半身和下半身的Inertialization节点分开,后跟 Layered Blend per bone 节点,接合起来形成最终姿势。应用基础姿势前,可插入Inertialization节点,将惯性混合与叠加姿势一起使用。为修复最终姿势,通常要运行惯性化后再运行IK,从而在IK空间中有效地进行惯性混合。

记住,惯性混合一旦开始,就会停止计算源姿势。由于已停止播放,因此此时不再触发源序列中的 动画通知。可能需要重构现有游戏逻辑和通知,以兼容惯性化。

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback