Blend Mask
What
Blend Mask 翻译成混合遮罩,可以自定义每一根骨骼的混合权重。
只用在LayeredBlendPerBone动画节点中,是原有Branch Filter的扩展。
(Branch Filter: 需要填入BoneName和depth,如果Depth为0的话,该Bone及其子Bone的权重都为1;如果Depth>0,则Bone的权重随着depth增加一层,增加1/Depth。)
Why

原来的BranchFilter只有一个Depth可以配置,权重会从指定骨骼,沿着深度依次线性递增。并且以数据的方式存在于动画节点中。如果想忽略某个子骨骼,会很难配置。
Blend Mask 本质上就是Blend Profile,可以预先针对每个骨骼配置并整体存储。控制精细,可复用。
How


Blend Mask 本质是就是Blend Profile,每个骨骼定义好混合权重,在Blend时使用。
How to Use

Blend Mask只能用在LayeredBlendPerBone 中。
Blend Profile
What
一种配置文件,配置了所有骨骼的浮点数据,这些数据会被用来混合。
Why
希望提供精细的混合设置。比如停下来时希望下半身比上半身更快混合完。
How

每个骨骼定义好混合权重,在Blend时使用。可以用在各种Blend节点中。
How to use

有两种方式:Time Blend Profiles和WeightBlendProfiles,它们都只控制混合的速度(为啥不扩展)。
时间混合描述(Time Blend Profiles) 在混合时使用归一化的 (0 - 1) 因数乘以基本的混合值。数值 1.0 意味着以正常速度混合,数值越小混合越快。数值 0.0 代表瞬间混合。
举个例子,如果如下进行设置:
- 骨盆和所有上半身骨骼设为 1.0。
- 腿和所有下半身骨骼设为 0.5。
这会导致腿部根据该混合描述的基本混合时间,以两倍的速度进行混合。如果将其在 以布尔混合姿势(Blend Poses by bool) 节点上使用,基本混合时间设为 2.0 秒,那么腿部只需要 1.0 秒来完成混合。其余所有设为 1.0 的骨骼仍然需要基础的 2.0 秒。
权重混合描述(Weight Blend Profiles) 在混合时相对基本混合值使用权重因子。数值 1.0 将会以正常速度混合,数值越大,混合速度越快。
TotalBlendTime = BlendTime * Time
举个例子,如果如下进行设置:
- 骨盆和所有上半身骨骼设为 1.0。
- 腿和所有下半身骨骼设为 2.0。
这会导致腿部根据该混合描述的基本混合时间,以两倍的速度进行混合。数值 2.0 意味着 两倍 速度,3.0 则为 三倍 速度。
TotalBlendTime = BlendTime / Weight。
可以查看UBlendProfile::FillSkeletonBoneDurationsArray