Blend Mask

What

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

Why

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

How

Pasted image 20240820215440.png
Pasted image 20240820215446.png
Blend Mask 本质是就是Blend Profile,每个骨骼定义好混合权重,在Blend时使用。

How to Use

Pasted image 20240820215601.png
Blend Mask只能用在LayeredBlendPerBone 中。

Blend Profile

What

一种配置文件,配置了所有骨骼的浮点数据,这些数据会被用来混合。

Why

希望提供精细的混合设置。比如停下来时希望下半身比上半身更快混合完。

How

Pasted image 20240820215826.png
每个骨骼定义好混合权重,在Blend时使用。可以用在各种Blend节点中。

How to use

Pasted image 20240820215951.png
有两种方式: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