[官方培训]08-UE动画基础 戴浩军 Epic 笔记

2023-11-27 05:20

本文主要是介绍[官方培训]08-UE动画基础 戴浩军 Epic 笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

UE动画基础

UE动画概述

  • UE动画功能强大,复杂,灵活
  • 不同类型项目对动画系统应用范围各不相同
  • “动画”作为一个宽泛概念,在引擎中有多种实现方式,需要灵活选择

影视CG相关常见动画种类浏览

  • 骨骼网格体动画(动画序列,变形目标,动画曲线,Pose Asset)
  • 物理动画(刚体,布料,破碎,实时毛发模拟)
  • 顶点动画缓存
  • 顶点材质动画(世界顶点偏移)
  • 毛发Groom Cache动画
  • 时间轴动画(Sequencer动画)
  • 时间轴相机动画
  • 时间轴控制绑定动画
骨骼网格体动画

骨骼动画就是用骨骼位置和蒙皮信息带动骨骼网格体的模型顶点位置,从而实现模型的动画效果。

动画序列

动画序列是骨骼动画系统中常见的动画资产类型,通常个用来表现角色肢体的动画。

变形目标

变形目标对应的就是Maya中的BlendShape,是通过在不同的模型顶点形态之间进行插值,结合动画曲线,来实现形变动画。通常用来表现角色身体和面部的肌肉的变形动画。

动画曲线

动画曲线是指在动画序列中通过改变某些属性来实现多种动画数据统一变化的一种方式。

曲线有三种类型:

  • 目标变形曲线 专用于驱动目标变形的数值,基于骨骼网格体资产。
  • 属性曲线 是一种通用曲线,可以在动画蓝图中实时读取曲线当前数值,理论上可以用来驱动任何数据,基于骨骼资产。
  • 材质曲线 用于驱动骨骼网格指定的材质中具有相同名称的材质参数,基于骨骼资产。实际上材质曲线是专用的属性曲线,可以在编辑器中随时切换。可以在DCC中预先添加所需要的属性,并在时间轴上设置关键帧来制作好属性曲线,通过FBX格式导入UE。
姿势资产(Pose Asset)

可以将包含多种曲线的动画序列逐帧转换为一组pose,通过在动画蓝图中输入数据的方式来驱动pose,实现基于曲线的综合动画效果。目前主要用于驱动角色面部动画。

物理动画

通过实时的物理模拟来实现刚体,布料,破碎,毛发等实时物理模拟动画效果。

顶点动画缓存

本质上就是在DCC软件的时间轴上,记录模型每个顶点的唯一动画信息。导出例如为alembic格式,再导入虚幻引擎。作为几何缓存或骨骼动画的变形目标进行实时播放。

顶点材质动画

顶点材质动画指的是通过材质中的世界位置偏移节点,配合UV信息的变化来表现植被,水面,环境和布料等动态规律明显的几何形变动画效果。

毛发Groom Cache动画

可以将外部预解算的Groom毛发动画,通入abc格式导入引擎中。

时间轴动画(Sequencer动画)

Sequencer动画是指在虚幻引擎的Sequencer编辑器中,通过直接修改场景对象属性,尤其是transform属性而生成的动画效果。还可以在DCC软件中制作好,再通过FBX格式导入。

时间轴相机动画

时间轴相机动画是Sequencer动画的一种。相机动画还可以将其特有的焦距,光圈等相机专用参数导入到引擎。

时间轴控制绑定动画

现在可以导入外部的DCC软件中的动画数据。

骨骼动画功能与特性

CG项目相关

  • DCC动画制作要求

虚幻引擎对DCC中骨骼网格和骨骼动画导入数据的兼容性很强,只要是在各内软件中具有蒙皮信息的物体,通过FBX格式导出后都能导入骨骼网格体和骨架。角色模型蒙皮的对象可以是符合虚幻标准的骨架,也可以是任意其它骨架。甚至在Max等软件中可以不用骨骼而是直接蒙皮到其它几何体上。都可以作为骨骼网格体导入引擎。

唯一要注意的要求是同一套骨架内的骨骼名称不能相同,否则导入引擎会报错。

  • 动画导入/导出

骨骼动画如何从DCC软件中导出并导入UE?

以Maya为例,我们选中几何体和骨骼导出为FBX格式,在导出设置中我们只需要勾选动画导出就得到了最基本的包含模型骨骼和动画的fbx文件。然后在虚幻引擎fbx导入器中确保勾选导入动画,就可以完成模型,骨骼和动画数据的最基本的导入。
在这里插入图片描述
在这里插入图片描述

动画数据导入导出的注意点

  1. 系统单位的问题

对于影视CG项目而言,推荐的做法是一开始就把系统单位设置为厘米。

模型尺寸或动画距离都基于厘米来测量。尽量不要在制作过程中修改系统单位,这样在导入引擎后既可以保证骨骼没有缩放又能够保证动画位移数据尽可能一致。要杜绝因为系统单位而引起的骨骼缩放,这样的话即使在引擎中手动弥补也会带来其它问题。
在这里插入图片描述

  1. 动画导入范围

比如我们在Maya中有一段动画时间轴上的播放范围是1-30帧,但是有关键帧的范围只有1-15帧。此时导出动画,并在导入引擎时动画长度的选项是默认的导出时间。那么最终导入的动画序列长度就是30帧,其中只有15帧有动画数据。

此时把动画长度选项改为带动画的时间,重新导入动画,动画序列的长度就变成了15帧,通过这个方式可以确保动画数据的精简。
在这里插入图片描述

引擎导出到外部DCC

在引擎中选中动画序列导出为FBX格式,并在Maya中用fbx导入器导入即可,记得在导入设置中选择Unreal Take这个动画轨道。引擎中的强制锁定跟骨骼等效果在导出后还原成了位移动画。通过这个方式可以最大程度保留原始动画数据。
在这里插入图片描述

  • 动画重定向

将针对某个角色制作的动画数据适配给另一个角色。

  • Live Link

Live Link是虚幻引擎的动画插件,可以用于从Maya中将动画数据实时传输到虚幻引擎。也可以通过移动设备进行面部实时动捕。

  • 引擎内修改或创作动画

控制绑定(Control Rig)是虚幻引擎推出的实时绑定系统,结合动画模式可以让我们直接在引擎编辑器中创作骨骼动画。

CG中的动画环节

如何确保骨骼动画数据保真度

骨骼动画数据从DCC到UE失真的因素:

  • Maya关节方向导致的数据显示差异
  • 坐标系转换导致精度的误差
  • 帧率差异导致动画长度不同
  • Maya数据显示精度
  • Maya动画曲线信息无法导出到UE,导致帧之间插值方式有差异
  • Maya双精度浮点数和UE动画数据但精度浮点数的差异
  • 动画压缩导致高频信息丢失
  • 插值方式会改变动画形态

下面通过一个案例来具体说明

案例地址
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

最佳实践:

  • Maya系统单位设置为厘米,项目中不再修改
  • Maya设置Z-up
  • 显示Maya数值小数点后6位
  • Maya中避免帧率缩放,一旦缩放需要手动调整关键帧位置
  • Maya从0帧开始制作动画,导出动画FBX时帧数范围保持0到最后一帧
  • UE中导入动画时选择“导出的时间”,手动设置导入动画数据的时长
  • UE中导入动画时选择和Maya中相同的采样率,并针对精度要求高的动画提高帧率和采样率
  • 避免因为距离过远的动画和幅度过小的动画数值(例如角色离世界中心很远,或者做一个尺寸很小的动画,在引擎中放大使用等)
  • 高频动画关闭动画压缩,并根据需要修改帧过渡方式

如何选择动画实现方式

在这里插入图片描述

在这里插入图片描述

如何通过动画环节的快速迭代最大化实时流程的价值

  • 通过原型+迭代的方式并行推进动画制作

在这里插入图片描述

  • 通过Live Link实时预览引擎内效果

在这里插入图片描述

  • 引擎内修改和创作动画

通过控制绑定(Control Rig)和动画模式直接引擎内修改。

  • 引擎内实时动作捕捉

在这里插入图片描述

动画案例简析

Meerkat Demo(狐獴)案例工程动画技术分析

  • 动画方法分析和相关注意事项介绍
  • 把角色部件封装为蓝图
  • 狐獴肢体骨骼动画和表情变形目标动画
  • Live Link应用
  • 基于Control Rig和动画模式的引擎内创作动画

Slay Animation Sample案例工程动画技术分析

  • 按镜头划分动画序列资产的管理方式
  • 在角色蓝图中协同动画播放
  • Sequencer时间轴动画和骨骼动画结合应用
  • Addtive表情动画和肢体动画结合应用
  • 实时布料物理模拟动画的应用

参考资料汇总

参考资料索引

  • 动画|虚幻引擎-Unreal Engine

  • 动画系统概述|虚幻引擎文档

  • 在虚幻引擎中为角色和对象添加动画|虚幻引擎5.0

  • 用虚拟制片做动画

  • 初识动画-Unreal Engine

官方案例工程

  • Content Example
  • Meerkat Demo
  • Slay Animation Sample
  • Metahumans
  • Face AR Sample
  • Valley of the Ancient

在这里插入图片描述

学习地址

地址

这篇关于[官方培训]08-UE动画基础 戴浩军 Epic 笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/427116

相关文章

Android Mainline基础简介

《AndroidMainline基础简介》AndroidMainline是通过模块化更新Android核心组件的框架,可能提高安全性,本文给大家介绍AndroidMainline基础简介,感兴趣的朋... 目录关键要点什么是 android Mainline?Android Mainline 的工作原理关键

mysql的基础语句和外键查询及其语句详解(推荐)

《mysql的基础语句和外键查询及其语句详解(推荐)》:本文主要介绍mysql的基础语句和外键查询及其语句详解(推荐),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录一、mysql 基础语句1. 数据库操作 创建数据库2. 表操作 创建表3. CRUD 操作二、外键

Python基础语法中defaultdict的使用小结

《Python基础语法中defaultdict的使用小结》Python的defaultdict是collections模块中提供的一种特殊的字典类型,它与普通的字典(dict)有着相似的功能,本文主要... 目录示例1示例2python的defaultdict是collections模块中提供的一种特殊的字

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

Python基础文件操作方法超详细讲解(详解版)

《Python基础文件操作方法超详细讲解(详解版)》文件就是操作系统为用户或应用程序提供的一个读写硬盘的虚拟单位,文件的核心操作就是读和写,:本文主要介绍Python基础文件操作方法超详细讲解的相... 目录一、文件操作1. 文件打开与关闭1.1 打开文件1.2 关闭文件2. 访问模式及说明二、文件读写1.

C#基础之委托详解(Delegate)

《C#基础之委托详解(Delegate)》:本文主要介绍C#基础之委托(Delegate),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 委托定义2. 委托实例化3. 多播委托(Multicast Delegates)4. 委托的用途事件处理回调函数LINQ

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

Mybatis官方生成器的使用方式

《Mybatis官方生成器的使用方式》本文详细介绍了MyBatisGenerator(MBG)的使用方法,通过实际代码示例展示了如何配置Maven插件来自动化生成MyBatis项目所需的实体类、Map... 目录1. MyBATis Generator 简介2. MyBatis Generator 的功能3

MySQL中my.ini文件的基础配置和优化配置方式

《MySQL中my.ini文件的基础配置和优化配置方式》文章讨论了数据库异步同步的优化思路,包括三个主要方面:幂等性、时序和延迟,作者还分享了MySQL配置文件的优化经验,并鼓励读者提供支持... 目录mysql my.ini文件的配置和优化配置优化思路MySQL配置文件优化总结MySQL my.ini文件

最好用的WPF加载动画功能

《最好用的WPF加载动画功能》当开发应用程序时,提供良好的用户体验(UX)是至关重要的,加载动画作为一种有效的沟通工具,它不仅能告知用户系统正在工作,还能够通过视觉上的吸引力来增强整体用户体验,本文给... 目录前言需求分析高级用法综合案例总结最后前言当开发应用程序时,提供良好的用户体验(UX)是至关重要