UE4_常见动画节点学习_Two Bone IK双骨骼IK

发布于:2024-04-26 ⋅ 阅读:(17) ⋅ 点赞:(0)

学习资料,仅供参考!

Two Bone IK 控制器将逆运动(IK)解算器应用于到如角色四肢等3关节链。

变量( HandIKWeight )被用于在角色的 hand_l 和 hand_r 控制器上驱动 关节目标位置(Joint Target Location) 属性。通过对数值进行调整,可决定角色持有武器的方式,而无需根据不同角色手动设置不同姿势的动画。

AnimGraph节点网络显示如下,可复制并粘贴到自己的动画蓝图中。

Two Bone IK属性

可在Two Bone IK节点的 细节 面板中找到以下属性:

属性

说明

IK

IK骨骼

要应用IK解算器的骨骼命名。此应为骨链末端的骨骼,如脚踝或腕骨。

拉伸限制

X

肢体最大长度的比率,用于决定缩放骨骼的时间。

Y

平移组件的最大缩放量。

允许拉伸

如为true,则可拉伸骨骼。

末端执行器

执行器空间骨骼命名

执行器位置空间设为BCSBoneSpace时,用作执行器位置的骨骼命名。

获取执行器空间的旋转

启用时,执行器(组件、父或骨骼)的旋转将应用到IK骨骼。

维持执行器Rel Rot

启用"获取执行器空间的旋转"时,将覆盖此属性。

执行器位置空间

效果器位置的参考帧。

数值

效果

平移

XYZ组件在目标骨骼上的平移。

旋转

XYZ组件在目标骨骼上的旋转。

缩放

XYZ组件在目标骨骼上的缩放。

关节目标

关节目标位置空间

关节目标位置的参考帧。

数值

效果

平移

XYZ组件在目标骨骼上的平移。

旋转

XYZ组件在目标骨骼上的旋转。

缩放

XYZ组件在目标骨骼上的缩放。

关节目标空间骨骼名称

关节目标位置空间设为BCSBoneSpace时,用作关节目标位置的骨骼命名。

Two Bone IK节点上默认公开以下引脚:

引脚

说明

输入引脚

执行器位置

在执行器位置空间中指定位置执行器的向量。

关节目标位置

在关节目标位置空间中指定位置关节目标的向量。

大体计算过程:

joint target location用于保证joint节点在root、effector location和joint target location所构成的平面上。

root为ik骨骼的父节点的父节点,三个关节,两根骨骼。

(root到effector location)的单位向量与(root到joint target location的向量)做点积,得到(effector location到joint target location的向量)。

如果脚伸不直的话,我们需要求出三个关节中中间关节的位置joint,而(root到joint的骨骼长度)、(joint到ik骨骼(即effector location)的长度)和(root到effector location的向量长度)是已知的,知道了三边,我们可以用余弦定理求出(root到joint的骨骼长度)与(root到effector location的向量长度)之间的夹角r。

root到joint的向量求出,那么就知道了joint的位置了。

root到joint的向量正好为另外两个单位向量的和乘以模长,因为r角度已经求出,而r正对着的向量为(effector location到joint target location的向量)的单位向量。

点积意义如下:

余弦定理如下:

源码解析参考:

【UE5】深入理解动画模块7: 双骨骼IK算法与源码解析_哔哩哔哩_bilibili