Skip to main content

差异动画

概述

差异动画(Additive Animation)允许从两个姿势间提取差异并应用到其它姿势上,从而为已有动画增加额外的细节表现。与传统的关键帧动画不同,差异动画不需要为每个关键帧创建一个完整的姿势,而是只需要计算每个关键帧之间的差异,从而创建出更加流畅和自然的动画效果。

差异动画通常用于角色动画和游戏开发中,它可以减少动画制作的时间和成本,同时也可以提高动画效果的质量和逼真度。例如,在角色动画中,差异动画可以用于创建角色的表情和肢体动作,从而使角色更加生动和真实。

节点

涉及到以下三种动画树节点。

应用差异姿势节点

应用差异姿势(Apply Additive Pose)节点可在基础姿势上叠加差异动画的采样数据。

节点使用

在动画树空白处右键打开节点选择面板,展开混合(Blends)分类并从中选取应用差异姿势(Apply Additive Pose)

image-20220909143348717

添加节点成功后的效果:

image-20230327164014130

然后可以继续为节点配置合适的输入/输出。

image-20230616095547641

属性

属性说明
是否使用权重参数(Use Weight Parameter)勾选后会使用动画参数,可选择动画参数中浮点类型的参数。使用参数后,可根据动画参数来确定混合权重。不勾选,则可修改混合权重的值。
混合权重(Blend Weight)混合权重。
混合权重偏移(Blend Weight Offset)混合权重的偏移。
混合权重缩放(Blend Weight Scale)混合权重的缩放。
LOD阈值(LOD Threshold)该节点允许的最大LOD。

应用网格空间差异姿势节点

应用网格空间差异姿势(Apply Mesh Space Additive Pose)节点能够在基础姿势上应用网格空间差异动画的采样数据。

节点使用

在动画树空白处右键打开节点选择面板,展开混合(Blends)分类并从中选取应用网格空间差异姿势(Apply Mesh Space Additive Pose)

image-20220909143442014

添加节点成功后的效果:

image-20230327171833980

然后可以继续为节点配置合适的输入/输出。

image-20230613151705676

注意:差异姿势(Additive Pose)引脚输入的动画需要配置为网格空间的差异动画。在输入到差异姿势引脚的动画的资产细项(Asset Details)面板中,将差异动画类型(Additive Anim Type)设置为网格空间(Mesh Space)

image-20230614110954373

属性

可参照应用差异姿势节点的属性介绍。

创建动态差异姿势节点

创建动态差异姿势(Create Dynamic Additive Pose)节点能够动态创建差异动画的数据,在姿势(Pose)上减去基础姿势(Base Pose),输出差异姿势。

节点使用

在动画树空白处右键打开节点选择面板,展开混合(Blends)分类并从中选取创建动态差异姿势(Create Dynamic Additive Pose)

image-20220909143543230

添加节点成功后的效果:

image-20230327172928261

然后可以继续为节点配置合适的输入/输出。

image-20230616141526088

属性

属性说明
网格空间叠加(Mesh Space Additive)是否创建网格空间差异姿势。

差异设置

输入到差异姿势(Additive Pose)引脚的动画需先在资产细项(Asset Details)面板中进行差异设置(Additive Settings)

image-20230616141644147

有关差异设置(Additive Settings)的属性介绍详见动画序列资产细项部分。

应用

以下是使用应用差异姿势(Apply Additive Pose)节点的一个示例。将用于叠加的动画进行处理以得到射击动作(差异姿势),然后将射击动作叠加混合到向上瞄准的基础动画姿势上,最终获得向上瞄准射击的动画。

ApplyAdditive

创建组合体

参考Actor组装,创建一个组合体(Actor),包含tpose,a_sm_shoot_fwd和a_hg_aim_up动画资产。

image-20230615140632932

动画序列

对输入到差异姿势(Additive Pose)引脚的动画进行差异设置(Additive Settings)

在动画编辑器的资产浏览器(Asset Browser)中,选中射击动画(骨架资产),右击打开快捷菜单选择将骨架资产转为动画序列资产(Convert Skeleton To AnimSeq),在弹出的窗口中输入动画序列名称,点击确定(OK)按钮完成转换。

image-20230615141113038

image-20230615140934305

转换完成:

image-20230615141029719

按照上述操作将该射击动画(骨架资产)再次转为一个动画序列资产,后续用作于差异动画的基础姿势动画。

image-20230615141154920

在动画编辑器中,依次点击菜单栏文件(File)-> 保存所有(Save All)

image-20230615141935089

资产浏览器(Asset Browser)中,双击shoot动画序列进入该资产的编辑界面。在资产细项(Asset Details)面板中,进行差异设置(Additive Settings)相关属性的设置。用于叠加的shoot动画与所选择的基础姿势动画作比较,shoot动画中二者不相同的部分将作为差异姿势叠加到基础姿势引脚上。

image-20230616101657577

属性设置
差异动画类型(Additive Anim Type)局部空间(Local Space)
基础姿势类型(Base Pose Type)被选择动画帧(Selected Animation Frame)
基础姿势动画文件(Base Pose Animation File)base_shoot
参考帧索引(Ref Frame Index)0

编辑完成后,同样进行保存。

动画树

在动画编辑器中依次点击菜单栏文件(File)-> 创建(Create),在弹出的窗口中的下拉框中选择动画树(AnimTree),然后输入名称并选择路径,点击确定(OK)按钮完成创建并进入到动画树编辑器中。

image-20230615152557925

在动画树空白处右击打开节点选择面板,展开动画(Animation)分类,依次选择播放”a_hg_aim_up“(Play "a_hg_aim_up" )节点和播放”shoot“(Play "shoot" )节点,分别用于输入到基础姿势引脚和差异姿势引脚。

image-20230615160333482

添加完成:

image-20230615160405580

添加一个应用差异姿势(Apply Additive Pose)节点,将播放”a_hg_aim_up“(Play "a_hg_aim_up" )节点链接到应用差异姿势节点的基础姿势(Base Pose)引脚处,然后将播放”shoot“(Play "shoot" )节点链接到差异姿势(Additive Pose)引脚处,最后将应用差异姿势节点链接到最终动画姿势(Final Animation Pose)节点。

image-20230616095352308

可根据需求在属性窗口(Property Window)中设置选中节点的各项属性。点击应用(Apply)按钮后,在预览(Preview)窗口中可预览效果。

image-20230616095437905

效果预览

Preview01