动画资产及编辑工具
概述
动画资产(Animation Asset)可以控制角色的动作,动画编辑器可以对动画资产进行修改。
骨架
骨架(Skeleton)资产(后缀名为.xskt)是Flexi引擎蒙皮动画系统中的基础蒙皮动画资产类型,目前既可以由DCC工具创建和导出,也可以直接通过引擎编辑器FBX导入工具创建,它包含骨架层次结构和骨骼/辅助点动画数据,亦可以作为动画资产。
资产细项
动画编辑器(Animation Editor)目前不提供对骨架(Skeleton)资产数据的直接编辑功能。用户可通过资产细项面板(Asset Details)调整它在动画集中的相关配置。
属性 | 说明 |
---|---|
骨架文件路径(Skeleton File) | 参考骨架文件路径 |
动画文件路径(Animation File) | 动画文件路径(只读) |
速率(仅预览)(Rate Scale (Preview Only)) | 播放率缩放系数(仅预览) |
启动根运动(Enable Root Motion) | 只读 |
根运动根锁定(Root Motion Root Lock) | 只读 |
强制锁定根骨骼(Force Root Lock) | 只读 |
使用标准化根运动缩放(Use Normalized Root Motion Scale) | 只读 |
位移(Translate) | 旧的根运动相关设置。可选择清除Z轴(Clear Z-Axis)和清除X、Z轴(Clear X,Z Axes)。 |
差异动画类型(Additive Anim Type) | 只读 |
基础姿势类型(Base Pose Type) | 只读 |
基础姿势动画文件路径(Base Pose Animation File) | 只读 |
参考帧索引(Ref Frame Index) | 只读 |
同步组(Sync Group) | 同步组 |
淡入时间(Blend In Time) | 混入时间 |
淡出时间(Blend Out Time) | 混出时间 |
混合时间模式(Blend Timing Mode) | 使用绝对时间模式,混入混出时间不受播放率影响;使用相对时间模式,混入混出时间受播放率影响,与动画持续时间成比例变化。 |
开始触发器(Start Trigger) | 开始播放触发事件 |
结束触发器(End Trigger) | 结束播放触发事件 |
打断触发器(Break Trigger) | 打断播放触发事件 |
循环触发器(Loop Trigger) | 循环播放触发事件 |
自定义键值对(Custom Key Value) | 自定义键值对 |
动画编辑
动画播放控制器用于控制预览动画的播放。
红色游标一方面可以标识当前动画的播放位置,另一方面提供拖拽操作,用户可手动控制播放位置。
在时间轴上滚动鼠标滚轮可缩放时间,鼠标光标所在位置即为缩放中心点。在时间轴处于放大状态时,使用鼠标右键拖拽可对其平移,方便用户精确控制红色游标位置。
图标 | 说明 |
---|---|
跳至首帧 | |
上一帧 | |
倒播 | |
正播 | |
跳至末帧 | |
循环播放 | |
下一帧 |
动画序列
动画序列(Anim Sequence)是一种基于骨架资产的复合动画资产。它通过动画编辑器创建,在骨架的基础上提供了重定向、根运动、通知、基于标记同步和曲线编辑等的进阶功能。
动画序列可以直接在管线中独立播放,也可以用于蒙太奇(Montage)、混合空间(Blend Space)和动画树(Anim Tree)等复合资产。
创建动画序列
依次点击菜单文件(File) -> 创建(Create)打开资产创建窗口,创建动画序列资产。
资产细项
在资产细项面板(Asset Details)中需要指定一个动画文件(Animation File),可以通过更改其他项来继续设置动画序列。
属性 | 说明 |
---|---|
骨架文件路径(Skeleton File) | 参考骨架文件路径(只读) |
动画文件路径(Animation File) | 动画文件路径 |
速率(Rate Scale) | 播放速率缩放系数 |
启动根运动(Enable Root Motion) | 是否开启根运动 |
根运动根锁定(Root Motion Root Lock) | 根运动提取后,根骨骼的锁定方式。
|
强制锁定根骨骼(Force Root Lock) | 强制锁定根骨骼,无论是否提取过根运动。 |
使用标准化根运动缩放(Use Normalized Root Motion Scale) | 使用归一化的根运动缩放(避免非归一化的缩放对根运动结果的影响) |
位移(Translate) | 旧的根运动相关设置。可选择清除Z轴(Clear Z-Axis)和清除X、Z轴(Clear X,Z Axes)。 |
差异动画类型(Additive Anim Type) |
|
基础姿势类型(Base Pose Type) |
|
基础姿势动画文件路径(Base Pose Animation File) | 指定作为基础姿势的动画文件 |
参考帧索引(Ref Frame Index) | 指定帧 |
同步组(Sync Group) | 同步组 |
淡入时间(Blend In Time) | 混入时间 |
淡出时间(Blend Out Time) | 混出时间 |
混合时间模式(Blend Timing Mode) |
|
开始触发器(Start Trigger) | 开始播放触发事件 |
结束触发器(End Trigger) | 结束播放触发事件 |
打断触发器(Break Trigger) | 打断播放触发事件 |
循环触发器(Loop Trigger) | 循环播放触发事件 |
自定义键值对(Custom Key Value) | 自定义键值对 |
通知
通知
通知(Notify)可定位动画序列特定的时间点,后续在所添加通知的特定点上设置事件发生。
通知在动画序列中一般添加的是声音和粒子之类的效果。可增添动画序列的丰富度,多方面满足创建游戏时产生的需求。
添加通知
在轨道上右键依次选择添加通知(Add Notify)-> 新通知(New Notify),在弹出的新建通知窗口中输入通知名称完成创建。
移动通知
在单个轨道内或多个轨道间可通过拖拽通知对它进行位置上的调整。
单个轨道内:
多个轨道间:
添加状态通知
通知状态基本与上面所提到的标准通知相同。与之不同的是,它可以设置通知的开始帧、结束帧和所持续的时间。
在轨道上右键依次选择添加通知(Add Notify)-> 新状态通知(New State Notify),在弹出的新通知窗口中输入通知名称完成创建。
管理通知
在轨道上右键选择管理通知(Manage Notifies)或管理状态通知(Manage State Notifies)后,可在细项面板(Details)中删除已存在的通知,也可以修改它们的名称。
同步标记
同步标记(Sync Marker)用于标记动画同步区间,在不同动画中找到同步动作添加同步标记,拥有相匹配标记的动画将可以完成同步。
添加同步标记
在轨道上右键依次点击添加同步标记(Add Sync Marker) -> 新同步标记(New Sync Marker),在弹出的新同步标记名窗口中输入同步标记名称完成创建。
移动同步标记
与移动通知操作相同。
编辑通知和同步标记
在轨道中的通知和同步标记图标上右键打开相应的编辑窗口,可对它们进行拷贝、删除和替换的操作。
通知编辑窗口:
状态通知编辑窗口:
同步标记编辑窗口:
动画曲线
在动画上附加曲线数据,并且曲线之间可以混合,逻辑层可以用这些曲线数据来驱动不同的效果(如驱动IK的强度,驱动材质的数值等)。使用动画曲线可以自定义动画数据,也就是对动画数据的语义描述。
动画曲线面板
在动画曲线面板中,可以创建并编辑动画曲线。动画曲线面板在动画序列和蒙太奇中显示。
创建动画曲线
打开动画序列资产,在该动画序列编辑器中的动画曲线面板(Animation Curve)中点击,然后在弹出的窗口中输入曲线名称,点击OK按钮完成创建。
编辑动画曲线
创建完动画曲线后,勾选复选框可以展开曲线编辑面板,取消勾选则可收缩曲线编辑面板,曲线的编辑可以在展开后的曲线编辑面板中完成。
在文本框中可修改曲线名称。
点击后可删除该曲线。
想再次编辑之前创建的动画曲线,点击可以选择一个之前所创建的曲线,打开其曲线编辑面板。
关键帧编辑
双击空白区域可增加关键帧,点击关键帧并移动关键帧可改变其时间(Time)和值(Value),也可以选中关键帧,在左上方弹出的时间和值的输入框中修改它们的值。
选中关键帧右击,在弹出的快捷菜单中可选择删除选中的关键帧。按住Ctrl键可对关键帧进行多选,或者可直接左击框选多个关键帧。
视口调整
点击左上角的两个按钮可以根据曲线取值范围将视口调整至合适区间。
可通过滚动滚轮手动调整视口;同时按住Ctrl键将仅水平缩放;同时按住Shift键将仅垂直缩放。
关联骨骼
在动画编辑器中依次点击菜单栏窗口(Windows) -> 动画曲线观察器(Anim Curve Viewer)来打开动画曲线观察器面板,在动画曲线面板中可以查看曲线数据的实时变化。
在动画曲线观察器面板中选中曲线,该曲线的相关信息将会显示在上方的详细面板(Details Panel)中。
在详细面板中还可以为曲线关联骨骼数据。点击骨骼(Bones)下的添加(Add)按钮,然后点击根(Root)按钮,在弹出的窗口中可选择所要关联的骨骼,选择完成后关闭该窗口。
若要删除指定关联骨骼,在详细面板中点击关联骨骼后的删除(Del)按钮即可取消该骨骼与曲线的关联。点击清除(Clear)按钮可一次性取消当前所有骨骼与曲线的关联。
蒙太奇
基于蒙太奇可以实现多个动作的剪辑。
蒙太奇(Montage)是一种基于骨架(Skeleton)和(或)动画序列(Anim Sequence)的复合动画资产。它可将引用自骨架或(和)动画序列的动画剪辑线性并入轨道,并允许用户切分和重组为若干自定义分段。这些自定义分段可以在管线中独立播放,也可以作为外部动画源插入动画树指定插槽。
创建蒙太奇
依次点击菜单栏文件(File) -> 创建(Create)打开资产创建窗口,创建蒙太奇资产。
资产细项
在资产细项面板(Asset Details)中,可以通过修改相关属性来设置当前的动画蒙太奇。
属性 | 说明 |
---|---|
速率(Rate Scale) | 播放率缩放系数 |
同步组(Sync Group) | 同步组 |
同步插槽索引(Sync Slot Index) | 同步插槽索引 |
淡入时间(Blend In Time) | 混入时间 |
淡出时间(Blend Out Time) | 混出时间 |
混合时间模式(Blend Timing Mode) | 使用绝对时间模式,混入混出时间不受播放率影响;使用相对时间模式,混入混出时间受播放率影响,与动画持续时间成比例变化。 |
蒙太奇轨道
在蒙太奇轨道中,可以向轨道中添加动画资产,支持的动画资产有骨架资产和动画序列资产,为每个轨道指定一个插槽,让它们在不同的插槽中播放。
新创建的蒙太奇(Montage)包含一条空动画轨道。
新增片段。通过将动作列表中的骨架或者动画序列资产拖入轨道中来新增动画。
将多段动画拖入同一轨道可合并为一条动画进行剪辑。在一个轨道中添加多个动画后,动画会在轨道中按照顺序并相互错开排序。
在已有轨道右键选择新建轨道(Create Track)可以添加轨道。
勾选Preview复选框来选择当前所要预览的轨道(注:如果后指定的轨道插槽已被使用,则该轨道无法被预览,编辑器会显示警告图标。需重新为其指定插槽)。
在新添加的轨道右键选择删除轨道(Delete Track)可以删除该轨道。
分段
每条轨道有一个默认(Default)分段。如果想要创建新的分段,可以在该轨道上右键选择新建蒙太奇分段(Create Montage Section),在弹出的窗口中输入新的分段名,按Enter键完成创建。
若需移除一个分段,则右键分段处选择删除蒙太奇分段(Delete Montage Section)。
在轨道中水平拖拽分段可调整其位置(注:与时间轴的缩放操作类似,我们也可以在轨道上滚动鼠标滚轮来缩放轨道,以便提高分段摆放的精度)。
分段编辑
在这个区域,用户可以重新组织在蒙太奇中新建的分段之间的播放时序关系。
编号 | 名称 | 说明 |
---|---|---|
1 | 工具栏 | 用于将所有分段组织为按时序由前及后的顺序关系,或清除它们之间的关系。 |
2 | 分段按钮 | 标有所有分段名的一组按钮,用于指定在分段列表中选中分段的后继。 |
3 | 分段列表 | 各分段线性排列,可重新组织这些分段,将其自定义为任何线性序列。 |
分段重组织:
点击工具栏中的清除(Clear),各分段不再进行排序,恢复成独立个体。
选中默认(Default)分段。
在分段按钮区域中选择当前分段的后继,例如section03。
使用同样的方法将section01设置为section03的后继。
如果同时也将section03设置为section01的后继,则列表将变为:
(注:section01和section03的颜色变化表示它们形成了一个循环。)
类似的操作,我们可以将section02和section04组成一个列表,并让section04自循环。
点击每个section区块后的X按钮将解除它与后继的关联。
点击预览所有分段(Preview All Sections)按钮,从头到尾按顺序播放所有分段,也可以点击每个列表前的预览(Preview)按钮,分别预览每个列表。
插槽
插槽(Slot)用于管理骨架网格体的动画播放系统,可将网格体按部位细分,从而使得角色完整体的动画根据指定分割为部分动画来播放。在制作动画蒙太奇中,为它们指定插槽后,可使这些蒙太奇动画变成一个可以改变自己播放位置的动画。
在动画树编辑器中的插槽管理器(Slot Manager)中可创建插槽组和插槽,详见插槽节点中的创建与编辑插槽。
指定插槽
在蒙太奇面板中,打开轨道右侧的下拉菜单选择所需使用的插槽。
预览
通过勾选预览(Preview)复选框指定当前预览那条轨道(注:如果后指定的轨道插槽已被使用,则该轨道无法被预览)。
更多有关插槽的相关内容详见插槽节点。
通知
同动画序列资产 -> 通知。
动画曲线
同动画序列资产 -> 曲线编辑。
动画播放控制器
同骨架资产 -> 动画编辑。
混合空间
混合空间(Blend Space)是一种基于骨架(Skeleton)和(或)动画序列(Anim Sequence)的复合资产。它能够接收多个输入控制量(目前至多两个)控制多个动画采样点间的混合。
混合空间(Blend Space)支持独立播放、用于动画树的播放节点和输入动画树插槽节点。
混合空间创建和类型
不同类型的混合空间在资产编辑器中提供了众多功能。
不同的混合空间类型可通过以下方式进行创建。
依次点击菜单栏文件(File )-> 创建(Create)打开资产创建窗口,创建混合空间资产。
混合空间
混合空间(2D混合空间)允许根据指定采样点在2D的动作姿势样本空间中进行采样并混合,例如可用于角色的八方向移动等。
1D混合空间
1D混合(Blend Space 1D)空间允许根据指定采样点在1D的动作姿势样本空间中进行采样并混合。
1D混合空间是混合空间(Blend Space)的一维化,它的创建、编辑和使用方式均与混合空间一致。
瞄准偏移混合空间
瞄准偏移混合空间(Aim Offset Blend Space)是一种特殊的混合空间资产,专用于处理武器瞄准或角色望向某处之类的需求。它仅混合网格空间叠加类型的姿势,并将结果叠加在输入的基础姿势上。
1D瞄准偏移混合空间(Aim Offset Blend Space 1D)是瞄准偏移混合空间的一维化,它的创建、编辑和使用方式均与Aim Offset Blend Space一致。
该部分内容详见瞄准偏移。
资产细项
在资产细项面板(Asset Details)中,可以通过修改相关属性来继续设置混合空间。
设置项 | 属性 | 说明 |
---|---|---|
水平轴(Horizontal Axis) | 名称(Name) | 水平轴名 |
最小值(Minimum Axis Value) | 水平轴最小值 | |
最大值(Maximum Axis Value) | 水平轴最大值 | |
网格分割数(Number of Grid Divisions) | 水平轴网格分割数 | |
插值时间(Interpolation Time) | 水平轴插值时间 | |
插值类型(Interpolation Type) | 水平轴插值类型
| |
垂直轴(Vertical Axis) | 名称(Name) | 垂直轴名 |
最小值(Minimum Axis Value) | 垂直轴最小值 | |
最大值(Maximum Axis Value) | 垂直轴最大值 | |
网格分割数(Number of Grid Divisions) | 垂直轴网格分割数 | |
插值时间(Interpolation Time) | 垂直轴插值时间 | |
插值类型(Interpolation Type) | 垂直轴插值类型
| |
差异动画设置(Additive Settings) | 预览基础姿势(Preview Base Pose) | 预览基础姿势 |
混合采样(Blend Samples) | 混合采样(Blend Samples) | 采样动画列表,列表成员随采样的增删动态调整 每个成员提供:横轴坐标,纵轴坐标、关联动画和播放率 |
同步组(Sync Group) | 同步组(Sync Group) | 同步组 |
混合时间(Blend Time) | 淡入时间(Blend In Time) | 混入时间 |
淡出时间(Blend Out Time) | 混出时间 | |
混合时间模式(Blend Timing Mode) | ||
触发器(Trigger) | 开始触发器(Start Trigger) | 开始播放触发事件 |
结束触发器(End Trigger) | 结束播放触发事件 | |
打断触发器(Break Trigger) | 打断播放触发事件 | |
循环触发器(Loop Trigger) | 循环播放触发事件 | |
采样插值(Sample Interpolation) | 目标权重插值速度每秒(Target Weight Interpolation Speed Per Second) | 向目标插值的速度 |
自定义键值对(Custom Key Value) | 自定义键值对(Custom Key Value) | 自定义键值对 |
插槽名字(Slot Name) | 插槽名字(Slot Name) | 插槽的名称 |
采样网格编辑区
在混合空间采样网格编辑区中,生成了一个二维网格,网格的分区数由资产细项(Asset Details)面板中轴设置(Axis Settings)下的网格分割数(Number Of Grid Divisions)决定。每个网格线交点均可设置一个采样点。
我们可以通过从动作列表中拖拽骨架(Skeleton)或动画序列(Anim Sequence)资产至特定交点的方式添加采样点。
点击 图标可开启或关闭采样点关联的动画名称。
点击 图标可开启或关闭网格部分三角形的显示。
拖拽采样点可移动采样点的位置。
鼠标右击某个采样点后打开采样点编辑窗口,可对采样点的设置进行调整(注:这里的设置与资产细项面板(Asset Details)中混合采样(Blend Samples)中完全一致)。
如果需要删除某个采样点,我们可以先选中该采样点,然后按Delete键将其删除。
删除位于中心的采样点后:
通过拖拽面板中绿色方块模拟输入控制量的变化,从而通过视口观察混合结果是否符合预期。另外在拖拽的过程中编辑器会弹出一个包含当前混合状态信息的提示窗口,它会显示当前输入的控制量,按住Ctrl键还可以查看各节点混合权重详细信息,这个信息能够帮助我们更好地分析混合结果的成因。
动画播放控制器
同骨架资产 -> 动画编辑。
节点使用
创建完混合空间后,混合空间在动画树中可作为一个播放器来使用,也可以输入动画树的插槽节点,详见动画树播放节点中的混合空间节点。
瞄准偏移
瞄准偏移(Aim Offset)是一种特殊的混合空间资产,专用于处理武器瞄准或角色望向某处之类的需求。它仅用于混合网格空间叠加类型的姿势,并将结果叠加在输入的基础姿势上。
创建动画序列资产
在动画编辑器的资产浏览器(Asset Browser)中选中a_hg_aim_dwn、a_hg_aim_fwd、a_hg_aim_up和fi_bow_stand四个原始资产,右键选择将骨架批量转换为动画序列(仅限骨架)(Batch Convert Skeleton to AnimSeq(Skeleton Only))来批量创建四个对应的动画序列资产,然后保存所有。
创建叠加资产
双击资产浏览器下的a_hg_aim_dwn_sq打开该资产编辑面板。
在资产细项面板(Asset Details)中对该资产进行修改。
名称 | 值 |
---|---|
差异动画类型(Additive Anim Type) | 网格空间(Mesh Space) |
基础姿势类型(Base Pose Type) | 被选择动画帧(Selected Animation Frame) |
基础姿势动画文件路径(Base Pose Animation File) | fi_bow_stand_sq.anim_sequence |
参考帧索引(Ref Frame Index) | 0 |
修改完后依次点击菜单栏文件(File) -> 保存所有(Save All),此时当前资源目录下会生成一个a_hg_aim_dwn_sq_Additive.xskt文件。
依次修改a_hg_aim_fwd_sq.anim_sequence和a_hg_aim_up_sq.anim_sequence资产。
创建瞄准偏移混合空间1D资产
参考“混合空间创建和类型”创建瞄准偏移混合空间1D资产。
在资产细项面板对该资产进行修改。
名称 | 值 |
---|---|
名称(Name) | Pitch |
水平轴:最小值(Minimum Axis Value) | -90 |
水平轴:最大值(Maximum Axis Value) | 90 |
将资产浏览器中的A_hg_aim_dwn_sq、A_hg_aim_fwd_sq和A_hg_aim_up_sq拖拽到资产编辑面板的网格中。
将细项面板中的预览基础姿势(Preview Base Pose)修改为fi_bow_stand_sq.anim_sequence。
完成后点击保存所有(Save All)。