UE4_官方动画内容示例1.2_动画蓝图——使用蓝图告知Actor播放动画

展示了两个示例:在其中一个示例中,使用蓝图告知Actor播放动画,在另外一个示例中,展示了告知Actor播放动画的动画蓝图(例如,此示例展示了如何将变量从蓝图传递给动画蓝图,并演示了如何将现有姿势混合到新动画中)。

一、相关知识点:

动画蓝图:动画蓝图是可视化脚本,可用于创建和控制复杂动画行为。

动画蓝图是专用蓝图,它控制骨架网格体的动画。你可在动画蓝图编辑器中编辑动画蓝图图表(你可以在这里执行动画混合,直接控制骨架的骨骼,或设置最终将定义每一帧要使用的骨架网格体的最终动画姿势的逻辑)。

动画蓝图创建:指导如何从骨架资源创建新的动画蓝图

1、

2、指定动画蓝图的目标骨架。选择一个骨架并单击 确定(OK) 

您还可以为动画蓝图选择一个 父类 以供使用。 大多数情况下,您不需要选择,而可以使用默认类。

动画蓝图编辑器:

具有与普通 蓝图编辑器 相似的功能,但是更适合于进行角色动画脚本编写。

使用动画蓝图:

动画蓝图中包含两个主要组件,它们配合工作,以为每帧 创建最终动画。具体来说, 事件图表 更新 动画图表 中所采用的数值,这些数值随后用于驱动状态机、混合空间或其它节点,实现多个动画序列或姿势之间的混合,从而能够向其它系统发出通知,并实现动态动画驱动效果。

(一)事件图表

基于事件的图表,用于更新动画蓝图和计算动画图表中使用的值。

每个动画蓝图都有单独的 事件图表 ,该图表是一个标准 图表 ,它使用一组与动画相关的特殊事件来初始化节点序列。事件图表最常见的用途是更新 混合空间 和其他混合节点使用的值,以驱动动画图表中的动画。

动画事件

动画系统调用各种事件来初始化和更新动画蓝图。您可以将它们放置在事件图表中以实现或覆盖功能。

蓝图初始化动画

当创建动画蓝图实例时,会执行一次 蓝图初始化动画 事件来进行初始化操作。

蓝图更新动画

每帧都会执行 蓝图更新动画 事件,使得动画蓝图可以针对它所需的任何值执行计算及更新。这个事件是事件图表更新循环的进入点。您可以从 DeltaTimeX 引脚获得自上次更新后所过去的时间量,所以可以使用它来执行时间依赖的插值或增量更新。

Delta Time X

输出自从上一次执行循环后所过去的时间量。

(二)动画图表(AnimGraph)

用于采样、混合和操控姿势的图表,通过动画蓝图将此类姿势应用到骨架网格体。

动画图表(AnimGraph) 用于评估当前帧的骨架网格体最终姿势。默认情况下, 所有动画蓝图都有动画图表,可在其中放入 动画节点 以采样动画序列,使用骨架控制执行动画混合或控制骨骼变形。 之后,逐帧将结果姿势应用到骨架网格体。

在动画图表中,可使用 事件图表(EventGraph) 或其他位置(如代码)中计算出来的值, 作为混合空间或其他混合节点的输入。当然,也可直接采样动画序列, 而无需特殊混合。利用动画图表还可使用 骨架控制直接修改骨骼位置、旋转和缩放。

执行流

所有图表的执行流均显示为图表节点上执行引脚间的脉冲链接。对于 常规图表,如蓝图的事件图表(EventGraph),由于此流依赖于事件触发, 因此其将在运行期间显示。由于执行流不基于事件,而逐帧评估,因此 动画图表的不同在于其始终显示执行流。

在动画图表(AnimGraph)中,执行流代表姿势从节点传递到另一节点。部分 节点(如 混合 )有多个输入, 可内部决定属于当前执行流一部分的输入。此决定通常取决于 外部输入,如传递给数据引脚的值。

在以下范例中,上文中的同一混合节点根据Alpha引脚的值(通常手动设置), 在其输入间切换执行流:

与Alpha 1.0混合 - 使用输入B

使用动画图表

动画图表通过计算节点图表进行工作。部分节点在一个或多个输入姿势上执行特定操作, 而其他节点则用于获取或采样其他类型资源(如动画序列、混合空间 或动画蒙太奇)。状态机包含自身图表网络,可存在于动画图表中,多个状态机则可混合起来生成最终输出姿势。 请参考以下所有链接,了解在动画图表情境下的作用。

  • 动画混合 - 使用不同混合节点进行完成。

  • 动画节点 - 用于在输入姿势上执行如混合、直接骨骼操控等操作。

  • 动画序列 - 可直接放入AnimGraph中驱动最终动画姿势。

  • 混合空间 - 可在AnimGraph中使用,以基于变量混合姿势。

  • 骨架控制 - 可直接用于驱动骨架内骨骼的节点。

  • 空间转换 - 可切换姿势在局部空间或组件空间内的节点。

  • 状态机 - 是一系列图表、规则和变量,可决定角色要进入的动画状态。

  • 同步组 - 可用于保留已同步不同长度的相关动画。

使用子动画蓝图实例

为不同角色创建动画蓝图时,经常需要使这些角色共享动画逻辑。 例如,假设你将物理动画或 AnimDynamics 应用给了一个角色,而且,你还希望将它应用给另一个角色。 使用 子动画实例(Sub Anim Instance) 节点,你可以创建对独立动画蓝图的引用,以在另一个动画蓝图中访问和包含其所有逻辑。

二、使用蓝图告知Actor播放动画操作步骤

1、新建Actor

2、双击打开,添加静态网格体组件。

3、选择网格体

4、创建材质

5、创建材质实例

6、更改材质

7、网格体构造函数创建动态材质实例

8、提升为变量

9、设置标量参数值

10、同样的结束设为0;

11、编译运行

靠近成功改变颜色,离开恢复。

知识点:接口快速入门指南

接口负责定义一系列共有的行为或功能,这些行为或功能在不同Actor中可以有不同的实现方法。当你为不同Actor实现了相同类型的功能时,适合使用此通信方法。

接口通信的一个常见应用场景是,为项目中的多个Actor实现某种通用行为。这些Actor类可以是门、窗、汽车等。每个Actor类都不同,并且在调用"打开接口(Open Interface)"函数时会执行不同的行为。

12、内容浏览器右键点击然后选择 蓝图(Blueprints) > 蓝图接口(Blueprint Interface) 。将接口命名为 BPI_Interact 

13、双击 BPI_Interact 将其打开。 在 函数(Functions) 列表下,将第一个函数命名为 Interact 编译(Compile) 并 保存(Save) 接口

你创建了接口并添加了函数 Interact 。任何实现此接口的Actor现在都可以添加此函数。

14、新建actor蓝图类,起个名字Interface_character。添加骨架网格体组件,细节面板选择,

15、点击菜单栏中的 类设置(Class Settings) ,然后导航至 细节(Details) 面板。

16、向下滚动到 接口(Interfaces) 部分,点击 添加(Add) 下拉菜单,然后搜索并选择 BPI_Interact 。 编译(Compile) 并 保存(Save) 蓝图。

17、转到 我的蓝图(My Blueprint) 选项卡下的 接口(Interf aces) 部分。右键点击 Interact 接口函数,然后选择 实现(Implement) 事件(event) 。你将会看到 Event Interact 节点显示在 事件图表(Event Graph) 中。

18、

编译(Compile) 并 保存(Save) 蓝图

19、回到BP_demo,添加变量引用Interface_character中的接口实现函数。编译(Compile) 并 保存(Save) 蓝图

20、把Interface_character拖入关卡,BP_demo的细节面板变量引用他。

21、回到BP_demo中,通过引用发出信息。

22、编译(Compile) 并 保存(Save) 蓝图,运行

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

.NET高级面试指南专题二十三【 B+ 树作为索引有什么优势】

B 树作为索引有许多优势,这些优势使其成为许多数据库管理系统中首选的索引结构之一。以下是 B 树作为索引的一些主要优势: 高效的查询性能:B 树是一种平衡树结构,具有良好的平衡性和高度平衡的性质,这使得在 B 树上进行…

leetcode刷题日记-滑铁卢了家人们(解数独)

问题描述 解题思路 看到这个题,给我的感觉是什么玩意啊!仔细读题之后,真的没想到解题思路。然后看了题解,用到了回溯算法,感觉这个回溯和N皇后的问题差不太多。然后就照着思路尝试理解了一遍,感觉这种题目…

电脑怎么解除安全模式?

安全模式是windows系统中的一种特殊模式,在安全模式可以让系统仅载入最低需求的驱动程序来启动电脑,用户可以在此模式下检测或故障排除。可是一些用户却不知道怎么解除安全模式。下面,极客狗就为大家带来电脑怎么解除安全模式的方法吧。 解除安全模式的方法: 1、 首先,在安…

Python使用flask框架与前端建立websocket链接,并进行数据交互

Python使用flask框架与前端建立websocket链接,并进行数据交互 后端采用的框架为flask,前端用的flask自带的html编写,实现的功能为:前后端建立websocket链接并进行数据交互 一、编写一个flask后端服务 常规创建方式就可以,创建一个flask服务。声明一个websocket实例,以we…

详解mysql安装与配置,及Mac中常见的安装问题

目录 1 数据库介绍 什么是数据库 数据库分类 2 MySQL服务器安装 2.1 Windows绿色安装 2.2 Windows中重装MySQL 3 Mac中常见的安装问题 4 客户端连接MySQL服务器 5 SQL分类 1 数据库介绍 什么是数据库 存储数据用文件就可以了,为什么还要弄个数据库? 文件…

文件上传一-WEB攻防-PHP应用文件上传函数缺陷条件竞争二次渲染黑白名单JS绕过9

演示案例: PHP-原生态-文件上传-前后端验证PHP-原生态-文件上传-类型文件头验证PHP-原生态-文件上传-后缀黑白名单验证PHP-原生态-文件上传-解析配置&二次渲染PHP-原生态-文件上传-逻辑缺陷&函数缺陷 #学习前必读: 1、课前一定要明白&#xff1a…

【教程】高效数据加密混淆方法及实现简介

背景 在需要对数据进行传输或者表达时,通常要求数据加密的安全级别不高,但希望加解密时间复杂度尽可能低。这时使用传统的对称加密(如3DES、AES)或非对称加密(如RSA、ECC)显然不太适合。因为加密的安全级别…

PSO-CNN-BiLSTM多输入时序预测|粒子群优化算法-卷积-双向长短期神经网络时序预测|Matlab

目录 一、程序及算法内容介绍: 基本内容: 亮点与优势: 二、实际运行效果: 三、算法介绍: 四、完整程序下载: 一、程序及算法内容介绍: 基本内容: 本代码基于Matlab平台编译&am…

Linux manim安装

ERROR No package ‘pangocairo’ found Getting requirements to build wheel ... errorerror: subprocess-exited-with-error Getting requirements to build wheel did not run successfully.│ exit code: 1╰─> [31 lines of output]Package pangocairo was not fou…

青少年扁平足也需要手术?家长可千万不要忽视!

近日,在门诊遇到一位年轻妈妈带着孩子来看诊,反应孩子从一年前体育活动时就莫名喊双脚疼,长时间走路或者站立疼痛会加重,休息了就好些,担心孩子脚是不是有什么问题。医生听了先给孩子做了查体,后又让孩子脱…

基于ArUco码测量蓝色区域长度

基于ArUco码测量蓝色区域长度 ,并把各个参数画在图上

【郭林保大夫】——这些事情做到了,想患上帕金森都难!

郭林保大夫说:帕金森病的发病原因尚不完全清楚,但可能与多种因素有关,包括遗传因素、环境因素、神经系统老化等。具体病因可能是这些因素相互作用的结果。病情后期,严重程度会因个体差异而异。一些患者可能出现严重的运动障碍&…

JVM系列之JVM体系(一)

一、前言 为什么要学习了解Java虚拟机 1.我们需要更加清楚的了解Java底层是如何运作的,有利于我们更深刻的学习好Java。 2.对我们调试错误提供很宝贵的经验。 3.这是合格的Java程序必须要了解的内容。 基于此,我打算出一个Java虚拟机的系列&#xf…

电脑哥的励志创业路:蹭别人的电脑做抖店

我是王路飞。 没有一步到位的创业项目,也没有一击必中的解决方法,有的只是需要时刻解决的当下问题。 做事/创业/成长/生活/人生,都不要追求百分百的圆满,不要抱有一帆风顺的幻想,不要期待十全十美的结果。 它们的第…

windows一键快速安装python方法

正常我们安装python的时候,需要先去下载python压缩包,然后再一步步安装,今天发现一个windows10下,一键安装python的方法; 电脑环境:windows10以上 安装方法: 0:在应用商店搜索pyt…

OpenHarmony使用智能指针管理动态分配内存对象

概述 智能指针是行为类似指针的类,在模拟指针功能的同时提供增强特性,如针对具有动态分配内存对象的自动内存管理等。 自动内存管理主要是指对超出生命周期的对象正确并自动地释放其内存空间,以避免出现内存泄漏等相关内存问题。智能指针对…

【数据结构取经之路】队列循环队列

目录 引言 队列的性质 队列的基本操作 初始化 判空 销毁 队列的长度 插入 删除 返回队头元素 循环队列 假溢出 空与满的判定 实现 初始化 插入 判空 销毁 删除 返回队列长度 返回队列头元素 判满 引言 队列和栈一样,也是数据结构的一种&…

python初级2条件与循环笔记

两个课堂小练习: 1、(计算圆柱体的体积) 编写一个读取圆柱的半径和高并利用公式计算圆柱体底面积和体积的程序 iimport math reval(input("enter the r")) heval(input("enter the h")) arear*r*math.pi print("the area ",area,…

java 三元搜索 - 迭代与递归(Ternary Search)

计算机系统使用不同的方法来查找特定数据。有多种搜索算法,每种算法更适合特定情况。例如,二分搜索将信息分为两部分,而三元搜索则执行相同的操作,但分为三个相等的部分。值得注意的是,三元搜索仅对排序数据有效。在本…

SELinux详解

文章目录 SELinux详解什么是SELinux当初设计的目标:避免资源的误用传统的文件权限与账号主要的关系:自主访问控制(DAC)以策略规则制定特定进程读取特定文件:强制访问控制(MAC) SELinux的运行模式安全上下文进程与文件SELinux类型字段的相关性…