UE 动画
之前的一些总结
蒙皮与FK,IK的概念
三维软件的角色是通过骨骼控制角色模型动作的,骨骼和角色模型相互独立,将骨骼绑定到角色模型的技术叫蒙皮。
FK与IK:FK是正向运动,IK是反向运动,FK是级别高的骨骼带动级别低的骨骼,例如走路时手臂的摇摆,IK与FK相反,是级别低的骨骼带动级别高的骨骼,例如擦玻璃时,是手掌带动整个胳膊运动。
角色导入与动画混合
创建一个新的文件夹名字为角色名→文件夹里创建文件夹为Mesh和Animation→导入无动画的骨骼模型放到Mesh文件夹中→导入各种动画的骨骼(无需再次导入模型)放入Animation文件夹→创建一个混合空间1D(因为示例是混合的从行走到奔跑动画的混合,比较简单所以使用1D)→点开混合空间1D
在混合框中按住shift再移动鼠标可以查看混合效果。
混合空间1D和混合空间的区别:https://docs.unrealengine.com/zh-CN/AnimatingObjects/SkeletalMeshAnimation/Blendspaces/Overview/index.html
动画蓝图
动画蓝图的创建:
基础的动画蓝图(行走,跑步,跳跃)
事件图表:
动画图表:
Movement状态机:
idle/Run到Jumpstart(规则):
顺时针规则依次为
idle/Run(状态)(双击Idle/Run进入):
顺时针依次为:
其中播放什么什么的节点是通过将拖到图表来创建的。
角色蓝图
新建一个蓝图类,父类为角色
在蓝图中导入角色模型,调节胶囊体的大小使胶囊体大小来匹配角色,调节角色模型的方向来匹配胶囊体,因为胶囊体本身自带pawn模板的碰撞预设,所以将模型的碰撞预设改为NoCollision。在蓝图视口右面动画里调节如图所示,来使用之前创建好的动画蓝图。
创建这两个组件弹簧臂移动到模型后方。弹簧臂属性设置勾选使用pawn控制旋转的作用是试弹簧臂跟随鼠标进行旋转
的属性
的属性
项目设置中的输入中的操作映射:
LookUP中的缩放为-1.0个人认为应该是因为UE4使用的坐标轴是左手坐标系,向右移动鼠标是X轴正向对应的Y轴正向则是向下移动鼠标,因此LookUP的缩放调为-1.0.
操作映射中的命名对应的可以在蓝图中输入操作事件寻找到
轴映射中的命名对应的可以在蓝图中输入坐标轴事件中寻找到
事件图表:
创建一个蓝图类
新创建的游戏模式基础中:
类属性中的默认pawn类改为自己创建的角色蓝图,项目设置中的“地图和模式”中的默认游戏模式改为自己创建的游戏模式基础类即可使游戏中的角色使用角色蓝图中的设置
官方的详细的介绍如何设置人物运动
https://docs.unrealengine.com/zh-CN/InteractiveExperiences/HowTo/CharacterMovement/index.html
动画轨道的启用
在UE4中进行布料模拟
首先布料在导入的时候是需要骨骼的,需要选中。不需要导入动画。
第一步:将布料的物理栏中的碰撞体移动到其他位置,
在网格体一栏中使用片段选择
,选择布料,鼠标右键
此时会出现一个布料窗口
再次在布料位置按鼠标右键,应用布料数据
选择布料数据并 启用布料绘制
其中paint Value为100时
绘制出来的区域是激活布料模拟的,Paint value 为0时绘制出来的区域是不激活布料模拟的。
其中紫色区域是不激活布料物理模拟(是处于固定的状态),白色是激活。
绘制好保存后,在场景中加一个Wind 可以模拟出布料飘动的效果
影片渲染队列(MRQ,Movie Render Queue)
4.25版本:
4.26版本需要在插件中手动打开
其中渲染(本地与远程)的区别:
渲染输出视频设置
渲染输出视频的尺寸应该是目标尺寸的1.5~2倍的大小,例如 如果要目标是38402160的视频,那么输出的视频尺寸大小就应该是76804320的尺寸。最后在视频剪辑软件中再将视频压缩到目标大小。并且如果渲染输出尺寸和摄影机尺寸不一样的话,MRQ会根据目标渲染输出尺寸来进行渲染输出,但是Sequence是根据摄影机画面尺寸渲染输出。
抗锯齿的设置:
如果提高采样数值后提示那么就勾选
其中 anti aliasing method 翻译是抗锯齿方法,选择无并不代表影片中就没有抗锯齿了,这个属性的意思是是否在原来的基础之上再添加一个采样方法,一般选择无就可以了,不推荐FXAA,FXAA的效果并不是很理想。一般要是选择的话就选择临时AA(TAA)
游戏重载(覆盖)的设置:
如果渲染输出的视频出现了mipmap的问题,那么就在游戏重载中找到并选择
并确认勾选了Use LODZero。
高分辨率渲染
其中瓦片数量控制的是渲染多少个图块,并且是按照瓦片数量平方的数值来决定渲染图块数量,例如瓦片数量为2时将渲染4个图块。
重叠比率控制的是每个图块的重叠面积,数值为0.1时意思就是有10%的重叠面积。如果重叠比率为0,那么渲染出来的影片或者是图片会产生接缝,这个接缝在不放大时可能看不出来,但是放大后就会非常明显。例如:
重叠比率为0时:重叠比率为30%时:
不同的工程所需要的重叠比率是不同的,因此输出影片时建议先输出单帧观察
刚开始不设置其他的参数应该会出现这个警告
解决办法是不使用后处理体积的曝光设置,而是将输出视频所使用的摄影机中的计量模式改为手动,改为手动后又两种调整曝光的方法,一个是找到camera调整这些参数
,另一种方法是直接调整
曝光补偿的数值
透明通道输出
要实现透明通道输出就需要先将项目设置中的渲染模块中的。
然后在MRQ输出PNG或者EXR时勾选输出透明度。
输出透明通道的结果:
Sequence
渐入渐出
渲染的设置
最后渲染影片时在渲染设置中设置一下。在后期处理体积的细节面板增大屏幕百分比
,可以输出更高质量的视频。
反射球可以先拉一个大范围的,然后再小范围拖动到金属物体的影响金属。
如果反射效果不好时,可以将反射的分辨率调高,在项目设置中的正在渲染,反射采集分辨率调节。
sequence快捷键
s键是K帧的快捷键,选中一个没有添加到关卡序列的物体按s键可以快速的将物体添加到关卡序列中
选中关键帧按1,2,3,4,5可以快速更改为
[官方培训]08-UE动画基础
UE动画概述
影视CG相关常见动画种类浏览
骨骼网格体动画
骨骼动画是通过骨骼位置和蒙皮信息带动骨骼网格体的顶点位置从而实现动画效果的一种方式
变形目标
变形目标也就是maya中的blendshape,是通过在不同的模型顶点形态之间进行插值,结合动画曲线来实现形变动画的一种方式,通常用来制作角色身体和面部肌肉的变形动画
动画曲线
动画曲线是指在动画序列中通过某些属性来实现多种动画数据统一变化的一种方式,曲线有三种类型,分别是目标变形曲线,属性曲线和材质曲线
可以在DCC软件中添加需要的属性并制作关键帧来制作属性曲线,通过fbx导入UE
姿势资产(pose asset)
可以将包含多种曲线的动画序列逐帧转化为一组pose,通过在例如动画蓝图中输入数据的方式来驱动pose,实现基于曲线的动画效果。例如可以在DCC软件中制作好一段包含骨骼运动,变形目标变化和自定义材质曲线的动画,每一帧代表一个pose,将骨骼网格和动画导入UE后得到一段同时驱动骨骼,变形目标和材质曲线的动画序列,然后基于这些动画序列创建一个姿势资产并通过手动或批量复制的方式修改每个pose的名称,就可以在动画蓝图中通过驱动pose得到动画效果,目前主要用于驱动角色面部动画。
物理动画
物理动画是通过实时的物理模拟实现刚体布料破碎毛发等实时的物理模拟效果
定点动画缓存
也就是通过在DCC软件中导出abc格式的动画缓存,然后导入UE来播放
顶点材质动画(世界顶点偏移)
通过材质中的世界位置位移节点,配合UV信息的变化来表现例如植被水面环境布料等动态规律明显的几何形变动画效果。
毛发GroomCache动画
可以将外部预解算的groom毛发动画通过abc格式导入到引擎中,在UE中运行(play)之后就可以看到动画效果。
时间轴动画(sequencer动画)
在虚幻引擎的编辑器中通过直接修改场景对象属性,尤其是transform属性来生成的动画效果。UE也支持从DCC软件中导入时间轴动画数据,支持单个或批量导入,从DCC软件中制作带有动画的模型,然后用fbx格式导出,接着在时间轴面板中进行导入,导入后会自动根据名字一 一对应将动画数据进行匹配。
时间轴相机动画
跟时间轴动画操作一致,也是根据名字一一对应,不同的是,时间轴相机动画可以将焦距光圈等相机专用的属性动画导入。
时间轴控制绑定动画control rig
control rig 是虚幻引擎的实时绑定系统,除了可以在sequencer上手动创作控制器动画之外,现在还可以导入外部DCC中的控制器,时间轴动画数据。
骨骼动画系统
DCC动画制作要求
UE对于动画资产兼容性很强,唯一需要注意的是同一套骨架内的骨骼名称不能相同,否则会报错
动画导入\导出
选中几何体和骨骼,导出FBX,需要勾选动画
导入时确保勾选导入动画
注意点: 系统单位:厘米,尽量不要在制作过程中修改系统单位。
导出时动画的帧范围设置成动画数据的范围,而不是时间轴的范围,因为默认导入是以时间轴范围导入的,可以通过在UE中更改动画长度为带动画的时间然后重新导入动画来修复
。
从UE导出的FBX动画文件,再导入至DCC软件中时需要确保
动画重定向
是指将针对某个角色制作的动画数据适配到另一个角色身上。
UE5中进行了大幅增强,支持通过实时IK绑定提高动画重定向的效果,同时支持在不同结构或命名的骨架之间进行动画重定向。
livelink
livelinke是虚幻引擎的动画插件,可以用于从maya中将动画数据实时传输到虚幻引擎也可以通过移动设备进行面部实时动捕。
control rig
实时绑定系统,可以使我们在虚幻引擎中创作骨骼动画,同时支持IKFK多种绑定模式,并且可以在控制绑定编辑器中通过图形脚本自定义绑定规则
CG项目中的动画环节
如何确保骨骼动画数据保真度
maya关节方向导致的数据显示差异
坐标系转换导致精度的误差
帧率差异导致动画长度不同
Maya数据显示精度问题
maya动画曲线信息无法导出到UE,导致帧之间插值方式有差异
maya双精度浮点数和UE动画数据单精度浮点数的差异
动画压缩导致高频信息丢失
可以新建压缩设置,选择使用动画压缩破坏性最低的设置
或者直接取消勾选允许去除帧。
插值方式会改变动画形态
UE默认会根据帧与帧之间线性生成过度帧,如果想要动画是一帧一个变换形态,那么可以将插值选项改成跳过。
总结
如何选择动画实现方式
离线渲染和实时渲染对动画方案的思路差异
CG项目动画方案设计示例
如何通过动画环节的快速迭代最大化实时流程的价值
通过原型+迭代的方式并行推进动画制作
通过LiveLink实时浏览引擎内效果
引擎内修改和创作动画
通过control rig 直接在引擎内制作动画,这种方式还能够避免maya与UE动画传输的失真。
引擎内实时动作捕捉
动画案例简析
Meerkat Demo 狐獴 案例工程动画技术分析
动画方法分析和相关注意事项介绍
动画是只用了一个动画序列
两个角色的根骨骼都始终在原点并且没有动画,角色的位移都是由第二节骨节的位移动画带动
注意事项:
给角色骨骼网格体指定合适的物理资产
如果没有指定合适的物理资产,由于动画范围较大,很多镜头中骨骼网格体的原点到了镜头之外,出于优化目的,角色会被视为不需要渲染的物体而剔除
如果仅仅为了避免角色被剔除,可以在控制角色移动的骨骼上制作一个简单的物理体(需要匹配全身),
把角色部件封装为蓝图
蓝图除了可以把骨骼网格毛发资产,服饰道具,特效等角色部件都封装到一起之外,还可以自定义一些函数变量把一些动画元素进行统一的调度。例如在sequencer中控制一个蓝图其中编写的少量事件或变量来批量设置一些东西,这样能够让sequencer轨道更加精简。角色蓝图也是同理。
狐獴肢体骨骼动画和表情变形目标动画
在DCC软件中通过blendshape制作并作为曲线跟随骨骼动画数据一起导入到UE中,同时可以在动画序列编辑器中修改动画数值。
LiveLink应用
基于ControlRig和动画模式的引擎内创作动画
在骨骼网格体中提供控制绑定资产
在虚幻引擎中制作动画并烘焙成动画序列
针对已经有的动画序列资产可以通过烘焙到控制绑定进行二次编辑。如果没有控制绑定资产也可以通过以FK控制绑定进行编辑。这样就不需要导出到maya修改完再导回来。
Slay Animation Sample 案例工程动画技术分析
按镜头划分动画序列资产的管理方式
在角色蓝图中协同动画播放
Sequnencer时间轴动画和骨骼动画结合应用
Addtive 表情动画和肢体动画结合应用
实时布料物理模拟动画的应用
布料模拟取决于物理资产的精细程度
角色动画制作教程(旧教程,忽略了)
这个教程有点老了,17年的。
教程链接https://www.bilibili.com/video/BV1Va4y1E7jQ?p=2&spm_id_from=pageDriver&vd_source=b1de3fe38e887eb40fc55a5485724480
准备角色导出
角色的属性查看
首先角色有且只有一个根骨骼,骨骼组织不能被破坏。
蒙皮的方法使用线性
为角色添加blendshape
选中角色添加blendshape,然后在shape editor中
进行操作。
选中blendshape节点,右键添加目标,然后会自动进入编辑模式,正在编辑的目标会显示为红色,
显示为红色时会记录针对角色进行的变换,变换完以后,点击edit即可。
目标节点右键可以使用duplicate target 复制,然后使用flip target 翻转目标,即可快速制作一个对称方向的目标节点。(也就是做了右边后使用此操作快速生成左边的),mirror target是镜像,镜像和翻转的区别是,镜像是再原来的基础上生成一个对称的,翻转是将现在移动到对称位置。
导出设置
以FBX格式导出,勾选平滑组,如果有动画的话就bake一下动画:
,如果模型有进行变形操作那么就勾选这些
,fbx版本用高版本就行,具体需要时去看虚幻官网的建议
导入角色到引擎
带有变形目标的骨骼网格体使用的材质需要勾选使用变形目标,不勾选也行,当修改骨骼网格体的变形目标的参数时,编辑器会自动勾选,只需要保存一下材质即可。
导入动画时,推荐勾选删除变形目标曲线。
相关知识点
https://docs.unrealengine.com/5.0/zh-CN/skeletal-mesh-sockets-in-unreal-engine/
【官方培训】17-UE角色动画
[官方培训]17-UE角色动画 | Epic 戴浩军_哔哩哔哩_bilibili
影视动画行业动画环节特点分析
- 角色动画数据量大,保真度要求高
- 目前较为依赖外部DCC
- 是品质打磨的重点环节,需要频繁修改
- 同时存在动作捕捉和手调动画的需求
- 通常涉及到角色相关资产的整合
UE5角色动画相关工具和特性介绍
影视动画项目常用动画资产类型和动画概念
骨骼动画
用骨骼位置和蒙皮信息带动骨骼网格体的模型顶点位置,从而实现模型的动画效果。
动画曲线
可以在引擎中读取,或者在动画编辑器中添加和编辑的动画曲线数据。有三种曲线:属性曲线,变形目标曲线,材质曲线。
姿势资产
通过将动画拆分成不同的姿势并储存为一个资产,让我们可以通过动画曲线驱动姿势的方式来实现动画效果。在影视动画项目中,通常用于驱动角色的面部表情动画
变形目标
对应maya的blend shape。是通过在不同的模型顶点形态之间插值,结合动画曲线来实现形变动画的一种方式。通常用来表现角色身体和面部的姿势变形。
物理动画
通过结合物理资产,动画蓝图,动态动画节点等方式,在已有的动画表演基础上增加基于物理的角色动画修饰效果,在游戏等交互项目中应用比较广泛。在影视动画项目中通常可以用来制作例如马尾,尾巴,挂坠,天线等物理动画
groom cache毛发缓存动画
虚幻引擎专门针对groom毛发的动画缓存数据,专门用于将外部预解算的毛发动画通过alembic格式导入到引擎中,播放后能够看到动画效果,显然通常用来实现角色的毛发预计算动画效果。
几何缓存动画
通过alembic等中间格式,从外部DCC软件导入UE的顶点缓存动画。通过UE的的alembic导入器,我们可以选择导入为静态网格体加世界顶点偏移材质还是骨骼网格体加骨骼动画还是Geometry Cache几何缓存,通常用来制作角色服装上的较为飘逸的布料,飘带或是特殊镜头中角色形态剧变的动画。
不推荐大量使用几何缓存动画来实现常规的角色肢体动画需求
控制绑定(ControlRig)
UE内置的实时绑定系统,让我们可以在引擎编辑器中通过类似编辑蓝图节点的方式,可视化,交互式的编写绑定逻辑脚本,同时支持前向后向解算,结合UE的动画模式让我们可以直接在sequence中手动创作动画数据,或者修改实时动捕得到的动画数据。
IK绑定(IK Rig)
UE5新增的实时绑定系统,让我们能够使用直观交互的方式为各类骨骼网格体创建实时的IK动画解算器,并保存到IKRig资产中。然后我们就可以在其他动画系统,例如动画蓝图中动态修改解算器参数,对角色进行基于IKRig的实时动画调整。
IK重定向(IK Retargeter)
基于IKRig的重定向系统,为我们提供了全新的IK重定向资产编辑器,和批量重定向工具。相比以往UE4中的位移重定向方案,IK重定向支持在骨架结构完全不同的角色间进行动画资产重定向或实时动画重定向
后处理动画蓝图
能够在角色现有的动画蓝图,最终动画效果基础上,利用类似IK,骨骼控制等程序化功能使角色得到更为丰富的实时动画效果,这在游戏类交互项目中更为常用,但对于影视动画来说同样可以作为优化动画流程的一种参考手段
布料模拟动画
- 在类似MD,Maya,houdini等外部DCC软件中制作布料模型并进行物理解算之后,作为alembic动态几何体缓存数据导入虚幻引擎。(这样做虽然可以可以确保动画布料的精度,但如果相关设计需要频繁修改也会导致角色动画环节甚至环境制作环节都需要为此付出不可忽视的成本,比如在引擎内制作的角色骨骼动画可能和布料产生交互的物体等都需要导出到外部DCC软件,此外布料的风力和引擎内方向风源相互独立也需要手动匹配,同时如果资产比较重,也会带来导入导出管理传输相关的成本)
- 在创作阶段使用实时布料模拟结合角色骨骼动画预览整体效果,确定后再把角色骨骼动画导出到外部DCC软件并将物理解算后的布料几何缓存导回引擎。UE5的chaos布料编辑器操作和UE4的ncloth布料编辑器操作基本一致。 主要流程就是在制作布料模型时制作用于渲染的高精度模型和用于物理模拟的解算模型,指定不同的材质来确保导入引擎后成为不同的模型分段,
然后在骨骼网格体编辑器中对解算模型分段创建布料数据
调节物理模拟参数并使用笔刷针对不同目标绘制遮罩,比如最大距离,逆止距离等
。 然后在渲染模型分段上应用布料数据
并且进行布料平滑数据设置
就可以得到实时的布料解算效果了。
实时布料碰撞
在UE5中存在两种布料碰撞形式:
1.环境碰撞
(包括角色骨骼网格体的其他分段以及场景),碰撞信息来自场景的简单碰撞。对于角色而言就是物理资产中跟随骨骼的物理体,对于场景而言就是静态网格体的简单碰撞(这里的简单碰撞不支持多边形碰撞或者是将简单碰撞用作复杂碰撞
)。
在UE5中为了提升角色肢体物理碰撞的精确度,除了手动为某根骨骼添加多个物理体之外,我们还可以从某个静态网格体中读取碰撞体形状来获得由多个简单物理形状组合而成的较为精确的物理体(可以跟随骨骼运动但不支持形变)
2.布料自碰撞
仅限于布料解算模型分段自身的高精度碰撞检测
本身用来实现布料横向摩擦碰撞产生褶皱形态或者是同一模型分段的多层布料之间的碰撞效果,性能消耗较高,对于复杂模型要慎用,对于简单角色模型也可以使用自碰撞来实现布料和角色肢体局部之间的精确碰撞。
chaos布料的更新内容
1.在UE5.1中chaos布料得到了多项更新,其中新增的布料模拟缓存功能让我们可以在sequence中将布料实时模拟的结果保存为一个资产并且可以高性能可控的回放,结合布料自碰撞为全实时流程带来了可能。
2.布料压力控制
用来模拟布料自身向外或向内的固有压力,对于制作比如气球等布料效果比较有帮助。还可以通过绘制布料压力遮罩来区分不同区域布料的压力数值
3.布料自碰撞的改进
可以针对自碰撞设置额外的步进值来提升碰撞精度,通过调整自穿插精度来修复默认碰撞无法应对的穿插问题,还可以通过新增的自碰撞摩檫力参数来调整布料的褶皱形态。
Control Rig 控制绑定
ControlRig蓝图编辑器如何使用
1.加载插件
2.创建蓝图
进入ControlRig蓝图编辑器在左下角导入层级选择骨骼网格体
这里的骨骼层级与ControlRig资产之间并不是绑定关系,而是纯粹的读取。
蓝图中的三个事件节点:
不同的绑定逻辑有不同的执行时机。
向前解析(用的最多的解析事件):指的是在编辑器中,通过ControlRig来驱动骨骼时所执行的绑定逻辑。无论是在Sequence中用ControlRig的控制器来创作动画还是在运行时用ControlRig实时修饰动画,执行的都是向前解析节点之后的绑定逻辑。
向后解析:一般用于在Sequence中将现有的骨骼动画烘焙到控制器上。在这里一般用骨骼的数据来驱动控制器。
设置事件:只在ControlRig运行的时候执行一次,通常在这里编写用于初始化的绑定逻辑
常见问题及最佳实践
如何在UE5中确保可控的动画品质
首先要通过各类参考来明确动画品质的目标,最好能针对重要的镜头提供较为精准的动画脚本和参考视频,来帮助动画设计师快速了解品质需求,降低沟通成本。
然后是通过技术手段和审查机制量化动画数据,提高动画数据的保真度,
另外要尽可能在统一的技术环境中生产和修改动画数据,减少数据交换频次,避免因为导入导出产生的差错和数据的精度损失。
推荐使用Control Rig结合动画模式在引擎中创作动画,最大程度减少角色动画数据的导入导出,最后在流程上,由于动画项目中对动画环节的修改较为频繁,最好能通过性价比较高的方式快速决定动画整体效果,然后再跟随项目阶段快速迭代细节。
如何在UE5中通过优化动画流程来降低协作成本
首先在设计阶段就可以把角色动画进行拆分,例如参考metahumen并且结合自身项目自身要求,把例如身体动画,表情动画,衣服布料动画,毛发动画,拆分成不同的资产和动画环节,按照统一的标准由专人分别负责制作。这样更便于提炼出更通用的绑定标准。
针对例如角色身体,建立适合项目的通用绑定资产,适用于尽可能多的人形角色,最大化资产多次复用的可能性,也降低了因为绑定标准的不同带来的沟通成本。
在角色蓝图中将这些部件进行拼装整合,使动画设计师能够像操纵完整的骨骼网格体一样,针对这个角色蓝图在引擎中创作动画。