Unreal蓝图-day2

砂糖桑
Aug 22, 2022
Last edited: 2022-8-23
type
Post
status
Published
date
Aug 22, 2022
slug
unreal-day2
summary
学习Unreal蓝图的第二天。主要是角色动画相关的内容。
tags
虚幻4蓝图
category
虚幻引擎
icon
password
Property
Aug 23, 2022 06:36 AM
📖
学习B站上的《UE4蓝图开发生存游戏教程》做的笔记。
UE4蓝图开发生存游戏教程_哔哩哔哩_bilibili
UE4蓝图开发生存游戏教程共计69条视频,包括:001 UE4框架、002 准备工程、003 HUD、004 相机原理及角色位置修改、005 旋转的实现、006 角色跟随相机旋转、007 下载和处理动画、008 动画模型骨骼和动画蓝图、009 导入骨骼和动画、010 动画重定向(不同骨骼)、011 理解动画蓝图-数据驱动动画、012 前进后退、013 冲刺动画、014 修复滑步问题和后退冲刺问题、015 加入左右平移、016 第一人称和第三人称切换、017 设置和初始化属性、018 持续减少饱腹度、019 塌陷为宏、020 创建运行时UI、021 关联UI和数据、022 创建GlobalTimer、023 设置昼夜循环逻辑、024 设置昼夜循环效果、025 准备道具素材、026 虚幻碰撞系统、027 解决碰撞的两个问题(及初识接口)、028 接口、029 拾取面板UI、030 显示拾取面板功能、031 初步拾取功能、032 背包系统尝试增加物品、033 完善拾取功能、034 创建拾取面板、035 显示物品列表、036 背包实时添加元素、037 修改鼠标隐藏Bug并增加消息显示、038 增加储物箱的蓝图和界面、039 储物箱添加和删除内容、040 储物箱UI的初始化和移除元素、041 判断左右键点击、042 物品栏被点击的初步处理、043 Content数组改造为字典、044 物品栏删除物品函数、045 右键点击背包、046 改造Cabinet中的Content数组为字典、047 左键点击背包物品、048 储物箱的点击功能、049 基础游戏循环、050 完善游戏循环、051 结算面板、052 倒地动画(Ragdoll)、053 软件开发模式、054 准备僵尸资源、055 AI基础框架搭建、056 行为树、057 EQS、058 随机巡逻、059 按路径巡逻、060 行为树进阶知识、061 僵尸添加动画、062 完善行为树、063 RootMotion、064 给僵尸应用RootMotion、065 平滑移动(到固定点)、066 再次考虑Task的性能、067 平滑追击玩家、068 分析天光性能问题、069 改进天光性能等,UP主更多精彩视频,请关注UP账号。
UE4蓝图开发生存游戏教程_哔哩哔哩_bilibili
第二天学习了P10-P15,主要是UE4人物动画的相关知识。上手之后还是挺简单的。
💡
课程按照由浅入深的方式进行讲解,前面做的到后面又进行了大修改(有点浪费时间,但是很值得),但是为了笔记的简洁,就单刀直入了。

动画重定向

动画与骨骼绑定,一个骨骼的动画应用到另一个骨骼上一般都会出问题。动画重定向的目的就是通过手动指定两个骨骼结点间的映射关系,将一个骨骼的动画比较好地应用到另一个骨骼上。
之前再Mixamo上下载的动画使用的骨骼和UE4自带人物模型使用的骨骼是不同的,所以需要动画重定向。
动画重定向的步骤为:
  1. 调整UE4自带模型(需要重定向的骨骼)的姿势和Mixamo模型(与现有动画匹配的骨骼)的姿势基本相同(调节前者的姿势)。这是进行重定向的前置步骤
    1. notion image
  1. 姿势调整好后,进入具栏的重定向管理器,点击修改姿势,选择使用当前姿势。这样可以保存调整好的姿势。
    1. notion image
  1. 切换到Mixamo的模型,进入重定向管理器,点击自动映射。自动映射的结果一般是很糟的,还需要一个个去检查与修改。
    1. notion image
  1. 点击显示高级项,进行更细节(如手指)的匹配。
    1. notion image
      💡
      如果需要频繁进行Mixamo与UE自带模型的映射,可以将该映射保存下来。
  1. 选择需要重定向的动画,右键选择复制动画资产并重定向。
    1. notion image
  1. 选择骨骼后,直接重定向即可。
    1. notion image
      如果源的模型为空,那么还需要将源的骨骼与相应的网格模型绑定。选择预览网格体:
      notion image
  1. 现在就可以再资产管理器中看到重定向后的动画了:
    1. notion image
      现在从Mixamo上下载的动画已经可以很好地应用到UE4自带的人物模型上面了。

动画蓝图的原理

动画蓝图的作用设置人物的各种操作对应的动画,它的原理是数据驱动动画
  1. 在角色蓝图中点击mesh组件,细节中可以看到该模型使用的动画蓝图。动画蓝图与骨骼绑定,一个骨骼又对应一个预览网格体 → 网格体与动画蓝图也是一一对应的。
    1. notion image
  1. 一个动画蓝图主要包括事件图表和AnimGraph两个图表。
    1. notion image
      💡
      事件图表的作用是设置变量,这就是数据驱动动画中的“数据”
      💡
      AnimGraph的作用是设置动画的状态转换(状态机)。一个状态的内部常常使用BlendSpace来控制动画的选择。这就是数据驱动动画中的“动画”
      notion image
      notion image
      混合空间的作用是将相关联的动画进行线性混合,如倒退-静止-走路-跑步就可以做成一个混合空间。这里使用的是一个二维的混合空间:

人物动画的制作

先分析需求:
  1. 按下wasd可以控制人物前后左右移动,这时需要使用相应的走路动画。
  1. 按下ctrl+wad可以控制人物的冲刺,这时需要加载相应的跑步动画。
  1. 人物后退和静止的时候跑步动画是无效的。
  1. 跑步的移动速度比走路快。
  1. 不要出现滑步的现象。
制作的过程:
  1. 先创建一个Blendspace2D,将相应的动画拖过去,然后设置坐标轴:纵坐标为前进后退,取为Forward;横坐标为左右移动,取为Strafe。轴值都进行单位化便于后续计算:
    1. notion image
      notion image
  1. 创建两个浮点型(绿色)的变量作为blendspace的两个输入:
    1. notion image
  1. 在角色蓝图或事件图表中设置Speed和Strafe两个变量。原理是速度向量和相应方向向量点积候再除以跑步的最大速度:
    1. notion image
      如果在角色蓝图中设置动画蓝图中的变量,需要从网格体获取到相应的动画蓝图后再set变量(注意需要进行类型转换):
      notion image
      💡
      编译保存后就可以加载左右移动(只有走路)的动画了。接下来是跑步动画。
  1. 在输入中添加ctrl作为冲刺(Strip)的输入:
    1. notion image
  1. 在角色蓝图中设置按下ctrl将速度提升为跑步(750),松开ctrl将速度设置为走路(375)的逻辑:
    1. notion image
      因为混合空间中走路的速度是跑步的一半,所以实际的速度也应该满足这个关系。
      💡
      编译保存后按下ctrl就可以加载跑步动画了。跑步的速度是走路的两倍。
  1. 防止倒退和静止时按下ctrl也会加载跑步动画。方法是判定速度和角色朝向的方向(点积)。为负就将速度限制到走路速度。
    1. notion image
      这个操作需要在每帧都进行检测,防止出现先按下w+ctrl跑步前进,然后松下w依然在加载跑步动画的情况。
       
【读书笔记】高效算法128例Unreal蓝图-day1