UE5动画(上)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


前言

一、动画

1.动画

1.1动画序列

打开UE5.5.4,然后选择游戏中的第三人称项目,然后创建一个新项目。

然后创建一个新的基础关卡。

然后可以在内容浏览器中右键创建一个关卡序列。然后双击关卡序列文件后可以打开序列编辑器和序列曲线编辑器,如果想要隐藏序列曲线编辑器,可以点击序列编辑器中的曲线图标进行隐藏和显示。需要保存序列时,可以点击序列编辑器左上角的保存图标。


如果双击关卡序列文件后没有打开序列编辑器窗口,可以在下面的选项中显示序列编辑器窗口。

如果你想要给一个骨骼网格体制作动画,此时可以在内容浏览器中选中骨骼网格体,然后拖拽到序列编辑器的左侧空白处。然后序列编辑器中就有了一个骨骼网格体,并且关卡模式变为了动画模式。

下面我们可以选中这个模型的右脚立方体框,这个立方体框是一个控制器,后面我们会讲。鼠标选中右脚的立方体框后,我们按S按键,此时可以看到时间线上的这个控制器的通道上打了一个关键帧,即S按键就是添加关键帧的快捷键。

然后我们移动时间头到时间线的中间,然后我们选中右脚控制器,按W按键可以切换到修改控制器位置的模式,按E键可以切换到修改控制器旋转的模式,按R键可以切换到修改控制器缩放的模式。我们将右脚控制器向上移动,然后再按压S按键在时间线上打一个关键帧。此时在时间线上移动时间头,我们就可以看到右脚会进行一个动画效果了。

如果我们想要制作一个循环动画,此时我们可以选中起始关键帧,然后复制这个起始关键帧,然后移动时间头到时间线末尾,然后我们在时间线末尾粘贴一个起始关键帧来作为结束关键帧。这样这个序列中,右脚的起始位置和结束位置就是一致的了,这样循环播放动画时,不会有卡顿的感觉。

点击下面的循环图标,然后点击播放后,动画就会循环播放了。

如果我们想要在项目中使用这个动画或者将这个动画导出,我们需要将这个动画烘焙为一个动画序列。我们在序列编辑器中先选中骨骼网格体的根节点,然后右键选择烘焙动画序列。

然后选择一个路径来存放动画序列文件。

动画序列选项中的设置我们不需要修改,直接点击导出到动画序列即可。

然后我们就可以看到在我们设置的路径文件夹下面就有了一个动画序列文件。



我们可以双击打开这个动画序列文件,这个动画资源就和其他的我们使用的动画资源一样了,可以让我们使用。

我们还可以选中动画序列文件,然后右键将动画资源导出为FBX格式或者迁移到其它的项目中。


1.2控制器

我们可以看到骨骼网格体上有很多图标,这些都是骨骼网格体上的不同类型的控制器,用来控制某个关节的变换。

当对某一个控制器进行旋转等操作时,我们需要明确是在世界坐标系下还是局部坐标系下。世界坐标系就是关卡的世界坐标系,局部坐标系就是控制器自己的局部坐标系。

下面的这个图标为圆球时就表示现在是在世界坐标系下的变换。如果为立方体时就表示是在局部坐标系下的变换。

例如我们骨骼网格体右肩控制器,我们可以看到在世界坐标系下,让右肩控制器绕Z轴旋转时,此时Z轴是垂直地面的。

然后我们切换到局部坐标系,可以看到此时右肩控制器绕Z轴旋转的话,Z轴此时就不是垂直地面的了。

这就是世界坐标系和局部坐标系的区别,在制作动画时,确定在哪个坐标系下进行变换很重要。

1.3新版操作轴

当对控制器进行移动、旋转和缩放变换时,我们也可以不需要通过拖动每个轴来进行变换。我们可以通过Ctrl加鼠标左键来进行X轴上的移动、旋转、缩放操作;Ctrl加鼠标右键来进行Y轴上的移动、旋转和缩放操作;Ctrl加鼠标左键加鼠标右键来进行Z轴上的移动、旋转和缩放操作。

我们可以在插件中启用New TRS Gizmos来启用新版操作轴。

重启UE5后在编辑器偏好设置中搜索TRS,然后启用新TRS。

此时操作轴的移动、旋转、缩放的样式就变为新版的了。

新版的旋转操作轴中,我们可以看到一个白色的圆圈,拖动这个圆圈进行旋转,我们会发现它不是以X轴、Y轴、Z轴为旋转轴进行旋转。其实它是以当前我们观察相机的视线为旋转轴进行旋转的。

需要注意的是,新版操作轴中Ctrl加鼠标左键来进行X轴上的移动、旋转、缩放操作;Ctrl加鼠标中键来进行Y轴上的移动、旋转和缩放操作;Ctrl加鼠标右键来进行Z轴上的移动、旋转和缩放操作。

1.4 IK控制器和FK控制器

当有时候你摆了一个奇怪的姿势,想要重新开始时,此时可以直接删除这个骨骼网格体,然后重新将新的骨骼网格体拖入到序列编辑器中,这样就能获得骨骼网格体的初始状态。

如果你此时已经做了一部分动画了,但是后面的更改不确定会不会满意。此时可以将当前序列另存为一个序列文件,然后我们就会得到一个新创建的序列文件。然后下面的操作我们就切换到新的序列文件中进行了,这样后续操作就不会影响到我们原本的那个序列文件了。



当我们选中骨骼网格体的右肩控制器时,此时这个控制器是一个FK控制器,当我们在局部坐标系下旋转这个右肩控制器时,可以看到此时模型的整个右臂模型都会跟着旋转。

这个FK控制器制作一个劈砍动作时很实用,因为人物的手臂可以很自然的做一个圆弧形的下劈动作。

当我们想要制作一个抚摸小狗的动作时,此时我们需要模型的手部最后停留在小狗头上。此时如果我们使用FK控制器制作动画的话,我们需要移动右肩控制器、右肘控制器、右手腕控制器等。

此时我们就可以将模型的双臂切换为IK控制器模式。

我们先选中全局控制器,然后在动画细节窗口将模型的双臂设置为IK控制器模式。此时可以看到模型的双手上也会出现两个立方体框,和模型的脚部一样。

如果你找不到动画细节窗口,可以在窗口选项中进行显示。

在IK模式下,我们只需要移动IK控制器,然后就会根据IK控制器位置自动计算肩部和肘部的位置。这样的话我们只需要将手部移动到小狗头上,摆好动作即可。然后肩部和肘部的动作会自动生成,这样就做好了一个抚摸小狗的动画。

这些小球可以用来控制IK极点的方向,以此来修改模型手肘和膝盖的朝向。

下面这三个图标分别是移动吸附、旋转吸附、缩放吸附。如果我们开启的话,例如我们开启移动吸附,然后选择10,那么每次移动一个控制器时,都会移动10厘米。通常我们在制作动画时会将移动吸附和旋转吸附关闭,因为使用吸附的话,摆放动作时不能进行细微的调节。

模型身体部分最下面的圆圈控制器是臀部控制器,它可以控制模型的臀部变换而不影响身体的其它部位。

然后臀部控制器上面的八边形是模型的身体控制器,它可以控制模型的身体部位的变换。

身体控制器上面的三个圆框矩形是脊柱控制器,它们分别控制模型的下脊柱、中脊柱、上脊柱。

模型头上的这个四方箭头是头部控制器,它可以控制模型头部进行左右转头、上下转头和左右歪头的动作。

模型脖子上的两个圆圈控制器是颈部控制器,可以控制模型颈部的变换。

模型肩部的两个箭头是肩部控制器,它可以控制模型的肩部和锁骨。

当我们将模型手部举过头顶时,可以看到此时模型肩部动作非常的别扭,这是因为没有移动肩部造成的。

如果我们稍微对肩部控制器进行调整,可以看到模型的动作就没有那么别扭了。所以当模型手臂进行移动时,肩部控制器也要适当的进行变换。


当我们想要制作一个人物脚尖贴地、脚跟抬起的行走动作时,我们可以先变换脚部控制器,然后变换脚趾控制器来实现。

还有一种办法是选中脚部滚动控制器,然后此时旋转时可以看到直接实现了脚尖着地,脚跟抬起的走路动作。我们还可以让这个控制器向后旋转,以此来实现脚跟着地,脚尖抬起的动作。

模型的手部也有很多控制器。点击手部关节处的这个绿色小球然后旋转,此时可以看到整个手指都会进行弯曲。

除了绿色小球外,我们还可以选中每个手指关节处的控制器,就是箭头形状的控制器。然后对手部动作进行更详细的摆放。我们可以发现当旋转食指和小指的根关节时,中指和无名指也会跟着变换。所以当摆放手部动作时,可以先摆放食指的动作,然后是小拇指,然后再是中指和无名指。

1.5关键帧类型

我们在第一节时制作了一个抬脚动画。我们选中其中一个关键帧然后右键,可以看到这个关键帧的插值类型是立方(自动)。这个就是一个缓进缓出的效果,即动画刚开始抬脚很慢,然后逐渐加速,然后再到落脚时很慢。

如果我们选中三个关键帧,然后右键将它们的插值类型设置为线性。此时再播放动画,就可以看到动画没有缓进缓出的效果了,而是匀速进行了。

还有一个很有用的关键帧插值类型是常量。我们选中三个关键帧,然后右键将它们的插值类型设置为常量。此时我们在时间线上移动时间头,会发现模型脚步并没有随着时间头的移动而进行变换,而是当时间头移动到第二个关键帧位置时,模型脚部直接升起到最终位置了。

常量关键帧插值类型很常用的原因是,当制作动画时,我们往往会先摆好人物在每个时刻的姿势,然后再从这个姿势过渡到另一个姿势,这样连起来就是一个动画了。而当我们使用常量关键帧插值时,我们可以在每个关键帧节点处摆好人物姿势,以此来制作一个动画草稿。最后我们摆好人物的每个时刻的姿势后,选中所有的关键帧,将它们的关键帧插值类型设置为立方(自动)或其它的,以此来让每个姿势之间进行平滑的过渡。

我们可以在下面这个下拉选项中设置默认关键帧插值类型。

1.6关键帧曲线

如果你感觉UE5提供的这些关键帧插值类型不满足你的需求,你可以使用关键帧曲线来自己设置关键帧插值。点击下面的这个图标可以打开序列曲线窗口,在这里面可以看到关键帧的曲线。

我们制作一个模型身体控制器向下的动画。然后将两个关键帧的插值类型设置为立方(自动)。

然后在序列曲线窗口中,我们看到身体控制器的位置Z的关键帧曲线如图所示。这个轴的横轴表示时间,纵轴表示Z值。我们通过曲线可以看到刚开始的2帧内,身体控制器的Z值几乎没有变化;然后在中间时刻时,身体控制器的Z值变化很快;在最后时刻时,身体控制器的Z值变化又很慢了。

在关键帧曲线中,当我们选中关键帧时,可以通过下面的小棍来修改关键帧曲线,以此来达到自己想要的效果。

下面我们来分享一个小技巧。我们让序列编辑器窗口和序列曲线编辑器窗口像下面这样布局,然后让两个窗口的这两个分界线对齐。

然后我们在序列编辑器中的齿轮图标的下拉列表中选中连接曲线编辑器时间范围选项。此时可以看到关键帧时间线和关键帧曲线这两个部分对齐了,这样更方便我们制作动画了。


1.7补间动画

补间动画本质上是中间帧。

下面我们来创建两个关键帧,然后通过身体控制器制作一个下蹲的动画。

然后我们点击动画模式下的Tween,可以看到此时模型场景中出现了一个BN输入框。我们可以拖动它来改变它的值。当我们改变BN输入框中的值时,可以看到时间线中时间头的位置自动添加了一个关键帧。BN输入框中的值和模型的动作与谁接近相关,如果BN的值为1,那么模型的动作就会和它后面的关键帧的模型动作一致;如果BN的值为-1,那么模型的动作就会和它前面的关键帧的模型动作一致。如果BN的值为0,那么模型的动作在这个时刻应该是什么样的,就是什么样的,即不会提前也不会靠后了。

当我们在起始关键帧和结束关键帧中间插入一个新的关键帧后,我们设置好它的BN值为0.7。那么当从起始关键帧到中间关键帧的这段时间内,模型下蹲的幅度会很大;从中间关键帧到结束关键帧这段时间内,模型下蹲的幅度会很小了。因为中间关键帧的BN的值设置为了0.7,那么在这个关键帧时刻,模型的动作就已经快要接近结束关键帧时刻的动作了。

这一点我们也可以通过序列曲线编辑器窗口观察到。在序列曲线编辑器窗口中,可以看到身体控制器的Z值在起始关键帧和中间关键帧之间变化的很快,然后在中间关键帧和结束关键帧之间变化的很慢。

我们可以添加多个中间关键帧。只需要先在时间线上移动时间头,然后在上面改变BN输入框的值即可,然后就会自动在时间线上添加一个中间关键帧。

1.8高级曲线

下面我们来制作一段小球弹起的动画。

我们先在场景中添加一个球体。然后选中这个球体Actor,点击序列编辑器中的添加,来将这个球体添加到序列编辑器中,为这个球体制作动画。


我们先在初始位置为球体的每个属性打一个关键帧。然后因为我们选择的动画是1秒30帧,所以我们将时间头移动到30帧位置,然后在30帧位置修改球体X的坐标值,并且打一个关键帧。

然后我们在15帧处修改球体Z坐标值向下,让球体触地,并且打一个关键帧。然后在30帧处修改球体Z坐标值向上,并且再打一个关键帧。这样我们就制作了一个简单的球体弹起动画。

如果我们想要模拟真实的球体弹起,我们需要在序列曲线编辑器中再做进一步调整。让小球在快要触地时和触地反弹时下降和上升速度最快。

如果我们调整中间触地关键帧的话,可以看到小球会直接穿模到地面下。此时我们可以选中中间关键帧,然后右键选择中断。然后我们就可以分别调整两个曲线的弯曲程度了。

最后将小球的曲线调整成下面这样的,就达到了我们想要的效果了。

如果我们修改小球的某个属性值时,感觉拖动的修改这个值不准确的话,我们还可以在下面位置的输入框中直接输入这个属性的值。例如下面我们选中结束关键帧,然后在输入框中输入Z值,让它比起始关键帧时的Z值小一些,因为球体再次弹起后能量消耗了,所以没有刚开始高度高了。

我们还可以在这个输入框中做一些简单的运算,然后回车后就会将计算结果输入到这个输入框中。

还有一个小技巧。当我们选中多个关键帧时,此时输入框中会显示多个值,如果我们在输入框中输入一个具体数值,那么被选中的关键帧节点的属性值都会修改为这个具体数值。

但是如果我们在多个值后面进行运算,那么每个关键帧节点就会单独计算自己的值。例如如果我们感觉现在小球初始高度和最终高度都有点低了,想要整体升高一些。此时我们可以先选中Z值属性,然后多选起始关键帧和结束关键帧,然后在输入框中输入多个值+50。那么起始关键帧和结束关键帧的Z值就会分别在自己原来值的基础上加50。


下面我们来设置动画循环。我们选中曲线,然后右键选择后循环中的振荡,此时可以看到Z值曲线会无限循环。并且顺序为先从起始关键帧到结束关键帧,然后再从结束关键帧到起始关键帧。即先正放小球弹起动画,然后倒放小球弹起动画。这样就保证了在连接处,关键帧的Z值是一样的。

并且此时我们修改第一段曲线中关键帧的位置时,后面的曲线也会跟着产生变换。


然后我们再次选中曲线,然后右键选择后循环中的循环。此时可以看到动画会循环正放。并且因为我们设置的起始关键帧的Z值和结束关键帧的Z值不一致,所以可以看到在结束关键帧的位置,它的Z值会突然产生一个变化。然后这个动画循环播放时就会产生一个卡顿。

如果我们想要动画循环播放时很丝滑,我们需要将结束关键帧和起始关键帧保持一致,此时我们可以直接复制起始关键帧到结束关键帧的位置。

然后我们再次选中曲线,然后右键选择后循环中的偏移循环。

然后我们可以看到第二段动画会将第一段动画的结束关键帧作为它的起始关键帧,然后球体的高度就会越跳越高。

前循环的使用方法和后循环同理,只不过它会将曲线添加到当前动画前面。

循环的作用很广泛,例如如果我们在制作一个循环的动画时,想要修改其中的某一个效果时,我们只需要在第一段曲线中进行修改,然后后面的曲线就会随之而改变。

还有一个小技巧就是当我们选中多个关键帧后,按F按键可以将时间线聚焦显示我们选中的所有关键帧。

按A键后会将整个完整的时间线都显示出来。

1.9运动轨迹

当我们在旋转某个控制器时,我们只能先选中某个旋转轴,然后再进行旋转。如果我们不想要按照单个X轴、Y轴、Z轴旋转轴进行旋转,而是想以其它旋转轴进行旋转时。此时我们可以在编辑器偏好设置中搜索arcba,然后选中启用轨迹球旋转。此时选中旋转球中间区域,然后拖动鼠标就可以让手臂不以X轴、Y轴或Z轴为旋转轴进行旋转。


这样的话当我们想要微调一些动作时,就可以通过这样的旋转方式来实现了。

下面我们来学习运动轨迹。

在动画模式下,我们点击轨迹,然后就会弹出来一个运动轨迹窗口。然后我们选中显示轨迹。

然后我们选中全局控制器,设置腿部控制器的运动方式为FK。这样的话此时就只有身体控制器的运动方式是IK,这样当我们移动身体控制器时,其他的模型就会跟着身体控制器进行变换了。

如果我们不将腿部控制器的运动方式修改为FK,那么当移动身体控制器时,腿部控制器跟随身体控制器的变化会很奇怪,像是定在原地的感觉。

而如果我们修改腿部控制器的运动方式为FK,那么当移动身体控制器时,其它模型跟随身体控制器的变化就很正常了。


然后我们在时间线起始处给身体控制器打一个关键帧,然后在60帧位置移动身体控制器的位置,并且再打一个关键帧。此时我们可以看到身体控制器的运动轨迹。

如果我们此时再打一个中间关键帧,并且移动身体控制器离开地面,此时我们可以看到一个圆弧状的运动轨迹。

如果我们不勾选显示完整轨迹选项,那么运动轨迹就只会显示当前帧向前某个值和向后某个值之内的运动轨迹,向前多少帧和向后多少帧这两个值可以自己设置。

轨迹厚度就是运动轨迹线的粗细程度。

当我们选中显示标记后,可以看到运动轨迹上会出现很多刻度线,这个刻度线代表每一帧时物体的位置,它可以反映运动物体在这个地方的运动速度。例如弧线起始位置,刻度线比较密集,表示在刚开始物体运动的速度较慢。

例如如果我们将结束关键帧位置向前移动的话,可以看到从32帧到41帧这一段时间内,每一帧物体都运动了很多距离,这说明物体运动速度很快。

当我们选中显示键选项后,此时弧线中就会出现白色方块,这些方块就表示关键帧。我们可以选中白色方块,然后就会出现关键帧变换轴。此时我们就可以直接拖动圆弧上的关键帧节点来修改物体在这个关键帧时的属性数据。通过这种方式,我们可以很简单的规划人物运动的路径。并且当我们修改关键帧节点的位置时,可以很容易得看到人物位置也会随之产生变化,这样可以实时的看到人物位置的变化,更方便我们制作动画。

当我们选中哪个控制器时,就会显示哪个控制器的运动轨迹。

1.10动画图层

在动画模式下,点击层会弹出动画层窗口,可以看到此时只有一个基础层。

如果现在我们想要制作一个人物呼吸的动画,我们可以通过旋转上脊柱控制器实现。我们先在初始位置打一个起始关键帧,然后再复制起始关键帧到结尾处,然后我们再打一个中间关键帧,并且修改上脊柱控制器的X轴旋转角度。这样就制作了一个人物呼吸动画。

如果此时我们还想要制作一个人物上半身旋转的动画的话,此时上脊柱控制器也会需要改变,那么呼吸动画和旋转动画同时进行时,上脊柱控制器的变换就会产生冲突。

此时我们可以在动画层窗口处点击层来添加一个新的呼吸动画层,并且命名为breathe。需要注意的是,在创建新的动画层时,我们需要先取消选中控制器。

然后我们选中上脊柱控制器,在breathe动画层右键选择添加选定项,这样就会将上脊柱控制器添加到breathe动画层。此时我们可以看到CR下面除了基础层又多了一个breathe动画层,并且breathe下面只有一个上脊柱控制器。


然后我们再breathe动画层通过对上脊柱控制器进行变换,来制作一个人物呼吸的动画。

然后我们再选中基础层,然后在基础层中通过让上脊柱控制器旋转,来制作人物上半身旋转动画。可以看到在人物上半身旋转的同时,人物的呼吸动画也在同步进行。

我们还可以设置每个动画层的权重,如果我们设置breathe动画层的权重为5的话,我们可以看到人物的呼吸动作幅度非常大。不过人物的呼吸动作还是小一点好,所以我们设置为0.5。当breathe动画层的权重为0时,就不会执行breathe动画层的动画效果了。

或者我们也可以给权重值做一个动画,即让breathe动画层的权重值随着时间不断增加,这样可以达到人物呼吸越来越重的效果。

动画层除了有加法模式还有重载模式,重载模式就是这个动画层的控制器的动画会覆盖基础层中对应控制器的动画。

我们可以在动画层中做一些次级动作或者联动动作。例如我们在基础层让身体控制器转身时,此时头部会根据身体控制器也进行旋转。但是如果我们想要让头部在身体旋转的同时,再做一个歪头的动作,此时我们就可以在另一个动画层中给头部制作这样一个歪头动画了。

下面我们先将头部控制器添加到breathe动画层中,然后在breathe层制作人物歪头的动画。这样当播放动画时,人物的头部除了在基础层随着身体控制器转动外,还会在breathe动画层中执行歪头的动画。

一般在制作动画时,我们不会在基础层添加过多的关键帧,都会在新创建的动画层中添加关键帧进行动画的制作。

2.跳跃动画

2.1跳跃动画

下面我们制作一个人物模型立定跳远的动画,动作细节可以通过真人的立定跳远动作进行慢动作观察。

我们先将模型的两个手设置为IK运动模式,然后将模型摆成立正姿势。

我们先根据真人的动作分解来摆好模型的几个关键动作,然后再进行插值调整。所以我们先选择关键帧插值类型为常量,然后进行模型的动作摆放。

我们选中CR(模型身体),然后将时间头移动到起始位置,然后按回车来给CR添加一个常量关键帧。这样CR下面的元素就都添加了一个常量关键帧了。我们给所有元素都添加关键帧的原因时,这样在一个时刻,所有元素都有关键帧,如果移动某个值的话,它是从上一个关键帧而变换的。而如果不给每个元素都添关键帧的话,那么有的元素可能只有初始和结束才有关键帧,那么在中间时这个元素移动时就有些卡顿。


然后我们将模型两个手臂的运动模式设置回FK运动模式。但是脚步保持IK运动模式,因为在起跳和落地时我们需要保存双脚一直在地面上,所以双脚不能跟随身体控制器一起移动。

然后我们在世界坐标系下旋转模型双臂,让模型做预备动作。

然后我们再根据真人姿势,摆放模型的起跳姿势。我们现将模型身体控制器向下移动;然后稍微旋转模型的脊柱;然后旋转模型的双臂;然后旋转模型的脚步控制器,让脚跟离地但脚尖触地;然后稍微移动模型头部斜向下看。

然后我们再根据真人姿势,摆放模型起跳瞬间的动作。我们先移动身体控制器,让模型腿部保持直线;然后旋转脚部,让脚尖触地。然后旋转模型双臂,此时如果模型肩部有褶皱的话,就调整回局部坐标,然后旋转肩部控制器;然后再调回世界坐标系,调整模型头部。

在摆放模型动作时,手臂旋转和身体旋转等操作在世界坐标系下进行比较好。还有的一些细节的调整,例如手臂肩部等操作,在局部坐标系下调节比较好。

然后我们根据真人姿势调整模型的落地姿势。我们先移动模型的身体控制器到空中快要落地的位置;然后摆放模型的脚步控制器,让脚跟触地,脚尖不触地。然后调整模型的双臂;然后调整模型的头部。

如果我们感觉模型跳跃的距离太近的话,我们可以将时间头移动到落地姿势关键帧处,即90帧位置。然后选中模型的两个脚部控制器和身体控制器,然后一起向前移动,直到我们感觉模型跳跃的距离合适为止。

然后我们摆放模型落地后的缓冲姿势。我们先移动模型的身体控制器,然后调整身体控制器旋转,让模型处于深蹲姿势;然后我们旋转模型的双臂;然后旋转模型脚部控制器,让模型的脚尖触地,脚跟微微离地;然后我们稍微调整模型的头部。

然后我们再将模型姿势摆为站立姿势,作为最后一个关键帧。

然后我们缩小CR,然后复制CR在落地姿势的所有关键帧,然后拖动时间头到起跳和落地关键帧中间位置,然后粘贴关键帧。然后我们删除身体控制器的关键帧,然后使用补间动画,在这里添加一个补间动画,它的BN值设置为0.5,这表示身体在这里时是跳跃的最高位置。我们通过这样的方式确定了模型在跳跃时的中间位置关键帧。

然后我们在这个关键帧节点位置,先拉高身体控制器位置,因为此时要让模型处于跳跃最高位置处,所以高度需要高一些。然后根据真人姿势来摆放模型在跳跃最高处时的姿势。

当我们感觉预定动作都摆放的可以了后,我们可以将这个序列另存为,然后这个阶段的序列文件就会创建一个新的了,我们就可以在新的序列文件上进行更改了。如果后续修改的不满意,还可以再返回到这个状态。


2.3添加插值功能

这样模型的立定跳远动作的常量关键帧就添加的差不多了。

然后我们选中CR人偶身体轨道上的所有关键帧。然后右键设置它们的关键帧插值为立方(自动)。此时播放动画,动画的节奏是缓入缓出的,可以看到预备动作和着地动作很慢,中间的跳跃动作快一些。

我们感觉这个动画的节奏不是很对。此时可以根据真人视频中的每个动作之间相差多少帧,然后调整我们的模型每个动作之间也相差对应的帧数。

例如模型现在虽然中间的跳跃动作快一些,但是我们感觉还不够人在空中跳跃时的快。所以我们可以对比不加速的真人视频,看真人立定跳远时在空中多少帧。通过视频对比我们得到大概是10帧左右。

然后我们将模型的下面两个动作之间的帧数也缩小到10帧,然后我们将之前的补间动画关键帧放到更改后的两个动作关键帧的中间。



按照上面的方式,在真人视频中数每个动作之间的关键帧。然后将模型的动作之间也相差这么多关键帧。这样我们就能得到一个节奏正确的立定跳远动画了。

我们可以在时间线上按M键来创建一个标签,并且可以右键来修改标签的名称和颜色等。我们可以为每个动作的关键帧都添加一个标签,这样当我们修改其他的动作时,我们就知道有标签的关键帧就是动作关键帧了。

上面的步骤实现后,我们可以再创建一个副本。


2.4基础动画优化

我们可以通过前面学习的内容来对动画进行一些优化。

我们可以先选择模型的身体控制器,然后点击显示轨迹。这样我们就能看到模型的身体控制器在执行立定跳远动画时的运动轨迹了。我们可以微调最高点和最高点两侧的关键帧,来让模型的身体控制器跳跃的曲线更圆润。

我们可以打开序列曲线编辑器。然后我们选中身体控制器的Y值。因为模型跳动时,Y值是向前的,如果我们忽略空气阻力,那么这个Y值的变化应该是匀速的,所以在曲线上这三个关键帧应该在同一条直线上。

我们可以在序列曲线编辑器上面选中这三个关键帧。然后右键设置为线性。这样三个关键帧就都在同一条直线上了。此时因为这三个关键帧已经在同一条直线上了,所以我们就可以在序列曲线编辑器中只选中身体控制器的Y轴,然后删除中间这个关键帧节点。需要注意的是我们只在身体控制器的Y轴通道上删除了这一个关键帧节点。


下一个优化是,当我们真人在做动作时,并不是每一个动作都严格对照的。例如在起跳动作时,并不是人物屁股和腿部刚好弯曲时,两个手臂到达最高点。而是因为两个手臂还有惯性,所以会再向上一些。

我们可以通过让模型的两个手臂控制器第三个关键帧节点的位置向后移动两三帧,这样看的效果就是当人物屁股和腿部刚好弯曲到最终姿势时,两个手臂还没有到达最高点,两个手臂会延迟两三帧到达最高点。

当我们同时选中模型的两个手臂控制器时,我们没有办法在时间线上同时看到左臂和右臂的轨道。此时我们可以点击隔离选定轨道图标,这样模型的左右双臂的轨道就单独显示在时间线上了,这样也方便我们控制两个手臂的关键帧位置了。

然后我们让模型的双臂的第三个关键帧节点都向后延迟一帧,这样就达到了我们上面说的延迟效果了。


我们可以在多个动作的关键帧位置给两个手臂的关键帧节点向后移动两三帧,来达到一个延迟效果。这样手臂就不会完全和每个动作对齐了,动画看起来就更自然一些了。因为我们考虑到了手臂的惯性因素。

除了双臂控制器之外,我们还可以选中两个手肘控制器,然后调整两个手肘控制器提前或者延迟两三帧,以此来达到更好的动画效果。通过这样的微调,我们可以让动画变得越来越自然。

我们还可以通过在两个动作的关键帧节点之间添加新的关键帧节点,然后改变某个控制器的属性,以此来优化动画。

例如我们可以在第一个动作关键帧和第二个动作关键帧节点之间再为CR人偶添加关键帧节点。然后我们只显示上脊柱控制器,我们让上脊柱控制器在第一个动作和第二个动作之间有一个向后旋转的动作,即为身体前倾做一个缓冲动作。

我们还可以使用同样的方式,在着地动作关键帧节点后面再添加一个关键帧节点,然后改变身体控制器的位置,让身体控制器再向前一些,因为人不可能在着地时马上就能停止,身体都会有个向前的惯性。

我们先只显示身体控制器的轨道,然后在着地动作关键帧后面添加一个新的关键帧,让模型的身体控制器向前移动一些,来模拟身体向前的惯性;然后我们再在后面添加一个新的关键帧,让身体控制器向后一些,来恢复到原来的位置,不然的话模型的身体控制器就是一直在向前一点的了,那么我们制作的身体向前的惯性就没有意义了。

我们还可以在模型跳跃到最高点的动作关键帧节点时,调整左脚控制器或右脚控制器的位置,让两个脚不要在同样的位置,这样来实现一个脚在前,一个脚在后的效果。总之我们可以通过这些细节调整,来让动画越来越自然。

为了让模型起跳和下落的动作更丝滑,我们可以在序列曲线编辑器中选中身体控制器的Z轴,然后让模型起跳和下落的Z值曲线变得更丝滑一些。

如果我们现在感觉模型在最高点时的高度不够高,此时我们可以先将时间头移动到模型最高点动作关键帧,然后选中身体控制器和双脚控制器,然后将这三个控制器的位置向上拉,这样就能提高模型在最高点的高度。

到这个阶段,我们可以再将序列文件另存为,以此来保存一个副本。

2.5动画图层细节处理

下面我们来使用动画图层,为动画再添加一些细节处理。

我们先取消选中所有控制器,然后我们来创建一个新的动画层,并且命名为Adjustments,作为调整动画层。

然后我们将头部控制器、双肩控制器、身体控制器添加到Adjustments层。我们可以在Adjustments层来稍微调节这些控制器,以此让动画看起来更真实和自然。

例如我们可以在Adjustments层的头部控制器轨道中添加关键帧节点,然后来让头部控制器跟着动作来向上或者向下旋转。这些细微的调整我们都可以在Adjustments层进行实现。

除了调整头部,我们还可以调整其它的控制器,然后让动画越来越自然。

这样我们就实现了一个简单的立定跳远动画。

3.约束条件

3.1约束条件

下面我们来学习约束条件。约束就是将模型的骨骼约束到特定物体上,比如让人的双手拿着一个步枪,当移动时,人要和步枪一起移动。

下面我们创建一个新的关卡序列。然后我们将骨骼网格体拖入到序列中,然后创建一个圆柱体,并且缩放为类似一个棍的粗细。

然后我们选中圆柱体,点击序列编辑窗口中的添加,将圆柱体添加到序列器中。

然后我们选中全局控制器,将模型的左手和右手使用IK运动模式。

然后我们移动模型右手控制器,让模型右手握住圆柱体。

此时圆柱体和模型是两个部分,如果圆柱体移动,模型的手部不会跟着移动。如果我们想要达到模型的手跟随着圆柱体移动,那么我们就需要用到约束条件了。

我们选中右手控制器,然后点击约束中的添加图标,可以看到有多个约束类型。

Translation约束:只会让手跟着圆柱体移动,如果圆柱体旋转或缩放,手不会跟着旋转或缩放。

Rotation约束:只会让手跟着圆柱体旋转,即圆柱体旋转时,手在原地旋转。如果圆柱体移动或缩放,手不会跟着变换。

Scale约束:只会让手跟着圆柱体进行缩放变换。

Parent约束:经常使用到的约束,会让手跟着圆柱体进行移动、旋转、缩放等变换。

LookAt约束:注视约束会让一个控制器始终注视着另一个被绑定的物体。例如我们可以给头部控制器添加这个注视约束,然后绑定一个移动的物体,那么人物模型就会一直注视着这个移动的物体。

当我们点击Parent约束后,会出现一个选择管,然后我们点击圆柱体模型即可。这样我们就为右手控制器添加了一个约束。此时如果我们移动或者旋转圆柱体,那么模型右手也会跟着圆柱体进行变换。并且模型右手的旋转点是圆柱体的局部坐标原点。

下面我们将圆柱体移动到模型中间,然后移动模型左手,让模型左手也抓住圆柱体。然后我们给左手控制器也添加一个约束,并且也约束到圆柱体上。然后给左手控制器打一个关键帧。那么在这个关键帧后面,当移动圆柱体时,左右手都会跟着圆柱体进行变换。

当我们选中手部控制器的约束时,然后右键可以看到动态偏移勾选上了。这表示虽然当前手部被约束到了圆柱体上,但我们仍然可以通过选中手部控制器来单独变换它们。

例如我们将时间头向后移动,然后拖动左手控制器向上移动。

然后我们再移动圆柱体的位置。此时播放动画可以看到圆柱体移动的同时,模型左手也向上移动了。


如果我们想要让手部控制器去掉约束,我们可以先选中手部控制器,然后点击约束中的为该约束添加激活关键帧。然后我们可以看到右手控制器的约束时间就是绿色片段。后续右手控制器就不会跟随圆柱体进行变换了。

3.2高级约束与故障排除

下面我们重新创建一个关卡序列,然后将骨骼网格体添加到序列中,然后将手部控制器使用IK模式。然后我们再创建一个立方体,并且将立方体也添加到序列中。

然后我们给右手控制器加一个约束到立方体上,让立方体移动到中间的位置时,右手控制器激活约束跟着立方体移动。然后我们在中间关键帧位置改变立方体的位置,此时再播放动画,可以看到当到中间关键帧的时候,手部会马上吸附到立方体上。

这是因为我们改变了立方体的位置,但是右手控制器还是按照添加约束时立方体的位置进行移动的,所以当右手控制器移动到之前立方体的位置后,下一帧马上更新到新的立方体位置,这样就产生了一个位置突然跳转的现象。

为了消除上面的现象,我们先将时间头移动到右手控制器约束生效的关键帧位置,然后选中右手控制器的约束,然后右键点击补偿所有关键帧,这样当右手控制器添加约束时,就不会突然跳转到立方体位置了,而是逐渐移动过去,有一个过程。

当我们再添加约束后,出现跳转现象时,都可以这样解决。

3.3保存恢复镜像姿势

下面这个功能可以保存我们摆好的模型姿势,以便后续直接使用。

下面我们新创建一个关卡序列,然后将骨骼网格体添加到序列中。然后给骨骼网格体摆一个下蹲姿势。然后给CR人偶模型的所有控制器都打上关键帧。

如果我们想要保存摆好的下蹲姿势,以便后续使用时,动作保持一致。此时我们可以点击姿势,然后创建姿势。此时就会出现一个控制绑定姿势的窗口。然后我们选中模型的所有控制器,然后点击选择控制点。

如果我们感觉自动生成的缩略图不能代表模型的姿势,我们还可以移动视角,然后点击捕获缩略图,这样姿势的缩略图就会更新了。


然后我们再到一个新的序列中,如果我们想要让这个模型使用上面我们存储的姿势。我们可以点击姿势,然后选中保存的姿势。

然后选中CR人偶模型的所有控制器,然后点击粘贴姿势,此时会发现模型的姿势就变为了我们存储的姿势。它的原理就是会将存储的姿势中的各个控制器的状态复制给我们当前选中的模型的控制器。那么如果我们当前只选中了模型的手部控制器,那么就只会有手部控制器产生变换,其它控制器保持不变。


如果选中了键选项,那么当点击粘贴姿势时,会为每个选中的并且产生变换的控制器自动打上一个关键帧。

如果选中了镜像选项,那么当点击粘贴姿势时,就会让当前选中的模型的左右控制器动作反转一下。例如存储的姿势中是模型右手举起了,当选中镜像后,可以看到模型的左手举起了。

如果我们的模型当前是这个动作,并且给所有控制器都打上了关键帧。然后我们向后移动时间头,并且在控制绑定姿势窗口中输入0.5,那么当前模型的姿势就是从上一个关键帧的姿势到存储的姿势转换时,中间状态的姿势。

选择控制点按钮会让我们选中当前模型上和存储的姿势中所有相同的控制器。

选择控制点功能还可以让我们实现一个类似于控制点组的功能。例如我们想要频繁选中模型的手部所有的控制器时,我们可以先第一次选中模型的所有手部控制器,然后将它存储为一个姿势。然后下一次再想选中所有手部控制器时,只需要选中存储的手部姿势,然后点击选中控制点即可选中所有手部控制器。

3.4曲线编辑技巧与窍门

我们可以直接在时间线的空白处右键,然后点击显示曲线,这样时间线下面就会显示每个属性的变化曲线了。

当我们感觉某一段动画的节奏不对时,想要整体调整它所占的帧数时,我们可以使用序列曲线编辑器中的变化工具。

我们先选中所有关键帧节点,然后点击激活变换工具。此时会出现一个矩形框,我们可以移动里面的十字图标来选择一个基准点,然后变换就会以这个基准点为中心。我们可以拖动矩形框来让这段动画向前或向后移动。也可以拖动矩形框左右的边界来让这段动画的时长增加。

当拖动矩形框进行移动时,我们可以设置它仅在X轴上移动或仅在Y轴上移动。


重定时工具也可以用来改变某一段动画的加速或变慢。点击激活重定时工具图标。然后在时间线上双击时就会出现绿色的直线。例如如果我们想要让后半部分的动画加速播放,我们就可以在中间双击添加一个绿色直线,然后将中间的绿色直线向后拖动,这样后半部分的动画就会加速播放了。

多选工具也是选中多个关键帧节点,然后可以统一对他们进行缩放、移动等变换。

3.5工作流与摄像机

制作动画的工作流大致有三种。

1.我们前面学习的,先在时间线上制作好每个动作的关键帧,然后再通过插入关键帧节点来完善动画。

2.直接从起始帧开始摆放模型动作,然后一点点向后推进。

3.每一次先制作一个控制器的动画。例如先制作身体控制器的动画,然后再制作两个脚步控制器的动画。这样就只用在某个控制器的单一轨道上制作动画,比较清晰明了。还能明确角色在场景中的移动路径。

我们可以点击新建相机图标来添加一个摄像机。然后我们点击摄像机后面的图标,此时就会切换当前相机的视角。

我们可以给相机的属性打上关键帧,然后来达到一些想要的效果。

例如我们在起始位置给摄像机的位置属性和聚焦距离属性打上关键帧。然后我们选中摄像机组件并且向后移动摄像机组件,并且调整聚焦的值,让聚焦的平面一直在模型上。需要注意的是我们改变的是CameraComponent组件的属性值,而不是CineCameraActor的值,尤其是改变摄像机位置的时候要注意。

如果没有显示紫色的聚焦平面,你可以选中摄像机组件,然后在右边的属性栏中勾选上绘制调试聚焦平面选项。

然后当我们选中摄像机视角,然后播放动画时,可以看到虽然摄像机移动了,但是焦点一直在模型上。我们还可以修改摄像机的光圈值、焦距等来达到不同的效果。还有就是FOV视场大小的问题,我们可以将镜头的焦距直接填写到摄像机的焦距属性中,这样摄像机的FOV就是根据实际焦距进行改变了。

当我们需要镜头切换时,我们可以再添加一个摄像机。

我们让第二个摄像机从模型的脚部到头部进行仰拍,然后制作一个动画。

我们可以通过摄像机后面图标来显示当前摄像机的视角。

当我们选中相机切换的视角时,播放动画时,发现只有第一个摄像机视角的动画。

我们可以先将摄像机1的片段拉短一些,然后点击相机切换后的加号,添加摄像机2的视角片段。这样摄像机1和摄像机2的视角片段就都有了,我们可以通过拖动边界来修改不同摄像机视角所占的时长。


我们之所以让摄像机2的动画在切换视角之前的原因是,这样当画面切换到摄像机2时,摄像机2已经开始移动了,这样画面转换时的效果会好一些。如果将摄像机2的动画起始帧放在画面切换到摄像机2的时刻时,那么当画面切换到摄像机2时,摄像机2会从静止然后开始移动,这样看的话,切换画面就会有一种卡顿的感觉。

如果我们想要将相机切换的画面进行视频导出。此时我们可以拖动起始和结束括号选中想要的视频片段。然后点击导出图标,在渲染影片设置中设置导出视频的帧率、位置等,然后点击捕获影片。

还有就是可以在插件中启用Movie Render Queue插件,然后导出是就可以设置更多的选项。并且可以使用控制台命令来让画面产生变化。例如可以在控制台中执行r.Tonemapper.Sharpen 2来设置锐化程度。UE5默认的锐化程度为0。

设置锐化程度也可以在蓝图或关卡蓝图的Begin Play事件中使用。

3.6空间切换

当我们选中一个手部控制器时,点击空间,可以看到它此时在父项空间中,即父项坐标系中。所以当我们选中全局控制器,然后移动全局控制器时,手部控制器会跟着全局控制器一起移动。

如果我们将手部控制器的空间改为世界坐标系。此时我们再移动全局控制器时,手部控制器就不会跟着移动了。此时手部控制器的变换就相对于世界坐标系来进行变换了。

我们将模型的右手控制器的空间设置为世界空间,左手控制器的空间设置为父项。然后我们制作左手和右手都上下移动的动画。

然后我们选中全局控制器,旋转模型让他倾斜。此时播放动画,可以看到右手还是直上直下的运动,而左手现在是从模型脚部到模型头部的上下运动了,因为左手控制器是在父项空间中。

然后我们在某一帧将右手控制器的空间切换为父项。然后在这一帧给全局控制器打一个关键帧,然后我们再在后面将全局控制器变为直立状态,然后再打一个关键帧。

此时再播放动画时,可以看到右手控制器并不是直上直下运动了,而是斜向上和斜向下运动。这是因为我们是在全局控制器斜着的时候将右手控制器的空间切换为父项的,所以当全局控制器又直立后,右手控制器此时还会保持一个角度来移动。

空间切换的一个很好的案例就是枪换弹时的动画,前提是枪体是弹夹的父级。当枪换弹时,它的弹夹此时会掉落,然后枪体部分此时会跟着手部进行其它的动作。所以当枪体还正对着地面时,弹夹要掉落时,我们就需要将弹夹的空间切换为世界了,这样弹夹掉落就会直着向下掉落了。而枪体也会跟随手部进行移动了。

如果当弹夹掉落时,我们不将它切换为世界空间,那么当枪体跟着手旋转时,弹夹就不是直着下落了,而是弹夹也会跟随着枪体一起旋转。

在游戏制作中,当换弹动画的弹夹离开枪体的那一刻,我们就可以通过动画让弹夹的缩放直接为0。然后将一个网格体来替代原来动画中的弹夹,这样弹夹和枪体就是两个网格体了。这样做的好处是将枪体和弹夹分开了,然后我们可以设置弹夹物理效果打开,这样弹夹掉下后还会回弹,当弹夹被人物撞到后也会移动。

相关推荐
吴梓穆5 小时前
UE5 c++打印日志
开发语言·c++·ue5
吴梓穆5 小时前
UE5 C++ 绘制图形调试宏
开发语言·c++·ue5
chudonghao20 小时前
[UE学习笔记][基于源码] 理解 Gameplay
c++·笔记·学习·ue5
爱搞虚幻的阿恺1 天前
RPG游戏开发【加餐】实现游戏小地图的简单方法
游戏·ue5·游戏引擎·虚幻
平行云PVT3 天前
数字孪生信创云渲染技术解析:从混合信创到全国产化架构
linux·unity·云原生·ue5·图形渲染·webgl·gpu算力
Дерек的学习记录4 天前
Unreal Engine 5:前置知识和入门基础
学习·ue5
GentooEmacs5 天前
unreal中渲染地球 通用静态磁层场线
ue5·数字孪生·太阳系·unrealengine·太空·地球磁场
思麟呀6 天前
UE蓝图初步
ue5
吴梓穆6 天前
UE5VSC++开发 一 环境准备
ue5