UE5 动画蓝图

文章目录

  • 一、State Machines
  • 二、Blend Spaces
  • 三、Aim Offset
  • 四、Montage

在这里插入图片描述

初步介绍

Unreal Engine 5 Tutorial - Animation Blueprint Part 1: State Machines (youtube.com)
Unreal Engine 5 Tutorial - Animation Blueprint Part 2: Blend Spaces (youtube.com)
Unreal Engine 5 Tutorial - Animation Blueprint Part 3: Aim Offsets (youtube.com)
Unreal Engine 5 Tutorial - Animation Blueprint Part 4: Montages (youtube.com)

这里我们使用虚幻争霸中的资产实现动画效果,将该资产导入到工程中,创建一个BP_Character,实现基本的人物运动和相机运动系统

一、State Machines

首先我们将 狂 的骨骼网格体导入 BP_Character 中

然后创建一个 Animation Blueprint,命名为 ABP_Character,进入 Event Graph,首先进行 Animation 初始化,在这里创建两个变量方便我们获取 Character 的信息

同时在这里我们可以创建一个 Vector 变量去保存 Character 的速度,命名为 CurrentVelocity

进入 AnimGraph,我们创建一个 State Machine 并命名为 Locomotion,然后进入 Locomotion 之中创建两个 State ,分别命名为 Idle 和 Walk,将他们连接起来

进入 Idle 中,拖入 Idle 的动画,然后开启 Loop Animation

进入 Walk 中 ,同样的操作

然后在两个判断中判断速度是否为 0, 如果为 0 则从 Walk 转到 Idle,反之则从 Idle 转到 Walk;

这里不知道为什么会有阴影,预测是材质问题,这里技术受到限制,先不处理

得到结果如下

二、Blend Spaces

Blend Spaces 可以让不同方向的动画很好的混合,这里有两种混合空间,一种是 2D blend space,另一种是 1D blend space

在这里我们将 Horizontal Axis 命名为 Direction,设置最大为180,最小为-180用来对应左右偏移角度,同时开启 Snap to Grid 方便将动画放置在 grid 网格上

将 Vertical Axis 命名为 Speed,设置最小值为0,最大值为600,同样开启 Snap to Grid 方便将动画放置在 grid 网格上

下面放置一排的 Idle 是为了加速动画的转换,其左右方向和我们看到的一致,在 Direction 为 180 或者 -180 时候, Character 是向后运动的,因此我们需要放置向后移动的动画

接下来我们进入 ABP_Character 中进行配置

由于在 Blend Space 中我们配置了一个 Direction,所以我们需要在 Event Graph 中定义一个参数

接着我们在 AnimGraph 中设置 Movement,要注意的是,这里的速度一般指的是地面速度,因此我们可以直接使用 Vector Length XY 来计算 地面速度

但是目前并没有向左或者向右移动的效果,因为我们开启了 Orient Rotation to Movement,将 Orient Rotation to Movement 设置为 False

这种效果可以在锁定敌人的时候使用,但是这样我们还需要设置一下 CharacterMovement,开启 Use Controller Desired Rotation

最后我们可以得到效果如下

三、Aim Offset

Aim Offset 可以用来独立移动某一部位,如头的朝向以及手或者武器的朝向,additive animation 基本上意味着在当前播放的动画之上添加动画信息

其动画资产的命名方式一般为 XX_AO_XX,其中 AO 表示 Aim Offset,其 frame 一般也只有一帧

在动画资产的 Additive Settings 中,我们需要将 Additive Anim Type 设置为 Mesh Space,Base Pose Type 设置为 Selected animation frame,Base Pose Animation 设置为 AO_CC,这样可以计算出当前动画与Base Pose Animation动画的变化从而发生改变

右键创建一个 Aim Offset,选择骨骼后命名为 AO_Character

这里将 Horizontal Axis 命名为 Yaw,范围设置为 -180 到 180,开启 Snap to Grid,另一边将 Vertical Axis 命名为 Pitch,范围设置为 -90 到 90,开启 Snap to Grid

由于 Yaw 的计算是从0 -> 180,180接着-180,然后是-180 -> 0,因此我们需要保证Yaw 在 180和-180位置上的动画是一致的

在这里如果出问题,我们只需要换一下 Preview Base Pose 就好

这里 Aim Offset 就设置完毕了,接下来我们需要去 ABP_Character 中设置 Yaw 和 Pitch,首先在AnimGraph中拖入 AO_Character,设置两个变量 Yaw 和 Pitch,由于 AO 是一个附加动画,因此我们只需要加原来的动画添加到 AO 上,然后将 AO 与 Output Pose 连接就好

在 Event Graph 中创建一个计算 Yaw 和 Pitch 的函数,有如下两种方法,其区别在与是否使用 Clamp Angle 以及 Interp Speed

方法一有摇头动作,因为在Yaw在-180到180过度时候两种状态不一致, 因此使用 RInterp To 的 Interp Speed 进行状态的插值时间过度

得到效果如下

方法二没有摇头动作,由于 Yaw 在 -180 和 180 上的动画一致,所以有衔接性,无需插值过度,讲究就是一个效率

得到效果如下

在这里如果我们在旋转的时候,Character 也跟着旋转,那就是 Character Movement 的问题,我们需要关闭 Use Controller Desired Rotation 和 Orient Rotation to Movement

这里的动画是 Separate 分开处理的,CC,CU,等表达很明确,如果是一个完整的聚合动画,我们需要拆分这个动画,方法如下

四、Montage

Montage 是一个高级的动画资产,允许打断动画并将指定动画插入到动画之中,例如攻击,可以中断所播放的任何动画进行攻击。同时可以在底部的时间轴添加多个动画和动画循环效果,如实现死亡倒地的循环。还有一些更高级的技术,因此 Montage 是十分重要的

这样看来,DefaultSlot Montage 有点类似于 AO,不过前者功能更加高级

在设置 Montage 之前,我们需要在 ABP_Character 的 AnimGraph 中设置一个 Slot DefaultSlot,这个 Slot 是为了播放 Montage 准备的,在 Slot 的右侧 Details 中的 Setting 中我们可以设置 Slot Name,这里默认设置为 DefaultSlot,要注意的是,这里的 Slot Name 要与 Montage 中的 Slot 相对应。在这里我们为了方便,对 State Machine 创建了一个 Cache 去存储,以便可以重复调用

接下来我们来创建 Montage,选择动画右键创建 Montage

在 Montage 之中,我们把 slot name 命名为 DefaultSlot

然后回到 BP_Character 中我们创建一个简单的触发 Montage 事件

得到效果如下

可以发现播放 Montage 的时候运动会出现滑动现象,为了解决这一问题,我们需要对动画进行分层,即身体上半部分执行一个动画,下半部分执行一个动画,回到 ABP_Character 中,我们创建一个 Layered blend per bone,将 AO 处理后的 Pose 传给 Base Pose,slot Montage 传入给Blend Poses 0,同时我们将需要混合 Blend Poses 0 的 spine_01 部位 在 Layer Setup 上指定

执行效果如下

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/39006.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

非静压模型SWASH学习(8)——三维孤立波在锥形岛屿上的爬坡过程(Runup of solitary waves on a conical island)

三维孤立波在锥形岛屿上的爬坡过程(Runup of solitary waves on a conical island) 算例简介模型配置网格及参数设置网格与地形初始条件与边界条件数值求解方法输出设置模拟时间 波浪(孤立波)入射边界的时间序列.bnd文件模拟结果注…

[吃瓜教程]南瓜书第4章决策树

1.决策树的算法原理 从逻辑角度,条件判断语句的组合;从几何角度,根据某种准则划分特征空间; 是一种分治的思想,其最终目的是将样本约分约纯,而划分的核心是在条件的选择或者说是**特征空间的划分标准 ** …

mac安装达梦数据库

参考:mac安装达梦数据库​​​​​​ 实践如下: 1、下载达梦Docker镜像文件 同参考链接 2、导入镜像 镜像可以随便放在某个目录,相当于安装包,导入后就没有作用了。 查找达梦镜像名称:dm8_20240613_rev229704_x86…

第1章 人工智能的基础概念与应用导论

亲爱的读者朋友们,你们好!欢迎来到这个充满神奇与奥秘的人工智能世界。我知道,对于很多人来说,人工智能(AI)可能是个既神秘又高大上的词汇,仿佛遥不可及,只存在于科幻电影或者顶级科…

Figma-ui设计学习APP Store

Figma汉化:Figma 中文社区_插件组件库,软件汉化教程 - Figma.Cool 选择Chorme汉化版离线包 插件安装: 打开浏览器安装扩展,解压加载进去即可。 打开标尺,设置左右内边距参考线(左21 右356),wi…

【postgresql】版本学习

PostgreSQL 17 Beta 2 发布于2024-06-27。 PostgreSQL 17 Beta 2功能和变更功能的完整列表:PostgreSQL: Documentation: 17: E.1. Release 17 ​ 支持的版本: 16 ( 当前版本) / 15 / 14 / 13 / 12 ​ 不支持的版本: 11 / 10 / 9.6 / 9.5 /…

探索工业AI智能摄像机的高端科技

在当今快速发展的工业智能化领域,工业AI智能摄像机系列以其卓越的性能和多功能性在国内外备受关注(文末有国外工程师的评测链接)。搭载Raspberry Pi CM4支持的旨在广泛应用,涵盖从简单的条形码扫描到基于人工智能的工业环境中的缺…

7.1.SQL注入-基于函数报错的方式来利用updatexml()

基于函数报错的方式来进行利用-字符型(本页updatexml()) 前提条件是后台数据库没有屏蔽数据库语法报错信息 updatexml()方法详解 注释: 第一个参数,意思就是xml文档的名称 第二个参数,意思就是定位到xml文档中指定…

OFDM关键技术——ICI消除技术

ICI消除算法可以分为以下几类: 1、OFDM符号长度和载波间隔的最优选择,较短的符号周期更有利于降低ICI 2、OFDM基信号的最佳选择,选择频域衰减更快的OFDM基带脉冲 3、自干扰消除技术,将信息调制到一组子载波上 4、频域均衡器&a…

认识100种电路之耦合电路

在电子电路的世界中,耦合电路宛如一座精巧的桥梁,连接着各个功能模块,发挥着至关重要的作用。 【为什么电路需要耦合】 在复杂的电子系统中,不同的电路模块往往需要协同工作,以实现特定的功能。然而,这些模…

网络爬虫(二) 哔哩哔哩热榜高频词按照图片形状排列

我们有时候需要爬取结果生成为自定义的词云图 生成自定义的词云图通常需要以下步骤: 1. 爬取数据:使用爬虫工具或库,如requests、BeautifulSoup等,可以爬取网页、论坛、社交媒体等平台上的文本数据。 2. 数据预处理&#xff1a…

uniapp微信小程序电子签名

先上效果图,不满意可以直接关闭这页签 新建成单独的组件,然后具体功能引入,具体功能点击签名按钮,把当前功能页面用样式隐藏掉,v-show和v-if也行,然后再把这个组件显示出来。 【签名-撤销】原理是之前绘画时…

AI影像测量:开启测量仪器的智能之眼

在基于机器视觉的影像测量中,一些复杂特征传统测量需要人工手动选点测量,不仅易受到人为因素的干扰,而且极大的降低测量效率,提高了人力成本和生产成本。AI影像测量技术运用先进的机器视觉和深度学习算法,可快速、准确…

【JVM】JVM 内存结构

程序计数器 Cpu 要不停的切换执行线程,所以在切换回同一个线程的时候要知道程序执行到哪了,程序计数器(PC 计数器),用来存储指向下一条指令的地址,也就是将要执行的代码。 程序的分支、循环、跳转、异常处…

QuickBooks 2024 for Mac:财务智慧,触手可及

QuickBooks 2024 for Mac是一款专为Mac用户设计的专业财务管理软件,它集成了多种实用功能,助力企业和个人用户高效管理财务事务。 📊 全面的财务管理工具:QuickBooks 2024 for Mac 提供了一套全面的财务管理功能,包括…

用免费的可视化工具制作3D智慧城市大屏,融合数字孪生,引领数据升级

在如今数据驱动的时代,越来越多的场景中都有可视化大屏的身影,许多企业和政府部门也从常规的二维看板渐渐地转向更加炫酷,立体的3D可视化大屏。3D可视化大屏成为了展示复杂数据、实时监控业务动态的重要工具。本文将详细介绍如何使用免费的数…

物联网工业级网关解决方案 工业4G路由器助力智慧生活

随着科技的飞速发展,无线通信技术正逐步改变我们的工作与生活。在这个智能互联的时代,一款高性能、稳定可靠的工业4G路由器成为了众多行业不可或缺的装备。工业4G路由器以其卓越的性能和多样化的功能,助力我们步入智慧新纪元。 一、快速转化&…

Python处理excel数据详解

1.导入文件 注意:要把excel放到跟你的python文件在同一个地方 import pandas as pd import numpy as np dfpd.read_excel("鸢尾花训练数据.xlsx",engine"openpyxl") import pandas 先引入 (若没有下载 需要在终端下载 pip install pandas)…

LAMP架构的源码编译环境下部署Discuz论坛

一、LAMP架构 LAMP架构是一种常见的用于构建动态网站的技术栈 组成功能Linux(操作系统)LAMP 架构的基础,用于托管 Web 服务器和应用程序Apache(Web服务器)接收和处理客户端请求,并将静态和动态内容发送给…

Python爬取豆瓣电影+数据可视化,爬虫教程!

1. 爬取数据 1.1 导入以下模块 import os import re import time import requests from bs4 import BeautifulSoup from fake_useragent import UserAgent from openpyxl import Workbook, load_workbook1.2 获取每页电影链接 def getonepagelist(url,headers):try:r reque…