动画系统概述

概括介绍使用动画蓝图、混合空间和动画序列,根据动画数据对骨架网格体进行变形处理的系统。

Windows
MacOS
Linux

虚幻引擎4(UE4)动画系统由多个动画工具和编辑器构成,其将基于骨架的变形与基于变形的顶点变形相结合,从而构建出复杂的动画。 该系统可以用于播放和混合预先准备好的 动画序列 让基本玩家运动显得更加真实,创建自定义特殊动作,如伸缩台阶 和墙壁(使用 动画蒙太奇),通过 变形目标 应用伤害效果或面部表情,使用 骨架控制 直接控制骨骼变形,或创建基于逻辑的 状态机 来确定角色在指定情境下应该使用哪个动画。

本文目的是提供对UE4动画系统的高级概述,主要面向初次接触UE4动画的用户。但是,本文并非是UE4骨架资源动画制作的完整手册。您可以将本文视作入门资料,帮助您熟悉动画系统的各个方面,本文说明了各部分如何协作并展示UE4中的动画为何比过去更加灵活。

术语和概念

首先明确UE4动画系统的主要术语和概念(单击各个标题查看更多文档):

动画工具

在虚幻引擎4中创建带动画的角色需要使用几种不同的动画工具(或编辑器)。每种工具针对动画的不同方面。

举例而言,骨架编辑器 是所有操作的起点,其用于管理驱动骨架网格体和动画的骨骼(或关节层级)。 骨架网格体编辑器 用于修改链接到骨架的骨架网格体,是角色的外观。 动画编辑器 可以创建并修改动画资源,可用于对动画进行微调/调整。 动画蓝图编辑器 可用于创建逻辑,驱动角色使用的动画(及使用时机),以及动画混合的方式。 最后,物理资源编辑器 可创建和编辑用于骨架网格体碰撞的物理形体。

骨架资源

骨架 是骨骼位置和旋转的层级结构,用于使骨架网格体变形。在UE4中,骨架是从其自己资源中的骨架网格体分离出来的。这意味着,动画将应用于骨架,而不是骨架网格体。通过使用相同的骨架,多个骨架网格体可以共享动画。

动画序列

动画序列 是可在骨架网格体上播放的单个动画资源。这些序列包含各个关键帧,而关键帧又规定了骨骼在特定时间点的位置、旋转和比例。依次回放这些关键帧(相互合成)可以顺利实现骨架网格体中的骨骼动画。

动画通知(通知)

动画通知AnimNotifies通知)为动画程序员提供了一种方式,以便设置事件在 动画序列 中的特定点上发生。通知常用于在行走或跑步动画中添加脚步声之类的效果,或在动画中生成粒子系统。它们用途广泛,系统可随自定义通知类型进行延展,以满足各种游戏的需求。

动画蓝图

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

混合空间

混合空间(Blend Space) 是可以在 动画图(AnimGraph) 中采样的特殊资源, 允许根据两个输入的值混合动画。要根据一个输入在两个动画之间实现简单混合, 可以使用动画蓝图 中提供的一个标准 混合节点 。混合空间提供的方法是根据多个值(目前仅限于两个) 在多个动画之间进行更复杂的混合。

混合空间的目的是避免创建单个硬编码节点 来根据特定属性或条件执行混合。通过允许动画师或程序员指定输入、动画 以及如何使用输入来混合动画,几乎可以使用通用 混合空间执行任一类型的混合。

动画蒙太奇

动画蒙太奇(简称"蒙太奇")支持主要与在 蓝图可视化脚本 中或通过代码公开动画控件相关的各种动画效果。它们也可用于创建各种动画效果,包括动画的智能循环,基于逻辑的动画切换,等等。

骨架控制

骨架控制(Skeletal Controls)(亦称 SkelControls)可对骨架 资源中的骨骼进行直接控制。它们可用于在动画蓝图 中进行控制一个单独骨骼、创建IK链等操作。可对下方的骨架进行直接控制后,便能创建过程化、动态驱动的动画。一个骨骼的 变形 可用于驱动另一根骨骼,或在播放行走动画时使角色的脚与地面贴合。 任意类型的修改均可用于调整、或完全覆盖动画序列 所应用的骨骼变形。

状态机

状态机(State Machines) 通过图形化方式将骨架网格体的动画拆分为一系列状态。然后按照转换规则管理这些状态,转换规则可控制从一个状态混合到另一个状态。状态机大大简化了骨架网格体动画的设计流程,可以创建一张控制图来轻松控制各个角色在各动画之间运动方式,无需创建复杂的蓝图网。

它们也简化了动画图的构想过程。在设计动画时,你可以先从构思所需要的状态及角色如何从一个状态变换到另一个状态开始。最简单的一种构思方法就是,把角色的所有动画分解为一个易读的流程图表。你可以在图中看到骨架网格体的状态在其中的移动走势。

比如,当一个角色不动时,它可能处于"空闲"状态。一旦角色的速度超过某个特定的值,角色就可以混合到另一个"移动"状态。还可以有很多种其他状态,比如下降、跳跃、蹲下、疾跑等。通过使用状态机,动画师和美术师可以快速地查看其动画网络的数据流动情况。

内容示例 项目中,您还可以找到部分动画功能的示例,该项目可以从Epic Games启动程序的 学习(Learn)选项卡 免费下载。

系统分解

以下是可以创建和编辑特定部分动画系统的位置的分解图。

CreationDiagram.png

该图描绘了虚幻中典型动画角色的数据的流向和所有权。

AnimationDiagram.png

动画调试功能

在运行模式中按 ` 键调出控制台,可以访问调试功能。

渲染骨架网格体骨骼

AnimationShowDebugBones.jpg

要显示骨架网格体骨骼,在控制台中输入`ShowDebug Bones`。如上图所示,骨骼由单一白线表示。

`ShowDebug Bones`命令将显示在运行会话期间可运行角色的信息。要查看另一个角色的调试动画(非玩家角色),可以使用`viewactor ExampleCharacterID`命令,其中_ExampleCharacterID_指的是想要查看的角色的角色ID。在世界大纲视图 中,将鼠标悬停于角色上可以看到其ID。

目前,在使用`viewactor`命令时,摄像机将移到您当前查看的Actor并锁定在这里。如果需要在调试时操纵摄像机,一种解决办法是创建包含多个玩家的在编辑器中运行 会话,并通过下拉菜单使用一个调试窗口和一个控制玩家角色的窗口。

您可以不显示表示骨骼的白线,而是在控制台中输入`ShowDebugToggleSubCategory 3DBones`命令来启用3D骨骼。

动画调试输出

AnimationShowDebugToggle.jpg

要启用 动画调试输出 信息,可以在控制台中使用`ShowDebug Animation`命令。

该信息拆分成5个部分显示,各个部分可以使用`ShowDebugToggleSubCategory`命令后跟下面列出的类别名称来打开和关闭(例如,ShowDebugToggleSubCategory SyncGroups)。

按钮

说明

SyncGroups

显示当前对最终姿势有影响的动画资源,按同步组整理(如果不属于任何组,则归到Ungrouped)。默认情况下,该部分中列出的混合空间显示所有有影响的动画/权重。要减少输出占据的屏幕空间,可以使用`ShowDebugToggleSubCategory FullBlendspaceDisplay`将其关闭。

Montages

列出当前由角色使用的蒙太奇。活跃蒙太奇以绿色高亮显示。

Curves

列出曲线值(以名称:值对的形式),这些是播放动画所激活的曲线值。

Notifies

显示当前生效的任何通知状态。

Graph

显示活跃姿势图表。该显示从表示最终姿势的最后一个节点(根节点)开始,依次列出组成最终姿势的所有节点。节点按照保持其层级关系的形式呈现,让用户能够看到每个节点的连接关系,而不必参考原始蓝图资源。活跃节点显示为绿色(如果已经使用`ShowDebugToggleSubCategory FullGraph`打开显示),不活跃节点显示为灰色。

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback