目标

在上一篇博客《学习UE4动画蓝图:配置脚部IK》中,IK功能解决了“脚部陷入地下”的问题,但是还是有“脚部悬空”的问题。《[UE4蓝图]虚幻4中完整实现脚部IK(二)(完结) - 知乎》这篇文章提出可以将根骨骼向下偏移来解决这个问题,我决定使用这个思路,下面是我的实践。

1.偏移根骨骼

1.1 动画蓝图的 AnimGraph 中添加对根骨骼的偏移

添加一个变换(修改)骨骼节点:

  • Bone to Modify 选择根骨骼root
  • Translation Mode 选择Add to Existing,这表示将对现有的transform做一个偏移。
  • Translation Space 选择World Space,这表示偏移的变量将采用世界空间。

偏移的变量为Root Offset,将在事件图表中设置

1.2 角色蓝图中添加脚部悬空偏移变量

增加一个变量FootOffset表示脚部的偏移(后续会添加对其计算的逻辑):

另外,由于模型的根骨骼会发生偏移,那么之前射线的操作会有错误,需要对IK Foot Trace函数做修正:增加一个Height Offset的输入表示高度的偏移,然后在GetActorLocation之后应用上在Z轴上,这才是真正的人物中心点。(图中注释框的标题描述不准确)

随后在调用这个函数时,记得将FootOffset输入给它。

1.3 动画蓝图的 事件图表 中获取根骨骼的偏移

1.4测试根骨骼偏移的效果

为了测试,在角色蓝图中连入一个临时的逻辑:按下Q/E键会升高/降低FootOffset

效果:

2. 在角色蓝图中计算根骨骼偏移量

根骨骼的偏移,也是需要对脚部做射线操作。
首先在角色蓝图中添加一个函数FootAirTrace用来获取脚部悬空的高度:

它的结构和之前的IK Foot Trace很像,但是在射线的起止点以及最后偏移的计算上有很大差别。这次的射线逻辑如图:

然后,在Tick中随时做双脚的射线计算悬空的偏移,这个值是一个负值,二者更小的值是FootOffset

3. 平滑由于射线操作导致的动作突变

由于使用了射线的结果来决定骨骼的状态,当射线的表面有突变时(比如台阶),得到的结果也会有突变。为了减少此突变,可以使用FInterp To节点来平滑

随后在射线操作导致的会突变的变量中都加入FInterp To节点来平滑过渡:

效果


学习UE4动画蓝图:实现双脚贴地相关推荐

  1. 学习UE4动画蓝图:配置脚部IK

    目标 设想,当角色所在的地面平坦时,双脚和地面贴合的高度,正是胶囊体与地面接触的高度,此时没有视觉上的问题.然而,当角色所在的地面不平坦时,双脚各自所在的位置,和胶囊体与地面接触的高度是不一样的,此时 ...

  2. 学习UE4动画蓝图:创建一个射击姿势并使用

    目标 本篇的目标是从一个包含射击的动画序列中创建一个射击姿势,并让角色可以随时切换成"射击姿势".我的工程上接<使用UE4动画混合空间实现侧向和后退移动>,不过理论上只 ...

  3. 学习UE4动画蓝图:配置手部IK

    目标 逆向运动学(Inverse Kinematics)简称IK是相对于 "正向运动学" 的. "正向运动学" 即从骨骼的上级到下级进行旋转来达到自己想要的姿势 ...

  4. [UE4] 动画蓝图的 Beginplay 事件不激活的解决办法:换用 Initialize 事件

    动画蓝图的 beginplay 事件接受的信号是父类的 beginplay 信号 而我是在角色蓝图的 beginplay 事件里面给角色的动画蓝图赋类引用的 因此父类受到 beginplay 信号的时 ...

  5. [玩转UE4动画系统]教程的大纲及设计思路

    本教程采用图文教程+视频教程的多元化形式,我会为不同的知识点选择适当的表达方式. 教程内容将同步免费发布于 开发游戏的老王(知乎|CSDN)的玩转UE4动画系统 专栏. 教程中使用的资源及工程将以开源 ...

  6. ue4蓝图运行顺序_学习UE4,先学蓝图还是c++_资源库

    由于UE4编程从语言上划分为c++和蓝图脚本,所以学习UE4的人都会在蓝图和c++之中摇摆不定.下面为大家分享UE4蓝图和c++各自的优势与实用性,大家可以根据这些信息酌情选择先学习蓝图还是c++. ...

  7. UE4 虚幻引擎 Montage蒙太奇/动画蓝图状态机 踩过的坑记录

    惯例先说两句 实在惭愧,和朋友一起做UE4从10月份就说好了,结果依旧拖到了寒假,然而毕设又来了. 第一关的锅我背了三个月还没做完,直到疫情被困在家必须好好干一把了(加油) 以下是在最近做一个简单的道 ...

  8. 使用UE4动画混合空间实现侧向和后退移动

    目标 在之前的博客<学习UE4官方第三人称模板中的内容>里,角色已经可以移动和跳跃了.不过,角色的朝向是总是面对移动方向的,而我想尝试让角色朝向面对相机的方向,即角色应该可以"侧 ...

  9. UE4动画系统,蒙太奇动画使用,添加动作

    提示:仅供学习参考 前言 一.什么是蒙太奇? 二.实现步骤 1.使用第三人称游戏c++模板创建一个项目,创建动画蒙太奇 2.在动画蓝图中添加蒙太奇 3.绑定鼠标左键输入 4.添加c++代码 5.设置动 ...

最新文章

  1. 【Python基础】使用Matplotlib可视化数据的5个强大技巧
  2. strip 命令的使用方法
  3. 设计模式之观察者模式demo
  4. layui选项卡嵌套选项卡_在ProtoPie中使用嵌套组件构建选项卡栏
  5. 几天没写代码,就……
  6. vim 显示tab键
  7. mybatis中的动态Sql略解,基础理解,为什么要使用动态sql,动态sql相比于传统sql的区别;仅作笔记,如有错误请及时指出
  8. 自学DevExpress为Form表格换肤
  9. python爬虫实战之爬取QQ音乐
  10. [Spring Boot 系列] 集成maven和Spring boot的profile 专题
  11. 写了个自动批改小孩作业的代码
  12. android手机扇区数据读写,磁盘、SD卡、移动磁盘物理扇区读写
  13. 虚拟域服务器拒绝连接,远程winrm上的“访问被拒绝”
  14. TaxThemis: Interactive Mining and Exploration of Suspicious Tax Evasion Groups
  15. SpriteAtlas
  16. C++ | C++ 重载运算符和重载函数
  17. 模式的秘密——观察者模式
  18. 阿里云开源离线同步工具DataX3.0
  19. 创业内外部环境综合分析:创业究竟需要什么?
  20. JSPatch 尝试

热门文章

  1. 用友携国资国企走进浙江龙游,共探区县国资智慧监管新样板
  2. 死磕Android_View工作原理你需要知道的一切
  3. 各大免费邮箱邮件群发账户SMTP服务器配置及SMTP发送量限制情况
  4. matlab画气象要素,基于MATLAB实现3种气象数据读取和绘图.pdf
  5. 【UiPath2022+C#】UiPath 练习和解决方案-变量、数据类型和控制流程
  6. [Julia语言]使用Chudnovsky 算法快速计算圆周率 Pi (π) 值
  7. js批量操作json数据并保存
  8. DNS和IP的WHOIS查询
  9. OC语言类的深入和分类
  10. JRtplib开发笔记(四):JRtplib的VS开发环境搭建以及Demo