首先是思路

Foot Placement 其实就是通过IK动画调整骨骼把游戏角色的双脚固定在地面上,确保角色在斜坡或者凹凸的地形上时可以正确的将脚放

置在其表面上 :

UE4 Foot Placement (脚部IK) 的实现


文档链接 : https://docs.unrealengine.com/en-US/Engine/Animation/IKSetups/index.html
你可以在 Content Examples 项目里找到上面文档里的例子


虚幻的一篇官方文档介绍了一些关于 Foot IK 的内容,不过并不是 “step-by-step” 的教程,只是一个概述,思路很简单,就是通过射线断角色双脚到地面的距离计算出一个 偏移量(offset) ,然后根据这个 偏移量 来移动骨骼 调整双脚上下的位置来贴近地面. 但是你只能通过关闭物理碰撞或是只检测射线来看到效果,而且如果角色双脚到地面的距离大于最大距离的时候(骨骼的长度)整个角色就会显得非常不自然,所以我们还需要控制整个身体偏移让人物的脚可以到达地面,而且通过移动整个身体我们也不需要担心碰撞的问题了.


UE4 Foot Placement (脚部IK) 的实现
UE4 Foot Placement (脚部IK) 的实现
下面是用蓝图实现的具体过程.


实现


  • Setup Animation Blueprint

    我们首先设置动画蓝图,

    Two Bone Ik 节点控制两个脚部骨骼的偏移:

    UE4 Foot Placement (脚部IK) 的实现

    Transomform Bone 节点来控制身体( root bone )的偏移:

    UE4 Foot Placement (脚部IK) 的实现
    设置完成后可以自行调整查看效果,之后在角色蓝图里计算出 偏移量 后给再这三个 Offset 赋值.


  • 定义 Tracing Function ( Foot Trace )

    UE4 Foot Placement (脚部IK) 的实现
    红色线段的长度是我们要求的值,Trace DistanceTrace HitTrace End 都是已知的.

    蓝图实现:
    UE4 Foot Placement (脚部IK) 的实现
    这里的 ActorLocation 就是 CapsuleComponent 的中心点的位置,从 CapsuleComponent 的中心向下发射一条射线,长度是 CapsuleHalfHeight + TraceDistance,然后求出 Out Hit Trace End ( Trace End ) 与Out Hit Location ( Trace Hit ) 的距离再减去 TraceDistance 后我们就得到了需要return的 Foot Offset.


  • 计算 Hips Offset

    蓝图:
    UE4 Foot Placement (脚部IK) 的实现
    Hip Offset 的值为两个 Foot Offset 中最小的一个,不过不能大于0 ( min ~ 0 ).

  • Character Blueprint 赋值

    角色蓝图:
    UE4 Foot Placement (脚部IK) 的实现
    计算出 偏移量 后给传递给动画蓝图.

Done.

相关文章:

  • 2021-11-06
  • 2021-09-21
  • 2021-12-19
  • 2021-10-22
  • 2021-12-26
  • 2022-01-24
  • 2021-06-27
猜你喜欢
  • 2022-01-10
  • 2021-05-14
  • 2022-12-23
  • 2021-06-24
  • 2021-12-15
  • 2021-10-02
  • 2021-07-02
相关资源
相似解决方案