UE的Foot IK可以有多套方案,老的有动画蓝图中用TwoBoneIK,新的做法有ControlRig的BasicIK、FullBodyIK。博主针对FootIK做一个简单的验证,因此使用ControlRig+TwoBoneIK的做法,并做一下记录,之前做过UE FootIK的大佬可以跳过了。
先看一下效果(只考虑了角色待机时的脚位置修改):
1.原理
FootIK会遇到2种情况,一种是细小障碍物本身不是地面碰撞,且可以与胶囊体产生穿插(如左图)。还有一种是角色上下楼梯时胶囊体位于上一级楼梯,需要修改Pelvis关节将骨骼整体位置向下拉(如右图),以达到双脚都着地的效果。
因此在腰部位置发射射线,保证射线长度大于脚长是比较重要的,这样才能判断上述第二种情况。
流程:
1.以某个绑定给root关节的插槽A为起始点向地面发射射线(或投射球体)
2.若射线碰撞点超出了腿的长度,则将Pelvis骨向下偏移C,并设置相应IK目标点
3.若射线碰撞点小于腿的长度,则IK位置向上移动B,即直接设置IK目标点到射线碰撞点
1.设置Control Rig
新建一个Control Rig文件,因为只是做个想法验证,大致创建如下几个控制器:
一些Control Rig相关的问题点:
1.Forwards Solve、Backwards Solve分别是控制器驱动骨骼、骨骼驱动控制器,和IK并没有关系。
2.直接拖拽控制器移动不了位置,需要切换到Initial再粘贴控制器坐标值。
3.在赋值偏移值时,用节点Set Relative Trasnform并勾选Parent Initial,可以用初始值加上偏移值,这样避免每次值都被叠加修改。
4.先进Maya看下模型双腿骨骼轴向,然后填入TwoBoneIK参数中。
5.控制器IK点的坐标,外部更新时需要外部Inverse Transform Location转换为本地坐标。
2.Control Rig流程
不截图了,流程图说下Control Rig Forward Solve中的处理流程:
然后将ControlRig配置进动画蓝图:
最后在动画蓝图EventGraph中处理Trace By Channel等逻辑即可。