Aim Offset(瞄准偏移)

AimOffset.png

概述

在动画进行过程中,Aim Offset的效果同其他动作(比如跑动、不行、跳跃等)相混合,来使得角色在所有方向上都呈现出平滑的外观效果。

Aim Offset背后的基本理念是,叠加地混合到现有动画上。 因此,比如,如果您正在使用一个Aim Offset来使得角色瞄准武器,那么您会想确保角色上的其他动作不会妨碍那个叠加动作。 换句话说,您跑动、空闲、跳跃等动作应该有一个相对僵硬的胳膊,以便可以通过Aim Offset来叠加地控制它们。

在很多方面, Aim Offset就和混合空间一样。 因此,在使用Aim Offset之前,好好了解下混合空间会使您做的更好。 请参照混合空间 文档获得详细信息。

您也可以参照章节1.4下的动画内容示例 页面来获得应用于角色的 Aim Offset (瞄准偏移)示例。

创建Aim Offset

和其他任何资源一样,创建Aim Offset是在 内容浏览器 中完成的。 您可以 右击 或使用New_Asset_Button.png按钮,并从关联菜单中选择 Animation(动画) > Aim Offset(瞄准偏移) 。 您将注意到,您还可以选择Aim Offset 1D。 它们和Aim Offset一样,但是仅支持来自一个变量的输入来控制该混合,而标准的Aim Offset支持两个变量。

当创建新的Aim Offset时,您必须指定一个骨架资源。 请确保所选择的骨架资源,同您想让该Aim Offset同其结合使用的骨架网格物体使用的骨架资源一样。

动画姿势

由于Aim Offset 的作用是叠加地组合一系列的姿势来辅助瞄准,所以现在我们将讨论您一般需要创建的姿势类型。 您实际所需要的姿势很大程度少依赖于您的角色需要执行的动作。以下是一个极端的例子:

Aim_RBU.png Aim_RU.png Aim_CU.png Aim_LU.png Aim_LBU.png
向上右后方 右上方 向上居中 左上方 向上左后方
Aim_RBC.png Aim_RC.png Aim_CC.png Aim_CL.png Aim_LBC.png
向后右侧居中 右侧居中 居中 左侧居中 向后左侧居中
Aim_RBD.png Aim_RD.png Aim_CD.png Aim_LD.png Aim_LBD.png
向下右后方 右下方 向下 左下方 向下左后方

如果您要使用这样的设置,那么您需要格外注意您如何进行偏转运动(从一侧到另一侧)。 比如,当角色静止站着时,上面的运动看上去还好。 但是如果您允许角色在跑动时以各种方式扭动,那么您会看到这样不好的效果:

Character-TwistedBody.png

由于这个原因, 一般仅设置Aim Offsets来使得角色向上向下瞄准,而不是从一侧到另一侧进行瞄准,从而允许旋转实际角色来处理从一侧到另一侧的运动。 但是,您可以使用上面显示的一系列姿势;您将仅需要简单地使用动画蓝图来限制Aim Offset的输入数据,以便仅当角色处于固定状态时才使用从一侧到另一侧的极端情形。

网格物体空间

一旦您把所需要的姿势都导入到虚幻引擎中,您将需要在它们上设置一些特定的属性,以使得它们和Aim Offset相兼容。 在 Additive Settings(叠加设置) 类目下,确保进行如下设置:

  • Additive Aim Type(叠加型动画类型) - AAT_MeshSpace

Aim Offset仅接受 Additve Aim Type为网格物体空间的动画!

网格物体空间是一种用于提取叠加型动画的delta(间隔)的略有不同的方法,因为它仅在某些实例中使用,比如Aim Offset 资源。 网格物体空间使用该网格物体的边界框作为其旋转的基础,不管该骨架网格物体中的骨骼链的朝向如何,都允许以相同的方向进行旋转运动。 想象一个角色,他向侧面倾斜,但是需要 向上 瞄准手枪。 如果向上瞄准的动作在局部空间内,那么瞄准动作按倾斜向的方向向外旋转。

BaseIdle.png AimUp.png
基本的空闲姿势 向上瞄准
LeaningIdle.png LocalSpaceLean.png MeshSpaceCorrected.png
倾斜姿势 倾斜并向上瞄准(局部空间) 倾斜并向上瞄准(网格物体空间)

这可以通过网格物体空间旋转来解决。 因为旋转动作是基于该骨架网格物体的方框的,所以无论角色干什么,旋转的方向仍然是不变的。 所以即使角色可能向一旁倾斜,但是向上瞄准动作将仍然以向上的方向旋转。

网格物体空间设置为动画序列的一个属性。 在 Additive Settings(叠加设置) 类目中,您可以看到 Additive Anim Type(叠加动画类型) 属性。 正如前面所述,设置它为 Mesh Space(网格物体) ,将使用该网格物体坐标空间。 这是个性能消耗非常大的混合操作,应该仅供一些特定类型的混合空间使用,在这些混合空间中,您知道您需要该动画的运动方向不变,比如Aim Offset的情形。