Skip to main content

基于Rig的动画重定向

概述

通过为不同的动画集配置相同的重定向Rig资产,可以让动画在动画集之间相互转换。所谓的Rig资产是一种包含了一系列节点的层级物件,它作为一种“媒介”,将自身的节点与骨骼进行绑定,从而为不同骨架建立骨骼间的映射关系。

简单来说,基于Rig的动画重定向,就是可以让基于骨架A制作的动画,离线生成一个能在骨架B上播放的动画,骨架A与骨架B的骨架层次结构、骨骼数量和骨骼命名可以不一致。

工作流程

以下是关于如何在使用不同骨架的两个组合体间,将一个组合体的动画重定向到另一个组合体,使其在另一个组合体中也可以正常播放的工作流程。

准备:一个主骨架为SK_Avatar_tpose的组合体,作为源组合体(包含配套动画资产);一个主骨架为SK_Human_tpose的组合体,作为目标组合体。二者主骨架层次结构、骨骼数量和骨骼名称均不相同。

源组合体:

image-20230621150414434

目标组合体:

image-20230621152253839

重定向管理器

双击源组合体(SK_Avatar.actor)打开组合体编辑器(Actor Editor),然后在动作列表(Action List)中双击一个骨架资产打开动画编辑器(Animation Editor),进入对源的动画编辑窗口中。

image-20230620133551891

在动画编辑器中,依次点击菜单栏的窗口(Window) -> 重定向管理器(Retargeting Manager)来打开重定向管理器(Retargeting Manager)

image-20230620133723427

image-20230620134217287

名称说明
清除(Clear)用于快速清空映射关系。
显示进阶骨骼(Show Advanced Bones)可以在显示主干或完整Rig结构间切换,也可以进行快速配置,快速查看转换效果。
尝试匹配(Try To Map Bones)可以自动快速匹配Rig节点和骨骼。
设置基础姿势路径(Set Base Pose Path)指定重定向基础姿势。
清除基础姿势(Clear Base Pose)清除当前所指定的重定向基础姿势,清除后将使用动画原始匹配的基础姿势。
保存重定向设置(Save Settings)保存当前重定向设置。
创建/更新Rig模板(Create/Update Rig Template)以当前Rig配置创建/更新Rig模板。
删除Rig模板(Delete Rig Template)删除当前应用的Rig模板。

重定向管理器(Retargeting Manager)中第一行的下拉菜单中选择一个Rig,可选择的Rig有引擎自带的humanoid,也可以自己创建Rig。

image-20230620135342398

创建Rig资产

从目标组合体的主骨架创建Rig。在打开目标组合体动画资产的动画编辑器(Animation Editor)中,依次点击菜单栏文件(File) -> 创建Rig(Create Rig)

image-20230620135459029

在弹出的窗口中输入Rig名称(Rig Name),选择Rig路径(Rig Path)后,点击创建(Create)按钮完成从当前主骨架创建Rig。

image-20230620140058970

设置骨骼映射

此处使用自己创建的Rig(SK_Human.rig)来进行骨骼映射,点击尝试匹配(Try To Map Bones)按钮后将自动配置Rig节点与角色骨骼间的映射关系。

image-20230620162057811

若自动映射不正确或未自动映射成功,均可手动修改对应的骨骼映射。

AddMapping

完成骨骼映射:

image-20230620171751151

点击保存重定向设置(Save Settings)按钮可保存编辑后的设置。

image-20230620164117162

重复以上步骤为目标组合体(SK_Human.actor)完成Rig的相关配置(所选择Rig资产与源组合体选择的一致)。

image-20230620172032447

重定向动画

源组合体和目标组合体的Rig相关配置完成后,在打开目标组合体动画资产的动画编辑器中,依次点击菜单栏的文件(File) -> 通过重定向创建(Create By Retargeting)来创建动画资产。

image-20230625095055539

在弹出窗口中的源组合体文件(Source Actor File)处选择源组合体文件。

image-20230620172314228

如果动画集中的Rig设置相互匹配,则源动画列表(Source Animation List)中将罗列所有源组合体动画集中的XSKT原始动画。勾选待转换动画,然后点击确定(OK)按钮开始转换,此时选中的动画将被添加至目标组合体的动画集中。如果Rig设置不匹配,列表中将不会出现源组合体的动画。

image-20230620173116787

image-20230621102435556

转换质量的改善

通过运行时的动画重定向功能

转换后的动画可能在若干骨骼上与目标的长度不匹配,这时需要使用运行时的动画重定向功能进行修正。

image-20230620174245551

部分骨骼可以看到有异常,这时在骨架编辑器(Skeleton Editor)中将相应骨骼设为骨架重定向模式即可修复。例如,将除Root和Pelvis之外的骨骼递归地设为骨架重定向模式,在骨架树中右键Root骨骼选择骨架(递归),最后将Root、Bip01和Bip01 Pelvis三根骨骼设为动画重定向模式。

image-20220909145443262

image-20220909145552068

修复后:

image-20230620174523319

通过设置重定向基础姿势

为达到更佳的转换结果,应该为源组合体和目标组合体设置尽可能一致的基础姿势。提高转换的可控性和转换质量。如果动画的参考骨架差异较大,可在重定向管理器(Regtargeting Manager)中(创建重定向动画前)增加该步骤。

如下图所示,目标和源的基础姿势有一定的差距,需创建重定向基础姿势。

源的基础姿势:

image-20230621175536941

目标的基础姿势:

image-20230621175651921

创建重定向基础姿势

可以通过两种方式来创建重定向基础姿势。一种是通过3Ds Max或Maya之类的DCC工具在原始资源的基础上进行调整并导出为Flexi的动画资源(保证第0帧为想要的基础姿势);另一种是通过动画编辑器内的编辑导出工具。

该方法优点是对姿势的控制更精准;缺点是相对繁琐,需要有一定DCC工具使用能力,还需要具有两种工具间切换原始资源的能力。第二种方法,优点是方便快捷;缺点是目前在引擎编辑器中修改姿势不太直观可控。

下面介绍使用第二种方式的步骤:

若源和目标的基础姿势差别很大,可调整目标的基础姿势与源一致,并在重定向管理器(Retargeting Manager)中设置目标的基础姿势为修改后的;也可以调整源的基础姿势与目标一致,并设置源的基础姿势为修改后的。以下以调整目标基础姿势与源一致为例,介绍创建和设置重定向基础姿势的步骤:

编辑目标用于骨架的XSKT动画。在打开了目标的组合体编辑器(Actor Editor)中的动作列表(Action List)下双击SK_Human_tpose进入该动画的编辑窗口。

image-20230130164425204

骨架编辑器(Skeleton Editor)中调整相应骨骼的附加变换(Append Transform),尽可能将目标的基础姿势调整与源一致。

image-20230621094210351

调整完后,在资产浏览器(Asset Browser)中右键该动画,选择导出骨架(Export Skeleton)可导出修改后的动画。

image-20230328104931820

导出后需在详细面板(Details Panel)中还原动画中对附加变换(Append Transform)值的修改。编辑完后,记得进行保存。

image-20230625095716520

设置重定向基础姿势

为目标设置重定向基础姿势。在重定向管理器(Retargeting Manager)设置基础姿势路径(Set Base Pose Path)处选择刚才修改后导出的动画,重定向工具将使用资产的第0帧作为基础姿势。

image-20230620175458560

如果不再需要使用基础姿势,可以使用清除基础姿势(Clear Base Pose)按钮将其清除。不设置重定向基础姿势,程序则将使用动画关联到的原始骨架作为重定向基础姿势。

image-20230130165308143

重定向结果

以下是目标组合体通过基于Rig的动画重定向(Rig-based Animation Retargeting )功能复用源组合体的攻击动画。

Preview