首先,我们被正式要求在构建脚本中设置两个重要数据,但事实上,这对于我们理解IK的应用并不重要。这两个值本身只是为了使IK在不同的大小比例下正常工作。因此,这里不需要太多的叙述。
这部分功能主要是在我的图框中选择的位置,不同的颜色对应不同的功能。你可以自己看看。让我简单地解释一下,我使用线性跟踪来确定在我脚下一定距离内是否有障碍物。如果有,我返回从脚到障碍物的偏移,如果没有,我返回0。
这里没有什么要说的,即调用函数,传入脚的骨骼名称和检测距离(这里正式使用胶囊高度的一半),然后通过函数计算偏移量。Finterp只提供平滑的过渡。
这里没什么好说的,就是调用函数,传入脚部的骨骼名字和检测距离(官方这里用的是胶囊体一半的高度),然后通过函数计算得出偏移量,Finterp只是提供了一个平滑的过渡。
这张图就有趣的多了,官方这张配图似乎与其函数中所做的不同,因此我在旁边画出了官方实际在做的事(灵魂画师),绿色方框代表射线起始点,射线终点是脚部,灰色是胶囊体。
因此,官方的做法其实是不太好的,因为当我们的障碍物是在脚之下就检测不到了。
具体解释看官方的文字就行了,值得一提的是在虚幻4骨骼中右脚的轴是对称的,因此我们需要把偏移量乘-1才能让骨骼正确的IK。
而这里我们也只需要把偏移量传给X轴,因为之后用到的Two Bone IK中的Effector是被设置为了骨骼空间(Bone Space),骨骼的上下偏移是由X轴控制的。
在动画图表中的Two Bone IK节点中,我们需要选中他,并设置一些东西:
1.选择需要进行IK的骨骼
2.选择Effector为骨骼空间(Bone Space),并设置我们在前面Trace函数中所用的骨骼
3.选择Joint Target(关节目标)为父骨骼空间(Parent Bone Space),并设置为大腿(thigh)骨骼
在这里JointTarget变量的数值是自己试的,我们可以选中TwoBoneIk节点,然后在旁边预览窗口看到Joint Target的位置,然后我们可以在右边的预览值里改参数测试,合适后就按Apply应用为默认值就行了,具体如下图