UE5 脚部IK

文章目录

    • 简介
    • 为骨骼添加IK骨骼
    • [control rig](#control rig)
      • [新建control rig](#新建control rig)
      • [control rig导入骨骼](#control rig导入骨骼)
    • 蓝图代码
      • [1 创建脚底的检测函数](#1 创建脚底的检测函数)
      • [2 调用脚底的检测函数](#2 调用脚底的检测函数)
      • [3 目标位置插值](#3 目标位置插值)
      • [4 寻找位置更靠下的脚,把这个偏移量当作盆骨的偏移量(总有一条腿是伸直的)](#4 寻找位置更靠下的脚,把这个偏移量当作盆骨的偏移量(总有一条腿是伸直的))
      • [5 分别偏移左右的ik骨骼和真正的盆骨骨骼](#5 分别偏移左右的ik骨骼和真正的盆骨骨骼)
      • [6 使用IK移动真正的左脚和右脚骨骼](#6 使用IK移动真正的左脚和右脚骨骼)
    • 动画蓝图

简介

从两个脚底分别向下发射射线,检测地面位置,从两个射线中找到更靠下的距离A,通过盆骨下移长度A实现人物整体往下移, 使用controlrig Ik来控制腿的伸缩

源视频

效果

为骨骼添加IK骨骼

添加IK骨骼的目的是为了确保发射射线时有一个固定的起点,让真正的骨骼去移向射线的终点,如果用真正的骨骼当起点,那么位置会出先错误的偏移。

有些模型带有IK骨骼,就是这些灰色的骨骼

如果没有自带的IK骨骼,可以手动创建虚拟骨骼,和IK骨骼的功能是一样的

必须选中Root,然后选择添加虚拟骨骼,然后选择一根骨骼,即可添加虚拟骨骼,虚拟骨骼不需要层级结构就可以工作,但是也可以在已有的虚拟骨骼上继续右键添加子级虚拟骨骼

control rig

control rig用来实现ik效果

新建control rig

资源管理器,右键 动画/control rig/控制绑定

父类选择controlrig,即可创建一个control rig

control rig导入骨骼

切换到控制绑定,然后点击绿色部分,即可导入新的骨骼

蓝图代码

1 创建脚底的检测函数

点击"我的蓝图"

新建一个函数

函数默认有一个输入节点和一个输出节点

点击输入节点,添加输入参数,参数类型为 rig element key

点击输出系节点,添加返回值为 类型为vector

如下编写方法体

1 作用是获取骨骼的变换,也就是位置缩放旋转等信息

新创建的节点名称会爆红但是没有关系,直接点击项目收起来,连接上输入参数,然后确保空间是 全局空间 即可

2 让监测点稍微水平偏移一点,防止射线打到自己的脚

使用这个新加节点

新加的节点没有类型,可以右键点击输入引脚,修改为Vector

3 射线的起点,骨骼上方50厘米

4 射线的终点,骨骼下方100厘米 ,也就是说,射线的最终检测范围是150厘米,这就是脚可以自适应的最大移动范围

5 球形射线检测,按下图添加

球型追踪器长这样,实际上是个胶囊体

2 调用脚底的检测函数

打开 向前解析图表

创建如下变量

ShouldDoIKTrace

当玩家移动、死亡时,不应该进行Ik检测,只有停下来时才进行IK检测

下边两个用来记录射线检测的结果,只保留Z分量即可

如下编写蓝图,注意这里属性节点时蓝色的

3 目标位置插值

让脚部的动作逐渐变化,直接变过去太僵硬

创建如下变量,这是真正的脚部骨骼要跟随的点

如下编写蓝图,注意插值的最后两个属性默认从10改成了15,这个属性是插值的步长

1和2 分别使用插值,将射线检测的结果逐渐插值到真正用来偏移的结果上

插值节点用的这个

4 寻找位置更靠下的脚,把这个偏移量当作盆骨的偏移量(总有一条腿是伸直的)

用更靠下的脚当作盆骨偏移的参考

盆骨是所有骨骼的根骨骼,偏移盆骨,就能让整个骨架偏移

添加新属性,记录盆骨的偏移量

如下编写蓝图,ctrolrig有if节点可以代替branch

5 分别偏移左右的ik骨骼和真正的盆骨骨骼

如下编写蓝图

使用modify transfroms节点变换骨骼

设置好要变换的骨骼,只在z方向偏移,以及在additive全局

默认的modify transforms节点长这样,直接点击第一个元素0,选择骨骼,不用管数组,元素0就是数组的第一个元素

6 使用IK移动真正的左脚和右脚骨骼

使用full body ik,根骨骼选择pelvis

这样左脚和右脚就会跟随自己的ik骨骼

动画蓝图

添加一个绑定控制

将上边创建的控制绑定类赋值给控制绑定节点

我们在控制绑定类里的创建的ShouldDoIKTrace会出现的输入列表里,点击"使用引脚",控制绑定节点就会出现引脚

然后我们调用isFalling,来让玩家在空中时不再使用ik,isFalling是第三人称示例角色动画蓝图自带的属性,他的实现原理如下

完成这一步后,我的ik就正常了,但是教程里表现仍然不正常,后边又根据速度进行了判断,只有在玩家移动时才使用ik

相关推荐
屯子来了1 小时前
Windows + VS2022 + UE5.2 编译 Fast DDS 2.14.0 完整记录
c++·ue5·fastdds
成都渲染101云渲染66661 天前
极速渲染的办法,大量算力铺垫下的“云渲染”究竟有多快
ue5·maya
3D霸霸1 天前
UE5 怎么看场景性能、判断能不能上移动端
ue5
电子云与长程纠缠1 天前
UE5 GameFeature创建与使用
开发语言·学习·ue5·游戏引擎
zhangzhangkeji1 天前
(40)UE 里从 C++到蓝图的异步节点函数,继承类 UBlueprintAsyncActionBase
ue5
混迹中的咸鱼1 天前
Unreal Engine 5 联机网络架构技术手册
网络·架构·ue5
Yuk丶2 天前
UE4 与 UE5:技术差异深度解析
c++·ue5·游戏引擎·ue4·游戏程序·虚幻
UTwelve2 天前
【UE】如何手搓一个完美贴合地形的 Mesh Decal(面片贴花)
ue5·材质·贴图·着色器
邪修king3 天前
UE5 C++ 游戏性能优化:大一也能学会的实战级优化指南
c++·游戏·ue5