Version:

动画编辑器概念和术语

以下概念和术语用于动画编辑器

Actor 至少有一个骨骼的角色称为Actor。一个Actor由一个层次结构中的一组节点组成。每个节点都是一个变换(位置、旋转和缩放),并可包含一个网格。 Actor的实例称为Actor实例。例如,一个士兵被实例化 100 次,就能创建一支相同角色的军队。您可以分别为Actor实例制作动画,这样每个实例就会有不同的表现。每个Actor实例都有独一无二的变换,但其层次结构与被实例化的Actor相同。 Actor文件具有.actor扩展名 (例如, hero.actor)。

Motions 动作是单独的动画片段,如行走循环、空闲动作等。动作包含变形动画和/或变形目标权重动画。一个动作可以包含骨骼结构和变形目标的动画数据。 动作文件具有.motion 扩展名 (例如, Walk.motion)。

Animation graphs 动画网络被称为动画图。动画图包含状态机、转换、条件、混合树和其他节点。动画图是分层的。 Animation graph 文件具有.animgraph 扩展名 (例如, Main.animgraph)。

Motion sets 动作集包含一个动作列表,其中每个动作都有一个唯一的字符串 ID (例如,walk, idle等)。动画图中的节点可以根据字符串 ID 引用动作。 动作集可以分级。子集可以覆盖角色的特定动作,同时与父集共享其余动作。 动作集具有.motionset 扩展名 (例如, MainSet.motionset)。

Motion events 动作文件中特定时间值的标记称为动作事件(也称为通知器或通知)。动作事件有一个类型字符串(如 “SOUND”)和参数字符串(如 “Footstep”)。 动作事件可以有固定的时间值或范围。具有单一时间值的事件称为tick events。具有指定开始和结束时间的事件称为ranged events。 您可以指定事件预设,这是预先设置好的事件类型,您可以将其拖放到事件轨道中。event track是一组可以启用或禁用的事件。例如,您可以将所有音效添加到专门用于声音的事件轨道中。 动作事件数据被存储在动作FBX的.assetinfo文件中。

Synchronization 您可以使用 full clip-base sync 或 **sync tracks ** 来同步动作片段,以便在混合时保持角色动作同步。例如,如果角色正在奔跑,同步有助于保持左右脚同步。 基于片段的完全同步会扭曲动作,使子动作的播放时间不断变化。 同步音轨使用动作事件,事件标记特定时刻(例如,左右脚着地的位置)。这种系统也称为相位匹配,可动态控制播放速度。

Floats 浮点数是带小数点的数字(例如 1.35 或 1.0)。布尔数和整数也是浮点数,因此可以作为权重浮点数输入传递给混合节点。如果浮点数被四舍五入,动画编辑器总是将其向下舍入。例如,2.99 将变为 2。

Time 所有时间值和持续时间都以秒为单位。例如,您可以将过渡时间设置为 0.3 或 300 毫秒。

关于 Animation Graph

动画图定义了游戏角色的动画行为。动画图包含角色可能具有的状态,并定义了这些状态之间的转换。每个过渡都可以有一组条件,这些条件定义了过渡背后的逻辑。

动画图形包含节点和节点之间的连接。这些连接定义了节点之间的数据传递方式或节点之间的转换方式。

动画图形有两种主要节点类型:

  • 状态机
  • 混合树

由于动画图是分层的,因此节点可以嵌套。例如,你可以在一个混合树中包含一个状态机,而混合树又包含另一个混合树和状态机,以此类推。层次结构的级数是无限的,但最佳做法是将层次结构限制在 20 级以内。

每个动画图都有一个根节点,它是一个状态机。这个根节点是默认的,不能删除。一个简单的动画图可以在根状态机中包含一个状态。例如,单个状态可以是一个动作节点,它输出一个应用于角色的姿势,如空闲动作。

在向动画图形添加节点之前,必须先创建一个动作集。创建动作集后,可以创建动画图形,然后使用Anim Graph窗口中的Resource Management窗格将动作集分配给动画图形。

Animation Graph 节点

在状态机中,可以从Sources类别中添加以下节点:

  • Blend Tree
  • Entry
  • Exit Node
  • Hub
  • Motion
  • State Machine
  • Bind Pose

在混合树中,您可以从以下六个类别中添加其他节点

  1. Sources

    • Float Constant
    • Parameters
    • Blend Tree
    • Entry
    • Motion Frame
    • Exit Node
    • Motion
    • State Machine
    • Bind Pose
  2. Blending

    • Pose Subtract
    • Morph Target
    • Pose Mask
    • Blend N
    • Blend Two (Legacy)
    • Blend Space 2D
    • Blend Space 1D
    • Blend Two
  3. Controllers

    • Transform
    • LookAt
    • TwoLink IK
    • AccumTransform
  4. Logic

    • Pose Switch
    • Float Condition
    • Float Switch
    • Bool Logic
  5. Math

    • Direction to Weight
    • Range Remapper
    • Vector3 Compose
    • Vector2 Compose
    • Vector4 Decompose
    • Vector4 Compose
    • Vector3 Math1
    • Vector3 Decompose
    • Smoothing
    • Float Math2
    • Vector2 Decompose
    • Vector3 Math2
    • Float Math1
  6. Misc

    • Mirror Pose

关于参数

创建动画图形时,可以使用参数来控制动画在不同状态之间的转换。

每个过渡都可以应用一组条件。这些条件定义了过渡的逻辑规则以及动画如何融合在一起。

每个过渡条件都由一组参数控制。您的 O3DE 游戏设置会将参数值发送到动画图形。Actor对传入的参数做出反应。游戏将参数值发送到动画图形,然后动画图形会自动对变化做出反应。例如,您可以指定速度、方向、武器类型等参数值。

您可以在游戏关卡中使用Entity Inspector为实体添加一个Actor和一个Animation组件来设置。

更多信息,请参阅 动画编辑器组件

向动画图添加参数

您可以在Parameters窗格中为动画图形添加参数。

为动画图形添加参数

  1. 在 O3DE 编辑器中,选择 Tools, Animation Editor

  2. Parameters 面板中,点击绿色的 + 图标。

  3. Create Parameter 对话框中,指定参数名,描述,和值的类型。

    您可以指定以下值类型,为动画图形节点提供输入:

    • Float (slider)
    • Float (spin box)
    • Boolean (checkbox)
    • Tag (checkbox)
    • Integer (slider)
    • Integer (spin box)
    • Vector2
    • Vector3
    • Vector3 gizmo
    • Vector4
    • String
    • Color
    • Rotation
    • Group

您可以为参数类型命名,以确定控件的用途。例如,您可以为 movement_speed, movement_direction, jumpingattacking等参数命名。作为艺术家和游戏设计师,您可以指定最能控制动画图形的参数。

Create parameters for an animation graph in the Animation Editor.

在混合树中添加参数节点

Parameter窗格中创建参数后,您可以将参数节点添加到混合树中。

在混合树中添加参数节点

1.在 Animation Editor中,右击动画图表网格,选择 Create Node, Sources, Parameters.。

  1. Attributes 面板中,点击 select parameter ,并指定你想要的参数。

Select your parameter in your animation graph in the Animation Editor.

您可以重命名参数节点,并指定它们为其他节点提供输入。在下面的示例中,speed_parameter 节点为混合树提供了输入。

Use parameter nodes in the Animation Editor to specify parameter types and values for your animation graph.

关于 Motion Sets

动作集是动作的集合,其中每个动作指代一个特定的动作文件,并用字符串 ID 标识,如 idle/_motion1。创建动作节点时,指定的是动作的字符串 ID,而不是动作文件本身。您可以将不同的动作集与相同的动画图形结合使用。例如,您可以创建一个动画图形,为可控的人类角色定义动画行为,并将同一动画图形应用于青蛙。由于青蛙的动作与人类角色不同,因此要为青蛙指定不同的动作集。您可以共享角色的动画图形;无需为每种角色类型创建唯一的动画图形。

应用于给定Actor实例的动画图形与指定动作集的组合称为动画图形实例。每个动画图形实例都有一组独特的参数值。例如,一支由 100 名士兵组成的军队由 100 个不同的动画图实例控制,这样就可以为每个士兵制作独立的动画。

动作集也可以分级。子动作集可以覆盖父动作集的某些动作。将子动作集应用到角色时,除了为子动作集指定的动作外,角色将使用父动作集共享的所有动作。例如,一个角色可以共享父角色 90% 的相同动作,但也有该角色特有的自定义动作。

关于状态机

状态机包含一组通过转换连接起来的状态。转换从一个节点到另一个节点,并具有属性,如转换所需的时间。在过渡期间,当动画从一个状态移动到另一个状态时,两个状态的输出之间会进行混合。

过渡条件是与给定过渡相关联的条件。例如,它们可以比较一个参数值和另一个值,看给定参数是否大于指定值。如果满足条件,就会触发转换。例如,如果速度参数大于 0,字符就会从空闲状态过渡到运行状态。您可以对单个过渡应用多个条件。只有当所有条件都满足时,才会发生转换。