虚幻引擎学习之路:动画模块之基础篇

简介:

前言

动画模块是游戏引擎中的重要部分,是驱动游戏中场景、角色能够活灵活现地做出动作的基础。UWA将分三块内容介绍Unreal 4引擎中的动画模块功能,其中包括:基础功能、进阶功能以及特殊功能。在介绍基础和进阶功能时,UWA不仅会对其功能进行重点讲解,同时也将结合Unity引擎中的相似功能进行类比,以求让大家可以更明晰地掌握Unreal引擎动画模块的功能使用。在特殊功能中,UWA将对Unreal 4引擎中针对特殊用途提供的功能进行重点解读。

本节主要介绍Unreal 4引擎动画模块中提供的基础功能。其中主要包括以下几个部分:

  • 蒙皮网格
  • 骨骼文件
  • 动画文件
  • 加粗文字动画逻辑

Unreal 4引擎的动画模块提供了四个编辑器:蒙皮网格编辑器、骨骼编辑器、动画文件编辑器和动画蓝图编辑器。上述基础功能可以分别在这四个编辑器中完成。在接下来的内容中,本文将在介绍基础功能的同时对相应编辑器的使用进行介绍。


一、 蒙皮网格

Unreal 4引擎支持从外部FBX文件中导入蒙皮网格和动画。导入操作可通过Content Browser->Import按钮完成。导入界面如下图所示:

请输入图片描述


其中,包含了网格、动画以及材质相关的导入设置。默认情况下Unreal 4引擎会为网格创建材质、物理以及骨骼文件。若选择导入动画,也会同时创建相应动画文件。

蒙皮网格在Unreal 4引擎中被称为Skeletal Mesh,其相当于Unity引擎中的Skinned Mesh,表示了带有蒙皮信息的网格。双击Content Browser中的蒙皮网格文件,即可打开蒙皮网格编辑器,如下图所示:

请输入图片描述


其中,左边区域(1区)是Skeletal Mesh的参数设置,右边区域(2区)是Morph Target(Blend Shape)以及预览场景设置。在Skeletal Mesh参数设置中,可以设置模型的材质、LOD、Clothing、骨骼、物理(Rigidbody)、Capsule Shadow等相关参数。其中,Clothing支持Nvidia的apex文件。骨骼文件即为下文中将介绍的Skeleton Asset。Capsule Shadow是Unreal 4引擎中Skeletal Mesh特有的软阴影。它使用形状不同的Capsule对Mesh进行近似表示,在渲染阴影时则使用该近似表示进行渲染,从而节省了渲染开销。右上角区域(3区)显示了与当面Skeletal Mesh相关的文件,点击即可快速打开相关文件。


二、骨骼文件

Unreal 4引擎中的骨骼文件被称为Skeleton Asset,其相当于Unity引擎中的Avatar文件。双击Content Browser中的Skeleton Asset文件即可打开该文件,如下图所示:

请输入图片描述


其中,左边区域(1区)显示了当前Skeletal Mesh的骨骼信息,可以选中其中某一骨骼进行编辑。同时,还可进行Retargeting的设置。右上角区域(2区)显示了选中骨骼的详细信息以及预览场景设置。在骨骼详细信息中可以设置其Transform和Name参数。右下角区域(3区)显示了动画事件和Animation Curve。其中,Animation Curve可以用于在动画过程中修改模型材质以及修改Morph Target曲线。Animation Curve的具体修改过程需要在动画编辑器中完成,此处只提供了预览。

在Unity引擎中,查看骨骼信息的方式是将其拖入场景,即可在左边Hierarchy页面中看到骨骼信息。需要注意的是,FBX模型不要开启Optimize GameObject选项。

在Unreal 4引擎中,共用Skeleton Asset的网格可以共享动画文件,即动画重定向(Animation Retargeting)。但要共享Skeleton Asset需要满足一定条件,即两个网格中的骨骼命名顺序要保持一致,如下图所示:

请输入图片描述


其中,骨骼(1,2,3)与骨骼(1,2,3,4)可以共用Skeleton Asset,但是与骨骼(1,3,2)无法共用。

在Unity引擎中,通过对Humanoid类型动画网格的骨骼进行映射也可以支持动画重定向。但是Unity中的动画重定向只能支持骨骼长度相近的网格,对于骨骼相差较大的网格会出现穿插或者分离的现象。Unreal 4引擎提供了该问题的解决方案,我们将在后续文章的动画重定向一节中进行介绍。


三、动画文件

Unreal 4引擎中的动画文件被称为Animation Sequence,其相当于Unity引擎中的Animation Clip。双击Content Browser中的Animation Sequence文件即可打开该文件,如下图所示:

请输入图片描述


其中,左边区域(1区)显示了动画文件的相关参数和骨骼结构信息。右边区域(2区)的上半部分显示了选中骨骼的参数以及预览场景设置,下半部分显示了该模型的动画文件列表。下部区域(3区)显示了动画事件、Animation Curve以及Animation Layers Track。其中,Animation Layers Track支持对动画中单个骨骼的Transform进行修改,从而生成新的动画序列。

Animation Curve以及Animation Layers Track的功能类似于Unity中创建Animation Clip的功能。在Unity中也可以通过对蒙皮网格创建Animation Clip来修改其材质以及单个骨骼的Transform,如下图所示:

请输入图片描述


四、动画逻辑

在引擎中播放动画需要处理动画逻辑。Unreal 4引擎提供了动画专用的蓝图资源:Animation Blueprint。在Animation Blueprint中包含两种节点图:Event Graph和Anim Graph。两者分别用于提供动画数值计算逻辑以及动画状态机的功能。本节将介绍Unreal 4引擎中动画逻辑的功能,主要包括:动画数值计算,动画状态机,动画事件以及动画逻辑重用。

4.1 动画数值计算
Event Graph节点图用于计算播放动画的逻辑中所需要的数值变量,并提供给后续状态机使用。其中,Event Blueprint Update Animation节点会在每帧被调用。通过该节点可以在动画播放期间每帧更新逻辑数值,如下图所示:

请输入图片描述


其中,该节点图每帧计算了两个数值:IsInAir和Speed。IsInAir用于表示角色目前是否在空中,Speed表示当前角色的速度。IsInAir可以用于在空中切换角色动画,而Speed则可用于切换角色Idle,Walk以及Run等动画。

4.2 动画状态机
Anim Graph节点图用于计算角色最后输出的动作,其本质就是动画状态机,类似于Unity引擎中的Animator Controller资源,如下图所示:

请输入图片描述


其中,该节点图包含了一个状态名字为Default的状态机,并且将状态机计算的角色Pose作为最终结果。双击State Machine节点,可查看其内容,如下图所示:

请输入图片描述


其中,该节点图包含了默认起始节点Entry以及角色的移动以及跳跃等状态,在不同状态之间根据不同的条件进行跳转。这与Unity引擎中的Animator Controller动画状态机过渡颇为相似。由上图可知从移动节点跳转到起跳状态的判定条件即为IsInAir变量值,该数值由Event Graph每帧更新。

双击Idle/Run节点可以看到其内容,如下图所示:

请输入图片描述

该节点图根据Speed变量的数值输出不同的移动动作。其最终结果是通过Blend Space将Idle、Walk和Run三个动作进行插值的计算结果。Blend Space动画融合将在本文接下来内容中进行介绍。

Unreal 4引擎动画状态机不仅提供了动画状态以及跳转的功能,也在动画跳转过程中提供了状态过渡时的动画融合的功能,其融合时间和融合方式可设置。并且,其还提供了Conduits节点作为分支节点,支持对同一类型多个状态的管理,如下图所示:

请输入图片描述
上图取自Unreal 4官方网站

其中,Killed为Conduits节点,连接了不同死亡方式的动画节点。如果同一节点有多个跳转条件可能同时满足,通过设置跳转条件的优先级解决。

4.3 动画事件
动画逻辑中一个重要的功能就是动画事件,在Unreal 4引擎中被称为Animation Notification,其相当于Unity引擎中的Animation Event。其中一种动画事件是在动画状态跳转中触发,可在转移条件的详细属性中设置,如下图所示:

请输入图片描述


其中,Custom Blueprint Event可以在Event Graph中定义。

另一种动画事件是在动画播放过程中触发,可在动画编辑器中设置。在动画编辑器的Notifies轨道上点击右键即可添加动画该种事件,如下图所示:

请输入图片描述


其中,这种动画事件支持三种类型:Play Particle Effect,Play Sound以及Custom。其中,Play Particle Effect和Play Sound分别用于在动画播放过程中触发粒子系统和音频的播放。Custom则可自定义功能。

此外,Unreal 4引擎还提供了Notify State功能。它分别在动画播放的开始、播放中、结束触发事件。在开始和结束时各触发一次,在播放中每帧触发一次。其添加方式如同Notification一样,如下图所示:

请输入图片描述


其中,Notify State包含三种类型:Timed Particle Effect、Trail和Custom。Timed Particle Effect支持在动画播放中添加粒子特效,并且粒子特效的播放时长可设置。Trail支持在蒙皮网格上实现拖尾特效。Custom类型需要通过AnimNotifyState Blueprint实现。

4.4 动画逻辑重用
对于行为相似的角色,有的时候只需要更换不同的动画文件,而不需要重新制作类似的逻辑,或者可重用部分逻辑。Unreal 4引擎提供了动画逻辑重用功能提高开发效率。接下来,本节将介绍两种动画逻辑重用的方式:Child Animation Blueprint和Sub Animation Blueprint Instance。

- Child Animation Blueprint 主要用于重用所有动画逻辑,仅替换不同的动画文件。其使用方式是通过原始Animation Blueprint创建Child Animation Blueprint,如下图所示:

请输入图片描述

然后,双击打开Child Animation Blueprint,并打开Asset Override Editor窗口,即可在Asset一列对应原动画位置的下拉菜单中选择新的动画文件,下图则显示了用BS_Jog替换原始Jog动画文件的设置过程。

请输入图片描述

- Sub Animation Blueprint Instance 主要用于将动画逻辑分解成模块,然后方便重用。其使用方式是:首先将通用功能动画逻辑编辑保存成Animation Blueprint,然后在需要引用的节点图中添加Sub Anim Instance节点,并指向通用功能Animation Blueprint,如下图所示:

请输入图片描述

其中,上图显示了在Animation Blueprint中引用Sub Anim Instance的过程。Sub Anim Instance的内部参数可以通过设置暴露给外部Animation Blueprint作为输入,如上图中的Effect Alpha参数。其设置在Sub Anim Instance节点的详细信息页面,如下图所示:

请输入图片描述

外部的Pose数据可通过在Sub Anim Instance节点图中添加Sub-Graph Input节点传入,如上图中的In Pose参数。其设置如下图所示:

请输入图片描述

其中,上图为上述例子中Sub Anim Instance的节点图。Sub Graph Input节点为其提供了外部输入Pose数据。






原文出处:侑虎科技
本文作者:admin
转载请与作者联系,同时请务必标明文章原始出处和原文链接及本声明。

目录
相关文章
|
缓存 移动开发 图形学
进击的 Vulkan 移动开发(二)之谈谈对渲染流程的理解
都说 OpenGL 、Vulkan 是用来绘制二维、三维图形的,那么这个绘制渲染的流程到底是怎么样的呢?这里,谈谈我自己对它的理解。
585 0
进击的 Vulkan 移动开发(二)之谈谈对渲染流程的理解
|
3月前
|
图形学 C#
超实用!深度解析Unity引擎,手把手教你从零开始构建精美的2D平面冒险游戏,涵盖资源导入、角色控制与动画、碰撞检测等核心技巧,打造沉浸式游戏体验完全指南
【8月更文挑战第31天】本文是 Unity 2D 游戏开发的全面指南,手把手教你从零开始构建精美的平面冒险游戏。首先,通过 Unity Hub 创建 2D 项目并导入游戏资源。接着,编写 `PlayerController` 脚本来实现角色移动,并添加动画以增强视觉效果。最后,通过 Collider 2D 组件实现碰撞检测等游戏机制。每一步均展示 Unity 在 2D 游戏开发中的强大功能。
144 6
|
3月前
|
图形学 开发者 存储
超越基础教程:深度拆解Unity地形编辑器的每一个隐藏角落,让你的游戏世界既浩瀚无垠又细节满满——从新手到高手的全面技巧升级秘籍
【8月更文挑战第31天】Unity地形编辑器是游戏开发中的重要工具,可快速创建复杂多变的游戏环境。本文通过比较不同地形编辑技术,详细介绍如何利用其功能构建广阔且精细的游戏世界,并提供具体示例代码,展示从基础地形绘制到植被与纹理添加的全过程。通过学习这些技巧,开发者能显著提升游戏画面质量和玩家体验。
115 3
|
3月前
|
开发者 图形学 前端开发
绝招放送:彻底解锁Unity UI系统奥秘,五大步骤教你如何缔造令人惊叹的沉浸式游戏体验,从Canvas到动画,一步一个脚印走向大师级UI设计
【8月更文挑战第31天】随着游戏开发技术的进步,UI成为提升游戏体验的关键。本文探讨如何利用Unity的UI系统创建美观且功能丰富的界面,包括Canvas、UI元素及Event System的使用,并通过具体示例代码展示按钮点击事件及淡入淡出动画的实现过程,助力开发者打造沉浸式的游戏体验。
79 0
|
3月前
|
图形学 C# 开发者
Unity粒子系统全解析:从基础设置到高级编程技巧,教你轻松玩转绚丽多彩的视觉特效,打造震撼游戏画面的终极指南
【8月更文挑战第31天】粒子系统是Unity引擎的强大功能,可创建动态视觉效果,如火焰、爆炸等。本文介绍如何在Unity中使用粒子系统,并提供示例代码。首先创建粒子系统,然后调整Emission、Shape、Color over Lifetime等模块参数,实现所需效果。此外,还可通过C#脚本实现更复杂的粒子效果,增强游戏视觉冲击力和沉浸感。
139 0
|
3月前
|
JavaScript 调度
Three.js开发秘籍:FlyControls的拖拽视角问题解决方案
Three.js开发秘籍:FlyControls的拖拽视角问题解决方案
55 0
|
Web App开发 前端开发 图形学
Unity实战问题-WebGL问题集锦-上篇
众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣!!!
438 1
|
前端开发 C# vr&ar
Unity实战问题-WebGL问题集锦-下篇
众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣!!!
288 0
|
数据可视化 定位技术 Android开发
可视化炫技利器诞生——VISLAB交互动画组件包发布,附详细介绍
VISLAB交互组件包的出现极大地拓展了DataV的展示与交互能力,本文作者—阿里云MVP陈琦将详细介绍此组件包的应用场景,并分享一些可视化数据分析案例与可视化心得。
4728 0
|
人工智能
带你读《少儿人工智能趣味入门动画与游戏编程一本通》之二:角色的基础:“运动”“外观”“声音”模块
Scratch是图形化的编程语言,它具有学习环境趣味性强、操作简单且直观等特点,很好适合6-12岁的孩子学习。本书是立足于Scratch 3.0版本的少儿编程入门书,能让孩子轻松愉快地掌握编程技能,锻炼和提高思维能力和创造力,为迎接人工智能时代的到来做好准备。本书以对Scratch中积木块的分类讲解作为主线,并将编程的核心思想融入大量精心设计的案例,让孩子在实际动手操作中更直观、更深刻地理解不同积木块的运用。本书对积木块的功能和用法解释详尽,语言通俗易懂,能够减少孩子对编程的畏惧心理,没有编程基础的家长也能陪伴孩子一起阅读,在融洽的亲子互动氛围中,自信、愉快地完成学习。