你可以使用IK绑定,在不同骨骼网格体之间创建动画重定向。 这与虚幻引擎传统的动画重定向功能有所不同,因为你可以在骨骼数量、骨骼名称和方向不同的骨架之间传输动画,同时使用IK选择性地维持精确的手部或脚部接触点。
动画重定向可用于在多个不同的骨架之间共享动画数据,并且无需在虚幻引擎之外创建和管理新的动画。
本页面概括介绍了重定向编辑器。
如需详细了解如何使用虚幻引擎的自动重定向工具,请参阅重定向编辑器文档。
先决条件
你的项目中有两个不同的骨骼网格体可用于对重定向进程求值。
已经创建IK绑定资产,并在其中定义了重定向链。 请参阅使用IK Rig重定向两足角色页面,了解具体操作方法。
创建和概述
要创建重定向资产,请在内容浏览器中点击添加(Add (+)),选择动画(Animation) > IK绑定(IK Rig) > IK重定向器(IK Retargeter)。 此时会弹出一个对话框,你必须在其中选择要用于重定向动画的IK绑定。 然后,命名并打开重定向资产。
重定向编辑器包含以下工具和选项:
播放按钮现在位于工具栏中,点击运行重定向即可播放重定向后的动画。
工具栏: 你可以在这里保存更改、浏览相关资产等。
运行重定向(Run Retarget)和显示重定向姿势(Show Retarget Pose):供你编辑、保存和导入源角色或目标角色上的基础重定向姿势。
资产设置(Asset Settings):显示资产的不同设置,以及其他各种显示选项,例如预览网格体、网格体偏移、操作栈执行等。
重载集(Override Sets):打开重载集面板的按钮。
变量(Variables):打开变量面板的按钮。
操作栈和层级面板:
操作栈(Op Stack):重定向编辑器自上而下读取操作顺序,以构建重定向。
层级:显示角色骨骼列表。 选择一个角色,并在骨骼列表中筛选骨骼及其指定的骨骼链。
资产浏览器和变量面板:
资产浏览器(Asset Browser):从源中选择动画,在编辑器中预览,并导出选择的动画。
变量:将变量添加到列表中,并为重定向资产创建自定义的Retarget Pose From Mesh动画节点。
重定向输出日志(Retarget Output Log):显示调试信息、警告和错误,指示重定向编辑器的当前状态。
细节、预览设置和重载集面板:
细节(Details):选中某个操作或骨骼时,该面板将显示一系列设置。
预览设置(Preview Settings):在编辑器和视口中显示重定向动画的不同预览效果。
重载集:选中某个重载项后,你可以重载特定重定向操作(op)的属性值,单独启用或禁用某些操作。
视口(Viewport):你可以在这里预览和调试正在重定向的源角色和目标角色。
重定向链
你必须在源和目标IK绑定上定义要在重定向过程中传输的肢体和其他附属物。 这个过程类似于在其他应用程序(如Autodesk MotionBuilder或Maya)中"表征"绑定。 主要区别在于,它是通过关节链来定义的,而不是单个骨骼。 这为重定向骨骼结构截然不同的的角色提供了更大的灵活性。
示例:如果目标角色的臂关节比源角色多,重定向行为仍然能正常进行,因为你定义的是整条手臂链,与骨骼数量无关。
源手臂链。
目标手臂链。
链的创建
重定向链会自动从IK绑定编辑器工具栏创建,只需点击自动创建重定向链(Auto Create Retarget Chains)。 要创建链,请打开两个角色的IK绑定资产,找到IK重定向面板,然后执行以下操作:
点击+新增链条(Add New Chain (+))。
在新增重定向链(Add New Retarget Chain)对话框中,正确设置链名称(Chain Name),然后点击添加链(Add Chain)。 在大多数情况下,IK绑定会根据其常见链名称列表,自动分配该值。
你也可以选择意向链中的每个骨骼,在层级面板中右键点击,然后选择新建重定向链……(New Retarget Chain…)
链属性和名称
链需要设置以下参数:
| 名称 | 说明 |
|---|---|
链名称(Chain Name) | 链的名称。 该名称可以随意命名,但应与另一个IK绑定中的预期重定向链匹配。 匹配链名称过程由模糊字符串字符串匹配确定。 因此,尽管每个IK绑定中的链名称不必完全匹配,但仍应该尽量匹配。 例如,只要没有更准确的名称,名为 |
初始骨骼(Start Bone) | 重定向链的起始骨骼。 如果要重定向手臂,通常会在此处选择上臂骨骼。 |
末端骨骼(End Bone) | 重定向链的末端骨骼。 如果要重定向手臂,通常会在此处选择手骨骼。 |
IK目标(IK Goal) | 你可以根据需要在此处选择一个IK目标来稳定肢体或链,以免无法以良好的准确度进行重定向。 这意味着,你还需要为这些目标创建解算器,解算器将在重定向过程之后执行其解算。 |
链名称属性会根据创建链条时所选的骨骼的名称自动填充。 系统会查找使用过的常见骨骼名称,然后选取最符合所选骨骼的名称。 此映射列表如下所示:
| 链名称映射 | 要搜索的骨骼名称 |
|---|---|
头部 |
|
颈部 |
|
腿部 |
|
手臂 |
|
脊椎 |
|
下颌 |
|
尾部 |
|
拇指 |
|
索引(Index) |
|
中指 |
|
无名指 |
|
小指 |
|
根 |
|
对于对称链,例如手臂和腿部,自动命名功能通过比较链中骨骼的平均位置来确定,然后分配前缀左(Left)或右(Right)。 如果所选骨骼大部分位于负X端,则为“左(Left)”,正X为“右(Right)”,如果它们在X轴上相对居中的位置,则被视为“中心(Center)”,而不应用前缀。
如果为使用相似名字的骨骼创建了多个链,将为每个后续链应用数字后缀。 举个例子,如果你要重定向一个多头怪物,那么生成的骨骼链将显示为Head_1、Head_2、Head_3。 你可以随意手动命名你的链,但此惯例有助于建立标准命名规范并使用其他IK Rig快速重定向。
骨盆
除了定义链,你还必须定义骨盆骨骼。 这样做是为了成比例地定义和传输角色的根骨骼运动。
与链一样,骨盆在IK绑定编辑器中定义。 为此,请打开两个角色的IK绑定资产,在层级面板中右键单击骨骼,选择设置骨盆(Set Pelvis)。
完成后,骨盆将在层级和IK重定向面板中指示选中的骨骼。
重定向堆栈框架
重定向堆栈框架是一系列模块化操作的集合,这些操作会在从骨骼层级中选取的骨骼链上执行。 重定向操作能够以性能更高的方式,编辑骨骼网格体和重定向动画。
你可以通过选择和排列选定骨骼链重定向姿势或动画所需的操作,为重定向器添加自定义操作。 每个操作都可以在堆栈中重新排序。
某些操作包含一个子操作栈,用于执行需要按特定顺序或方法应用的自定义逻辑和计算,以扩展现有操作。
所有重定向操作都支持设置自定义LOD阈值。 自定义LOD阈值按每项操作设置,可在LOD级别较高时自动跳过高成本的步骤。 某些操作在其设置中具有调试功能。
你也可以用C++创建自定义操作。
访问重定向操作栈页面,进一步了解重定向操作栈和各项操作。
重定向姿势
根据正在被重定向的角色的参考姿势,可能需要以基础重定向姿势的形式编辑该姿势。 通常,如果目标角色的引用姿势与源不同,例如处于T姿势而不是A姿势,就需要执行此操作。 匹配这些重定向姿势将提高重定向的准确性。
源角色的参考姿势为A姿势。
目标角色的参考姿势为T姿势。
你可以在工具栏中切换到编辑重定向姿势(Editing Retarget Pose),然后使用层级面板中的重定向姿势工具编辑、导入或导出不同的姿势,解决参考姿势不一致的问题。
点击源(Source)或目标(Target)会将重定向姿势工具和层级面板的焦点改为源角色或目标角色。
创建和编辑姿势
虽然你可以编辑任何已重定向角色的默认姿势(Default Pose),但如果需要调整,我们建议创建新的重定向姿势。 为此,请点击+创建(Create (+)) > 创建(Create),命名新的重定向姿势,然后点击确定(OK)。
接下来,确保将当前重定向姿势设置为新姿势,然后启用编辑模式。 现在你可以在视口中选择和修改骨骼并匹配姿势。 完成后,禁用编辑模式。
要额外提高精度,你可以在细节面板中,以数字方式修改重定向姿势,其中旋转值0, 0, 0会将骨骼返回到其参考姿势。
导入和导出姿势
除了手动创建新的重定向姿势外,你还可以通过动画序列或姿势资产导入重定向姿势。
要从动画序列(Animation Sequence)导入,请点击+创建(Create (+)) > 从动画序列导入(Import from Animation Sequence)。 在对话框窗口中,选择要从中导入的序列并设置以下参数:
序列帧(Sequence Frame):定义动画序列中要作为导入的姿势基础的特定帧。 默认设置为0,并将使用动画的第一帧。
姿势名称(Pose Name):定义导入时重定向姿势的名称。
要从姿势资产(Pose Asset)导入,请点击+创建(Create (+)) > 从姿势资产导入(Import from Pose Asset)。 在对话框窗口中,选择要导入的姿势,点击下拉菜单,设置要使用的特定姿势名称,然后选择导入重定向姿势。
你还可以将重定向姿势导出为姿势资产,与项目中的其他IK重定向资产共享。 为此,请点击+创建(Create (+)) > 导出姿势资产(Export Pose Asset),为你的资产设置名称,然后点击保存(Save)。
其他工作流程
重定向姿势区域还包含以下杂项工具,可辅助创建和编辑你的重定向姿势:
| 名称 | 说明 |
|---|---|
当前重定向姿势(Current Retarget Pose) | 显示源或目标角色使用的当前重定向姿势。 一开始这里只会显示默认姿势(Default Pose),然后随着你创建新的姿势而填充。 你可以点击下拉菜单,选择不同的姿势。 |
运行重定向器/编辑重定向姿势(Running Retargeter / Edit Retarget Pose) | 启用此项后,重定向器将被激活,你可以使用动画序列预览当前重定向姿势的结果。 禁用此项会切换回编辑重定向姿势模式,你可以根据需要,继续在这里进一步优化。 视口将以蓝色轮廓高亮显示,表明已启用编辑重定向姿势模式。 |
重定向姿势混合(Retarget Pose Blend) | 反复编辑重定向姿势时,能够预览哪些骨骼发生了哪些变化会很有帮助。 为此,你可以编辑重定向姿势混合滑块。 将其设置为0会将姿势改回骨骼网格体默认参考姿势。 将其设置为1会将姿势改为当前的重定向姿势。 |
重设(Reset) | 你可以使用重设菜单,将重定向姿势重置回骨骼网格体默认参考姿势。 你可以选择以下选项:
|
自动对齐(Auto Align) | 自动将源骨架上的骨骼与目标对齐,或将目标骨架上的骨骼与源对齐。 你可以选择以下选项:
|
复制(Duplicate) | 你可以通过点击+创建(Create (+)) > 复制当前(Duplicate Current),复制当前重定向姿势,然后为新姿势命名。 |
重命名(Rename) | 要重命名当前重定向姿势,请点击重命名(Rename),输入新名称,然后点击确定(Ok)。 |
层级显示
层级面板将显示源或目标角色的骨骼层级,具体取决于启用了哪一个。 骨骼名称通过高亮显示表明其是否被用于重定向链;此外,重定向链列也会显示正在使用的链的名称。
你可以搜索以查找并筛选特定骨骼名称或重定向链。
你还可以点击筛选器下拉菜单,设置以下筛选器:
隐藏不在链中的骨骼(Hide Bones Not in a Chain):隐藏未在链中使用的骨骼,无论重定向编辑器是否正在使用该链。
隐藏未重定向的骨骼(Hide Bones Not Retargeted):隐藏重定向编辑器未使用的所有骨骼。
隐藏重定向的骨骼(Hide Retargeted Bones):隐藏重定向编辑器使用的骨骼。
预览动画并导出
资产浏览器(Asset Browser)面板用于预览并导出不同资产的重定向效果。 双击资产即可播放。
如果满意目标角色的重定向效果,就可以将动画导出为兼容该角色骨架的动画序列。 为此,请在资产浏览器面板中选择你想导出的动画,然后点击导出所选动画。
在导出对话框窗口中,选择导出文件夹,然后根据需要指定以下重命名属性:
添加前缀(Add Prefix):在新资产名称之前添加文本。
添加后缀(Add Suffix):在新资产名称之后添加文本。
搜索(Search for)和替换为(Replace with):在文件名中搜索现有名称,并将其替换为指定的名称。 搜索和替换不区分大小写。
点击导出(Export),即可保存重定向后的动画序列。
重定向器属性和设置
资产设置
点击资产设置(Asset Settings)按钮,并在细节面板中启用分析操作(Profile Ops),即可在细节面板中看到,每项操作的运行时间。
| 名称 | 说明 |
|---|---|
源IK绑定资产(Source IKRig Asset) | 要从中复制动画的源IK绑定。 |
源预览网格体(Source Preview Mesh) | 源骨骼网格体。 你可以更改此项,IK重定向系统将使用名称匹配,尝试使IK绑定兼容不同的网格体和骨架。 |
目标IK绑定资产(Target IKRig Asset) | 要将动画复制到其中的目标IK绑定。 |
目标预览网格体(Target Preview Mesh) | 目标骨骼网格体。 你可以更改此项,IK重定向系统将使用名称匹配,尝试使IK绑定适配提供的骨架和比例。 如果存在不兼容的情况,重定向输出日志中会显示相应的警告或错误。 |
目标网格体偏移(Target Mesh Offset) | 可应用于目标骨骼网格体的位置偏移,使其相对于源网格体发生偏移。 这有助于帮助预览两个角色,在目标角色非常大,需要更大偏移量时也非常有用。 |
目标网格体缩放(Target Mesh Scale) | 预览比例修改器,可用于增加或减少目标角色的比例。 如果你的目标相对于源非常小或非常大,此功能很有用,更改此值可以更方便地调整目标的大小。 |
源网格体偏移(Source Mesh Offset) | 与目标网格体偏移(Target Mesh Offset)类似,这是一个位置偏移,可应用于源骨骼网格体,使其相对于目标发生偏移。 |
显示源网格体(Show Source Mesh) | 在编辑器视口中显示/隐藏源骨架网格体。 |
显示目标网格体(Show Target Mesh) | 在编辑器视口中显示/隐藏目标骨架网格体。 |
显示源骨架(Show Source Skeleton) | 在编辑器视口中显示或隐藏源骨架。 视口必须显示骨骼才能看到骨架。 |
显示目标骨架(Show Target Skeleton) | 在编辑器视口中显示或隐藏目标骨架。 视口必须显示骨骼才能看到骨架。 |
重载源骨架颜色(Override Source Skeleton Color) | 重载编辑器视口中的源骨架颜色。 |
源重载颜色(Source Override Color) | 选择一种新的骨架颜色。 |
重载目标骨架颜色(Override Target Skeleton Color) | 重载编辑器视口中的目标骨架颜色。 |
目标重载颜色(Target Override Color) | 选择一种新的骨架颜色。 |
忽略预览中的根锁定(Ignore Root Lock in Preview) | 如为True,启用强制根锁定(Force Root Lock)的动画序列的效果与关闭该设置的效果并无差异。 仅影响重定向编辑器中的预览。 使用ExportRootLockMode控制导出的动画行为。 该设置对根运动从源复制的运行时重定向没有影响。 |
调试绘制(Debug Draw) | 提供了一种处理链的方式。 工具按操作区分,通过操作栈进行控制。 |
分析操作(Profile Ops) | 切换操作栈的性能分析。 |
重载集
重载集提供了一个运行时可配置的系统,用于在单个重定向资产中定义状态驱动的重定向行为变体。 你可以使用重载集高效地管理生产角色,让同一个重定向器为不同链设置的动画应用重定向行为,无需在运行时手动交换属性值,也无需接受无法随项目扩展的单一配置。
使用重载集可以:
直接在重定向编辑器中创建、命名和管理重定向重载集。
在创作过程中创建并切换重载集。
更改任意重载的激活状态。
重定向重载集
每个重载集都可以:
重载特定的重定向操作(op)属性值,单独启用或禁用某些操作。
使用新的重载重定向姿势操作分配不同重定向姿势。在创作过程中,使用变量在重载集之间切换,将动画曲线绑定到重定向属性上,实现动画驱动的动态控制。
重载集通过Retarget Pose From Mesh动画节点和UAF函数在运行时分配,支持蓝图和代码驱动的工作流。 类似蓝图的变量可以在编辑器中声明,作为Retarget Pose From Mesh节点的输入引脚公开,并连接重载集中的操作属性,从而促进IsHoldingWeapon或IsEmote之类的游戏状态,驱动重定向行为,无需在资产外部额外进行蓝图连接。
通过上下文菜单复制重载集,可加快相似变体的创作速度。 可以定义默认重载集,设置基线配置。 此外,支持通过Python和蓝图创建并管理重载集,用于管线和自动化应用场景。
重载操作属性
操作中的所有属性都可以在重载集中重载。 要重载某项操作,请执行以下操作:
指定要重载哪些操作属性,然后在集激活时,将重载值应用于基础重定向资产的配置。
在重载集选项卡中选择一个重载集,右键单击操作栈中的任意操作。
你可以将任意操作的属性添加到重载集中。 还可以执行其他操作,添加所有属性或所有更改属性。
你可以通过重载集在操作栈中开启或关闭单个操作,在不修改基础配置的情况下,切换整个重定向行为。 重载集可以设置子项;如果启用子项,父项的重载也会随之启用。
更多信息请参阅重定向姿势操作。
导出重载
你也可以使用重载集指定一系列离线重定向设置。 在重定向编辑器中,激活需要的重载集,然后导出。 对于批量重定向,请使用现有的重定向器,而不是自动生成的重定向器,然后从要应用的重载集(Override Set to Apply)下拉菜单中,选择要应用的重载。
脚本重载集
脚本化重载集意味着,你可以使用Python脚本创建和配置重定向重载集,以便管线工具化、批量设置和自动化重载创作流程。 在重定向编辑器中,指定正在使用的自定义重载集,然后在节点上提供重载的名称。 这取代了之前重定向配置文件的工作流。
变量
在创作过程中,使用变量创建并切换重载集。
声明的变量作为Retarget Pose From Mesh动画节点的输入引脚公开,使Gameplay状态值(如IsHoldingWeapon、IsEmote或与移动相关的输入)能够在评估时,直接从AnimBP/UAF传递到重定向器中。 虽然变量可以在蓝图节点中绑定,但重载集必须处于活动状态,变量才能应用于重载集中已绑定的属性。
运行时重载集
你可以在Retarget Pose From Mesh画节点和UAF节点上分配重定向重载集,以便在动画蓝图或虚幻动画框架中重定向时,激活配置变体。 通过向“要应用的重载集”数组添加数组元素,指定正在使用的重载集数量,然后在节点上提供重载的名称。
你可以在重定向编辑器中声明单值类蓝图变量,并将它们绑定到重定向重载集中的操作属性。
不能使用数组、映射或集合。
绑定动画曲线
你可以将正在运行的动画序列中的动画曲线值绑定到重定向重载集中的特定重定向属性,操作方式和变量类似。 这样就能利用动画制作的曲线数据,在运行时动态控制重定向行为。 例如,当角色在不同状态之间切换时,在不同链配置之间混合——无需更改蓝图或代码。