UE高级运动系统(ALSv4)解构(01)基础知识

在开始解构ALSv4之前,我们需要了解运动、动画相关的基础知识,在本节主要记录这些基础知识。

1. 骨架-骨骼-姿势-动画

四者之间的关系:骨骼的变换和旋转生成姿势,各个姿势在每个帧上进行动画混合,形成动画。骨架保存所有的骨骼数据。

在UE中生成姿势资产
(1)由骨骼生成姿势资产
(2)由动画的某一帧上生成姿势资产

下图为从骨骼中生成资产,动画的某一帧生成也是同理。

在这里插入图片描述

生成的资产是一个姿势资产

在这里插入图片描述

在这里插入图片描述

在UE中骨架、网格体和动画是相互独立的,也就是说骨架像一个中间键一样,同时绑定了网格体和动画才得以成立。而对于这个骨架修改了动画,换一个网格体同样是有效的。

在这里插入图片描述

在这里插入图片描述

2. 叠加动画

叠加动画是一个偏移量,是个增量,最终姿势减去初始姿势,即为叠加动画的本质。

在这里插入图片描述

叠加动画的作用:我们在制作No addiive动画时,将所有叠加动画的值,加到每个帧上去,就形成运动的动画

3. 混合空间

注意:混合空间属于动画资源,因此需要绑定骨架。
我们以BlendSpeed1D为例

在这里插入图片描述
在这里插入图片描述

注意:白点可以是姿势,也可以是动画,因此我们可以做一个从站立姿势到走路动画的混合输出动画值

4. 瞄准偏移

瞄准漂移是特殊的混合空间,是所有混合空间中资产都是Mesh Space的。
UE源码如下,UAimOffsetBlendSpace1D就继承自UBlendSpace1D

// 头文件
class UAimOffsetBlendSpace1D : public UBlendSpace1D
{
   GENERATED_UCLASS_BODY()

   virtual bool IsValidAdditiveType(EAdditiveAnimationType AdditiveType) const override;
   virtual bool IsValidAdditive() const override;
};
// 函数实现
bool UAimOffsetBlendSpace1D::IsValidAdditiveType(EAdditiveAnimationType AdditiveType) const
{
    // AAT_RotationOffsetMeshSpace在UE中的名称就是"Mesh Space"	
    return (AdditiveType == AAT_RotationOffsetMeshSpace);
}

bool UAimOffsetBlendSpace1D::IsValidAdditive() const
{
    return ContainsMatchingSamples(AAT_RotationOffsetMeshSpace);
}

因此瞄准偏移相当于在混合空间的基础上加了限制:所使用的资源都是Mesh Space。
瞄准偏移的目的:在于忽略骨架现在的倾斜姿势,以基础姿势为准,即模型的指向动作永远朝向鼠标所指的方向。

5. 动画蓝图

在动画蓝图中使用动画序列,动画序列以绿色标记,可以直接拖入,也可以直接搜索资产名称。

在这里插入图片描述

对于姿势来说,右击动画,选择Convert To Single Frame Animation。

在这里插入图片描述

注意:动画蓝图中的输入输出都是以姿势为单位,每帧去调的。

使用变量进行动画的设置。

在这里插入图片描述

在这里插入图片描述

6. 修改骨骼

使用Transform (Modify) Bone进行指定骨骼的修改,修改值可以选择替换数值在现有值上进行追加两种,同时也可以选择修改的空间。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

注意:Local To ComponentComponent To Local是坐标映射变化,不用细究。

7. 双骨骼IK

在这里插入图片描述

注意:Joint Target Location本质为PoloVector,即为极向量约束。

8. 混合

我们在动画蓝图中可以通过Blend节点实现和混合空间相同的效果,混合模式分为Map RangeClamp ResultInterp Result插值的公式是A + Speed * deltatime,主要目的能让速度稳定的叠加。

在这里插入图片描述

上图与四点的2D混合空间的效果是基本一致的。

在这里插入图片描述

当然可提供了根据条件进行混合的节点多姿势的混合节点

在这里插入图片描述 在这里插入图片描述

9. 同步组

比如当你切换姿势的时候,切换时走路抬起的是左脚,而切换到跑步,跑步姿势抬起的是右脚,那这样的切换就会很生硬。这个时候就要用到同步组,这样你的过度才会很自然。
注意:同步组中分为Leader和Follower,Follower永远使用Leader的动画长度。

在这里插入图片描述

必须是同一个同步组中,以相同名称的同步标记来进行同步,并且标记完全相同,不多不少。
在姿势中,可以添加同步标记来让当前帧寻找最近的标记,来达到动画之间的同步,如下图添加Left和Right标记来同步左脚和右脚。

在这里插入图片描述

10. 蒙太奇

蒙太奇的作用:我们使用普通的Play Animation,这个节点会破坏我们原有的动画蓝图,在播放结束后不会回到原来的动画蓝图。而蒙太奇的作用就是以插槽的形式来插入到动画蓝图中,播放完蒙太奇后并不会对动画蓝图产生影响,Mesh使用Play Montage来实现。

在这里插入图片描述

在这里插入图片描述

注意:蒙太奇动画的作用不止如此,蒙太奇的本质是剪辑,将不同的动画片段组合在一起,可以用程序控制的顺序序列,而且支持根运动。我们可以直接通过拖拽,把新的动作片段插入原有的蒙太奇,并且可以随意拼接这些片段。

在这里插入图片描述

在这里插入图片描述

11. 动画曲线

动画曲线的原生用法:1.变形目标;2.骨骼材质。

在这里插入图片描述

在这里插入图片描述

动画曲线的其它使用:我们能在任何地方拿到这个动画曲线,从而用这个曲线做逻辑上的运算。

在这里插入图片描述

在这里插入图片描述

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值