天天看点

学习UE4动画蓝图:实现双脚贴地目标1.偏移根骨骼2. 在角色蓝图中计算根骨骼偏移量3. 平滑由于射线操作导致的动作突变效果

目标

在上一篇博客《学习UE4动画蓝图:配置脚部IK》中,IK功能解决了“脚部陷入地下”的问题,但是还是有“脚部悬空”的问题。《[UE4蓝图]虚幻4中完整实现脚部IK(二)(完结) - 知乎》这篇文章提出可以将根骨骼向下偏移来解决这个问题,我决定使用这个思路,下面是我的实践。

1.偏移根骨骼

1.1 动画蓝图的 AnimGraph 中添加对根骨骼的偏移

添加一个变换(修改)骨骼节点:

学习UE4动画蓝图:实现双脚贴地目标1.偏移根骨骼2. 在角色蓝图中计算根骨骼偏移量3. 平滑由于射线操作导致的动作突变效果
  • Bone to Modify 选择根骨骼

    root

  • Translation Mode 选择

    Add to Existing

    ,这表示将对现有的transform做一个偏移。
  • Translation Space 选择

    World Space

    ,这表示偏移的变量将采用世界空间。

偏移的变量为

Root Offset

,将在事件图表中设置

1.2 角色蓝图中添加脚部悬空偏移变量

增加一个变量

FootOffset

表示脚部的偏移(后续会添加对其计算的逻辑):

学习UE4动画蓝图:实现双脚贴地目标1.偏移根骨骼2. 在角色蓝图中计算根骨骼偏移量3. 平滑由于射线操作导致的动作突变效果

另外,由于模型的根骨骼会发生偏移,那么之前射线的操作会有错误,需要对

IK Foot Trace

函数做修正:增加一个

Height Offset

的输入表示高度的偏移,然后在

GetActorLocation

之后应用上在Z轴上,这才是真正的人物中心点。(图中注释框的标题描述不准确)

学习UE4动画蓝图:实现双脚贴地目标1.偏移根骨骼2. 在角色蓝图中计算根骨骼偏移量3. 平滑由于射线操作导致的动作突变效果

随后在调用这个函数时,记得将

FootOffset

输入给它。

学习UE4动画蓝图:实现双脚贴地目标1.偏移根骨骼2. 在角色蓝图中计算根骨骼偏移量3. 平滑由于射线操作导致的动作突变效果

1.3 动画蓝图的 事件图表 中获取根骨骼的偏移

学习UE4动画蓝图:实现双脚贴地目标1.偏移根骨骼2. 在角色蓝图中计算根骨骼偏移量3. 平滑由于射线操作导致的动作突变效果

1.4测试根骨骼偏移的效果

为了测试,在角色蓝图中连入一个临时的逻辑:按下Q/E键会升高/降低

FootOffset

学习UE4动画蓝图:实现双脚贴地目标1.偏移根骨骼2. 在角色蓝图中计算根骨骼偏移量3. 平滑由于射线操作导致的动作突变效果

效果:

学习UE4动画蓝图:实现双脚贴地目标1.偏移根骨骼2. 在角色蓝图中计算根骨骼偏移量3. 平滑由于射线操作导致的动作突变效果

2. 在角色蓝图中计算根骨骼偏移量

根骨骼的偏移,也是需要对脚部做射线操作。

首先在角色蓝图中添加一个函数

FootAirTrace

用来获取脚部悬空的高度:

学习UE4动画蓝图:实现双脚贴地目标1.偏移根骨骼2. 在角色蓝图中计算根骨骼偏移量3. 平滑由于射线操作导致的动作突变效果

它的结构和之前的

IK Foot Trace

很像,但是在射线的起止点以及最后偏移的计算上有很大差别。这次的射线逻辑如图:

学习UE4动画蓝图:实现双脚贴地目标1.偏移根骨骼2. 在角色蓝图中计算根骨骼偏移量3. 平滑由于射线操作导致的动作突变效果

然后,在Tick中随时做双脚的射线计算悬空的偏移,这个值是一个负值,二者更小的值是

FootOffset

学习UE4动画蓝图:实现双脚贴地目标1.偏移根骨骼2. 在角色蓝图中计算根骨骼偏移量3. 平滑由于射线操作导致的动作突变效果

3. 平滑由于射线操作导致的动作突变

由于使用了射线的结果来决定骨骼的状态,当射线的表面有突变时(比如台阶),得到的结果也会有突变。为了减少此突变,可以使用

FInterp To

节点来平滑

学习UE4动画蓝图:实现双脚贴地目标1.偏移根骨骼2. 在角色蓝图中计算根骨骼偏移量3. 平滑由于射线操作导致的动作突变效果

随后在射线操作导致的会突变的变量中都加入

FInterp To

节点来平滑过渡:

学习UE4动画蓝图:实现双脚贴地目标1.偏移根骨骼2. 在角色蓝图中计算根骨骼偏移量3. 平滑由于射线操作导致的动作突变效果

效果

学习UE4动画蓝图:实现双脚贴地目标1.偏移根骨骼2. 在角色蓝图中计算根骨骼偏移量3. 平滑由于射线操作导致的动作突变效果
学习UE4动画蓝图:实现双脚贴地目标1.偏移根骨骼2. 在角色蓝图中计算根骨骼偏移量3. 平滑由于射线操作导致的动作突变效果