IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> UE动画节点 —— Blend Node -> 正文阅读

[游戏开发]UE动画节点 —— Blend Node

参考:https://docs.unrealengine.com/5.0/en-US/animation-blueprint-blend-nodes-in-unreal-engine/


Blend Node

本文主要讲UE的AnimGraph的动画蓝图里,负责把多个动画blend到一起的Blend节点,如下图所示,Blend Node在动画蓝图里,节点标题颜色都是灰色的:
在这里插入图片描述

BlendNode根据功能可以分为下面几类:

  • Apply Additive: 负责Blend Base动画和Additive动画
  • Make Dynamic Additive:与Additive正好相反,它是Base Pose减去Delta Pose
  • Blend:就是普通的Blend两个动画输出的Pose
  • Blend Bone by Channel:只Blend特定的Pose里的部分Bone的Transform
  • Blend Multi:Blend的升级版,可以Blend多个动画输出的Pose

Unreal的Blend Node是把多个Animation输出的Pose,Blend到一起。实际动画系统还有从Pose A Blend到Pose B的需求(在Unity里叫做Cross Fade),由于这种动画的转态,往往还提供了逻辑判断。比如什么时候触发Cross Fade,所以UE提供了一种新的用于动画转态的动画节点,叫做叫做Function Blend Node,有如下几类,它们都可以设置Blend用时:

  • Blend Poses by bool:提供两个Pose可以过度,根据bool选择过渡到哪一个Pose
  • Blend Poses by int:提供多个Pose可以过度,根据int选择过渡到哪一个Pose
  • Blend Poses by Enumeration (Enum):跟上面的差不多,无非是根据Enum选择过渡到哪一个Pose
  • Layered Blend per Bone:只Blend部分Bones,相当于Unity里带AvatarMask的Layer Blending

此时的标题节点颜色为绿色,如下图所示:
在这里插入图片描述

一些详细说明补充如下:

Blend Poses by bool示例
举个例子,如下图所示,水平这个轴是正常的人物移动的流程,当人物停止移动,则会Blend到False Pose对应的Bind Pose上,当然这个Local Space Ref Pose换成Play Idle Node应该会更好一点。
在这里插入图片描述

Blend Poses by Enumeration (Enum)
UE4版本应该是默认会为每个Enum值添加对应Pose的Pin,不过UE5这里需要右键选择添加枚举类型的Pin。顺便说一句,UE里还可以创建Enum资产,而不需要写代码。
**加粗样式**

Inertialization

这个词不是Initialization,而是Inertialization,意思是惯性。UE提出的Inertial Blending是一种高性能的动画后处理技术,能够作为传统动画crossfading技术的替代手段。这个概念是从UE4.26才开始正式进入官方文档的。

如果要使用它,需要添加Inertialization节点:
在这里插入图片描述

State Machine Transitions, Blend Nodes, Linked Anim Graphs and Linked Anim Layers, can all trigger inertial blends.

上面引用提到的这些动画节点,都可以trigger inertial blends,也叫提出inertial blend requests,作为后处理节点,只要保证提出requests的节点都在其Input Tree上即可,比如这里直接连到Output Pose,如下图所示:
在这里插入图片描述

PS: If your AnimGraph contains a Inertialization request but is missing an Inertialization node, a runtime error will be logged in the Message Log panel.

具体原理不是很清楚,总之Initialization Node会一直记录Root的Motion和对应Motion Curve的改变,感觉类似于人工智能在动画里的应用,相当于基于人物的移动路径和惯性,去修正人物的Pose。在使用inertial blending的时候,动画状态机的逻辑需要改一改,人物此时的动画转态,都应该是在人物的Movement里进行的。inertial blending会去自然的接管Pose,所以没有必要去手动设置,让人物转回Idle状态。inertial blending尤其适用于短暂的动画过度(Short blends work best since inertial blending is a post-process for easing motion toward a target animation).

Inertial blends can be interrupted with other inertial blends, but try to avoid scenarios that cause continuous interruptions because subsequent blend durations may be trimmed to keep the pose stable.

动画Graph允许防止多个Initialization Node,每个节点都会负责处理它们source pose的inertial blend。举几个例子:

  • 使用两个动画层,一个负责上半身,一个负责下半身,每个层各自连一个Initialization Node,然后通过Layered Blend per Bone把两层合到一起,作为最终Pose
  • 使用Base动画加Additive动画时,可以在Base动画里接一个Initialization Node,添加Additive动画后,再接一个Initialization Node
  • 需要使用IK时,可以在Base动画里接一个Initialization Node,再添加IK(For final pose fixups, you will generally run Inertialization before IK, which effectively does inertial blending in IK space),然后可能再接一个Initialization Node?

Note:
A Source pose stops being evaluated once inertial blending begins. As a result, Animation Notifies from the source animation Sequence will no longer trigger after inertial blending begins. You may need to refactor existing game logic and Anim Notifies to be compatible with Inertialization.

inertial blending开始时,Source pose会停止被evaluated,对应的Animation Notifies不再会被触发。


介绍一下在动画蓝图里让节点使用Inertial blends的操作,下面几种情况的前提都是Graph里有Initialization Node的存在

Request from Blend Nodes

直接在这里设置:
在这里插入图片描述

Request from State Machine Transitions

在动画转态上设置:
在这里插入图片描述

Request from Linked and Layered AnimGraphs

Inertialization properties can also be defined in an Animation Layers or from a Linked Anim Graph. After selecting a Graph from the My Blueprints panel you can find the Graph Blending section of properties in the Details panel. An Animation Layer can blend in or out, but only via inertial blending. An Inertialization node must be placed anywhere after the Linked Anim Layer node that links this Animation Blueprint. A negative value means the blend time will be determined by the other incoming or outgoing Animation Layer.

在这里插入图片描述

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-07-17 16:55:11  更:2022-07-17 16:56:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 10:27:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码