掌桥专利:专业的专利平台
掌桥专利
首页

二维动画的重定向方法、系统、装置、以及电子设备

文献发布时间:2024-04-18 20:02:40


二维动画的重定向方法、系统、装置、以及电子设备

技术领域

本申请涉及计算机技术领域,尤其涉及一种二维动画的重定向方法、系统、装置、电子设备、以及计算机可读存储介质。

背景技术

重定向技术在动画、游戏等业务领域有着广泛的应用,利用重定向技术实现动画的迁移和复用,降低了动画制作过程中的人力成本,提高了业务开发效率。目前,重定向技术主要用于三维动画的重定向,对于二维动画而言,因其缺少严格的骨骼设置规范,无法建立来源角色骨架与目标角色骨架之间的映射关系,使得重定向难度增大。

因此,现有技术存在因无法建立来源角色骨架与目标角色骨架之间的映射关系,导致二维动画重定向难度大的技术问题。

发明内容

本申请提供了一种二维动画的重定向方法、系统、装置、电子设备、以及计算机可读存储介质,以解决现有技术存在的因无法建立来源角色骨架与目标角色骨架之间的映射关系,导致二维动画重定向难度大的技术问题。

第一方面,本申请实施例提供了一种二维动画的重定向方法,所述方法包括:获取第一角色对应的第一角色信息,所述第一角色信息包括第一角色骨架信息和第一角色动画信息,所述第一角色骨架信息至少包括所述第一角色对应的第一角色骨架中各骨骼的骨骼状态数据,所述第一角色动画信息至少包括所述第一角色骨架中各骨骼在动画时间轴上的骨骼属性数据;获取至少一个第二角色对应的第二角色骨架信息,所述第二角色骨架信息至少包括所述第二角色对应的第二角色骨架中各骨骼的骨骼状态数据;获取预设的标准骨架,根据所述第一角色骨架信息建立所述第一角色骨架与所述标准骨架之间的第一关联关系,根据所述第二角色骨架信息建立所述第二角色骨架与所述标准骨架之间的第二关联关系,并基于所述第一关联关系与所述第二关联关系建立所述第一角色骨架中各骨骼与所述第二角色骨架中各骨骼之间的映射关系,其中,所述标准骨架至少包括脊柱区域、头骨区域、手臂区域、以及腿部区域;根据所述映射关系,对所述第一角色动画信息进行重定向处理,生成所述第二角色对应的第二角色动画信息。

第二方面,本申请实施例提供了一种二维动画的重定向系统,所述系统应用于重定向工具,所述系统包括:角色导入模块、骨架匹配模块、动画重定向模块、角色导出模块、预览模块;所述角色导入模块,用于响应于针对第一角色和至少一个第二角色的导入操作,获取所述第一角色对应的第一角色信息,所述第一角色信息包括第一角色骨架信息和第一角色动画信息,所述第一角色骨架信息至少包括所述第一角色对应的第一角色骨架中各骨骼的骨骼状态数据,所述第一角色动画信息至少包括所述第一角色骨架中各骨骼在动画时间轴上的骨骼属性数据,并获取所述第二角色对应的第二角色骨架信息,所述第二角色骨架信息至少包括所述第二角色对应的第二角色骨架中各骨骼的骨骼状态数据;所述骨架匹配模块,用于获取预设的标准骨架,根据所述第一角色骨架信息建立所述第一角色骨架与所述标准骨架之间的第一关联关系,根据所述第二角色骨架信息建立所述第二角色骨架与所述标准骨架之间的第二关联关系,并基于所述第一关联关系与所述第二关联关系建立所述第一角色骨架中各骨骼与所述第二角色骨架中各骨骼之间的映射关系,其中,所述标准骨架至少包括脊柱区域、头骨区域、手臂区域、以及腿部区域;所述动画重定向模块,用于根据所述映射关系,对所述第一角色动画信息进行重定向处理,生成所述第二角色对应的第二角色动画信息;所述角色导出模块,用于合并所述第二角色骨架信息和所述第二角色动画信息,形成所述第二角色对应的第二角色信息,并导出所述重定向工具;所述预览模块,用于根据所述第二角色信息,在所述重定向工具的查看器中渲染所述第二角色的动作动画。

第三方面,本申请实施例提供了一种二维动画的重定向装置,所述装置包括:第一信息获取单元、第二信息获取单元、映射关系创建单元、重定向处理单元;所述第一信息获取单元,用于获取第一角色对应的第一角色信息,所述第一角色信息包括第一角色骨架信息和第一角色动画信息,所述第一角色骨架信息至少包括所述第一角色对应的第一角色骨架中各骨骼的骨骼状态数据,所述第一角色动画信息至少包括所述第一角色骨架中各骨骼在动画时间轴上的骨骼属性数据;所述第二信息获取单元,用于获取至少一个第二角色对应的第二角色骨架信息,所述第二角色骨架信息至少包括所述第二角色对应的第二角色骨架中各骨骼的骨骼状态数据;所述映射关系创建单元,用于获取预设的标准骨架,根据所述第一角色骨架信息建立所述第一角色骨架与所述标准骨架之间的第一关联关系,根据所述第二角色骨架信息建立所述第二角色骨架与所述标准骨架之间的第二关联关系,并基于所述第一关联关系与所述第二关联关系建立所述第一角色骨架中各骨骼与所述第二角色骨架中各骨骼之间的映射关系,其中,所述标准骨架至少包括脊柱区域、头骨区域、手臂区域、以及腿部区域;所述重定向处理单元,用于根据所述映射关系,对所述第一角色动画信息进行重定向处理,生成所述第二角色对应的第二角色动画信息。

第四方面,本申请实施例提供了一种电子设备,包括:存储器、处理器;所述存储器,用于存储一条或多条计算机指令;所述处理器,用于执行所述一条或多条计算机指令,以实现上述方法。

第五方面,本申请实施例提供了一种计算机可读存储介质,其上存储有一条或多条计算机指令,该指令被处理器执行时,执行上述方法。

与现有技术相比,本申请提供的二维动画的重定向方法,包括:获取第一角色(动画来源角色)对应的第一角色信息(第一角色骨架信息和第一角色动画信息)、以及至少一个第二角色(动画目标角色)对应的第二角色骨架信息,基于预设的标准骨架,根据第一角色骨架信息和第二角色骨架信息,建立第一角色骨架中各骨骼与第二角色骨架中各骨骼之间的映射关系,根据映射关系,对第一角色动画信息进行重定向处理,生成第二角色对应的第二角色动画信息。在该方法中,第一角色骨架和第二角色骨架为二维动画中的角色骨架,基于预设的标准骨架,使得原本因缺乏骨骼设置规范而无法建立映射关系的两个骨架之间建立了映射关系,实现了对二维动画的重定向。解决了现有技术存在的因无法建立来源角色骨架与目标角色骨架之间的映射关系,导致二维动画重定向难度大的技术问题。

附图说明

图1是本申请实施例提供的一种二维动画的重定向方法的应用系统图;

图2是本申请第一实施例提供的二维动画的重定向方法的流程图;

图3是本申请第二实施例提供的二维动画的重定向方法的流程示意图;

图4是本申请第二实施例提供的导入角色阶段的重定向工具的界面示意图;

图5是本申请第二实施例提供的一种角色化方法的示意图;

图6是本申请第二实施例提供的另一种角色化方法的示意图;

图7(a)是本申请第二实施例提供一种标准骨架的第一示意图;

图7(b)是本申请第二实施例提供一种标准骨架的第二示意图;

图7(c)是本申请第二实施例提供一种标准骨架的第三示意图;

图7(d)是本申请第二实施例提供一种标准骨架的第四示意图;

图8(a)是本申请第二实施例提供又一种标准骨架的第一示意图;

图8(b)是本申请第二实施例提供又一种标准骨架的第二示意图;

图8(c)是本申请第二实施例提供又一种标准骨架的第三示意图;

图8(d)是本申请第二实施例提供又一种标准骨架的第四示意图;

图9是本申请第二实施例提供的创建角色化节点的示意图;

图10(a)是本申请第二实施例提供的一种建立待角色化骨架对应的角色化模版的第一示意图;

图10(b)是本申请第二实施例提供的一种建立待角色化骨架对应的角色化模版的第二示意图;

图11是本申请第二实施例提供的又一种建立待角色化骨架对应的角色化模版的示意图;

图12是本申请第二实施例提供的检测标准骨架与待角色化骨架之间对应关系的示意图;

图13是本申请第二实施例提供的重定向处理阶段的重定向工具的界面示意图;

图14(a)是本申请第二实施例提供的重定向结果的第一对比示意图;

图14(b)是本申请第二实施例提供的重定向结果的第二对比示意图;

图15是本申请第三实施例提供的二维动画的重定向系统的示意图;

图16是本申请第三实施例提供的重定向工具对应的交互界面的示意图;

图17是本申请第四实施例提供的二维动画的重定向装置的示意图;

图18是本申请第五实施例提供的电子设备的结构示意图。

具体实施方式

在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。

为了便于理解,首先对本申请实施例中可能涉及的技术术语进行简单介绍。

1、动画重定向

动画重定向是一种将一个角色的动作应用于另一个角色的技术。在动画制作过程中,为每个角色制作动画需要消耗大量的时间和精力,如果想要让多个角色执行相同的动作,通过动画重定向技术,不需要重新制作动作,只需要将已有的动画复用到其他角色上即可。

2、角色骨架

在动画制作中,角色骨架是指一种结构,用于控制角色的运动和姿势,通常包括一组关节和骨骼元素,可以移动、旋转或缩放以产生所需的动作。对于复杂的角色,角色骨架即会非常详细和复杂,其中包括许多关节和骨骼元素。对于简单的角色,角色骨架就会相对简单。

3、Spine编辑器

Spine编辑器是一种用于创建和编辑2D骨骼动画的软件,允许开发者使用基于骨骼的动画技术,即使用骨架和插槽来控制角色和其他附件的动画。使用Spine编辑器,开发者可以创建和编辑角色的骨架,通过添加、移动、旋转和缩放骨骼来控制角色的形态和动作,还可以通过添加插槽来控制角色的装备、肢体等部分,并使用动画曲线来指定角色在不同时间点上的运动状态。

4、约束节点

约束节点(Constraint Node)表示一个节点或对象受到某种约束,可以用来限制或指导其他节点的运动和行为,以达到预期的效果。约束节点可以通过一些参数来定义其功能,如限制物体的运动方向、速度、位置等,这些参数可以由开发者自行定义,以便满足各种不同的需求。

5、IK约束

IK约束(Inverse Kinematics Constraint)是一种计算方法,用于控制物体的运动方式,通过约束物体的一个或多个部分来实现对物体运动方式的控制,以使其按照特定的方式进行移动。如,在动画制作中,使用IK约束创建逼真的关节运动。

6、变换约束

变换约束(Transform Constraint)是一种限制物体移动的方法,可以让物体只能在特定的方向或距离内移动,而不能超出这个范围。变换约束通常用于限制物体的旋转、平移和缩放等动作。

7、路径约束

路径约束(Path Constraint)是一种特殊的变换约束,可以让开发者沿着一条预先设定的路径来控制物体的运动。路径约束可以在场景中创建出更加流畅和精确的运动效果。如,在动画制作中,使用路径约束来让角色沿着一条曲线行走。

8、时间轴

时间轴(Timeline)是用来表示物体或节点的运动过程的一种工具,通常是一条从左到右的水平线,代表了时间的流逝。在时间轴上,每个点都对应着某一时刻的状态,而两点之间的连线则表示物体在这两个时刻之间的变化过程。通过在时间轴上添加关键帧(Keyframe),可以方便地控制约束节点在不同时间段内的表现。

9、前向动力学

前向动力学(Forward Kinematics,FK)是一种计算机械系统运动状态的方法,其基本思想是从机械系统的初始条件出发,通过逐步应用运动定律和约束条件,计算出机械系统在某一时刻的状态,如位置、速度和加速度等参数。具体的,在前向动力学中,需要先确定好机械系统的初始条件,然后根据运动方程,一步步推导出后续时刻的机械系统状态。

随着计算机技术在动画、游戏等物业领域的快速发展,重定向技术得到了广泛应用,比如目前3A级主机游戏常用的动作捕捉技术就是基于重定向的原理实现的,即,将真实人物的动作通过图像识别等技术生成动画信息,应用于虚拟角色,使得虚拟角色具有与真实人物同步的动作。

目前,重定向技术主要应用在建模工具中,如,Max和Maya,还应用在游戏引擎中,如Unity和Unreal,以使开发者能够将一个角色的动作信息复用到其他角色上,降低角色动作开发的人力成本,提高开发效率。动画重定向技术主要用于三维动画的重定向,由于三维动画中的角色骨骼参数处于三维坐标系下,自由度更高,且三维动画有着成熟的物理模拟系统,使得动画在不同角色间的迁移难度降低。而对于二维动画而言,因其缺少严格的骨骼设置规范,即,不同角色的角色骨架中骨骼层级和命名方式可能均不相同,从而无法建立来源角色骨架与目标角色骨架之间的映射关系,导致无法像三维动画一样,直接将来源角色的动画迁移至目标角色上,增加了重定向的难度。

因此,现有技术存在因无法建立来源角色骨架与目标角色骨架之间的映射关系,导致二维动画重定向难度大的技术问题。

有鉴于此,本申请提供了一种二维动画的重定向方法,该方法通过获取第一角色(动画来源角色)对应的第一角色信息(第一角色骨架信息和第一角色动画信息)、以及第二角色(动画目标角色)对应的第二角色骨架信息,并基于预设的标准骨架,根据第一角色骨架信息和第二角色骨架信息,建立了第一角色骨架中各骨骼与第二角色骨架中各骨骼之间的映射关系,从而实现了将第一角色动画信息重定向为第二角色对应的第二角色动画信息。解决了现有技术存在的因无法建立来源角色骨架与目标角色骨架之间的映射关系,导致二维动画重定向难度大的技术问题。

下面结合具体实施例及附图对本申请所述的二维动画的重定向方法、系统、装置、电子设备、以及计算机可读存储介质做进一步详细说明。

图1是本申请实施例提供的一种二维动画的重定向方法的应用系统图。如图1所示,本申请实施例提供的二维动画的重定向方法应用于二维虚拟世界中角色动作的重定向,该方法部署于服务端12,所述系统还包括用户端11。所述用户端11可以为智能手机、平板电脑、笔记本电脑、台式电脑、个人数字助理(Personal Digital Assistant,PDA)等任一设备,为动画开发人员所在的终端。所述服务端12可以是位于所述用户端11内部的服务模块、也可以是与所述用户端11连接的服务设备,还可以是与多个所述用户端11连接的服务器。所述服务端12能够在监听到动画开发人员基于用户端11执行的动画重定向操作后,应用本申请提供的方法,将来源角色的动画信息迁移到目标角色上,实现二维动画的重定向。

本申请第一实施例提供了一种二维动画的重定向方法,以实现二维动画中角色动作的重定向。

在本实施例提供的方法中,至少涉及两个二维虚拟角色,一个是在历史阶段已开发完成的虚拟角色,具有完整的角色骨架和角色动画,当然,该虚拟角色对应的角色动画可以是开发人员在历史阶段针对该虚拟角色制作的动画,也可以是开发人员在历史阶段采用本实施例提供的方法重定向生成的动画,另一个是当前正处于开发阶段的虚拟角色,开发人员已经为该虚拟角色制作了完整的角色骨架,但尚未制作角色动画。开发人员能够基于本实施例提供的重定向方法,将针对第一个虚拟角色制作的角色动画迁移到第二个虚拟角色上,使在不对第二个虚拟角色进行角色动画制作的情况下,第二个虚拟角色具有与第一个虚拟角色一致的角色动画。

图2是本实施例提供的二维动画的重定向方法的流程图。以下结合图2对本实施例提供的二维动画的重定向方法进行详细描述。以下描述所涉及的实施例用于解释本申请的技术方案,并不作为实际使用的限定。

如图2所示,本实施例提供的二维动画的重定向方法,包括如下步骤S210至步骤S240。

步骤S210,获取第一角色对应的第一角色信息,所述第一角色为动画来源角色,所述第一角色信息包括第一角色骨架信息和第一角色动画信息,所述第一角色骨架信息至少包括所述第一角色对应的第一角色骨架中各骨骼的骨骼状态数据,所述第一角色动画信息至少包括所述第一角色骨架中各骨骼在动画时间轴上的骨骼属性数据。

步骤S220,获取至少一个第二角色对应的第二角色骨架信息,所述第二角色为动画目标角色,所述第二角色骨架信息至少包括所述第二角色对应的第二角色骨架中各骨骼的骨骼状态数据。

步骤S230,获取预设的标准骨架,根据所述第一角色骨架信息建立所述第一角色骨架与所述标准骨架之间的第一关联关系,根据所述第二角色骨架信息建立所述第二角色骨架与所述标准骨架之间的第二关联关系,并基于所述第一关联关系与所述第二关联关系建立所述第一角色骨架中各骨骼与所述第二角色骨架中各骨骼之间的映射关系,其中,所述标准骨架至少包括脊柱区域、头骨区域、手臂区域、以及腿部区域。

步骤S240,根据所述映射关系,对所述第一角色动画信息进行重定向处理,生成所述第二角色对应的第二角色动画信息。

以下对上述二维动画的重定向方法中所涉及的步骤进行详细说明:

针对步骤S210:

在本步骤中,将获取第一角色对应的第一角色信息。

第一角色可以理解为动画来源角色,即,已具备完整骨架结构和动作动画的虚拟角色。

在一可选实现方式中,获取第一角色对应的第一角色信息是响应于针对第一角色的导入操作而实现的。第一角色可以是由Spine编辑器制作而成的虚拟角色,在Spine编辑器中制作了第一角色对应的第一角色骨架,以及第一角色对应的第一角色动画。将制作好的第一角色从Spine编辑器中导出后,将会以Spine Json文件的形式存储的磁盘中。响应于针对第一角色的导入操作,即会从磁盘中读取第一角色对应的角色信息,在本实施例中,将第一角色对应的角色信息定义为第一角色信息。

为了方便于进一步的处理,可以将第一角色信息拆分为第一角色对应的角色骨架信息和第一角色对应的角色动画信息,在本实施例中,将第一角色对应的角色骨架信息定义为第一角色骨架信息,将第一角色对应的角色动画信息定义为第一角色动画信息。

针对步骤S220:

在本步骤中,将获取至少一个第二角色对应的第二角色骨架信息。

第二角色可以理解为动画目标角色,即,具备完整骨架结构,但不具备动作动画的虚拟角色,该虚拟角色的动作动画将依赖于对第一角色对应的动作动画的重定向而实现,即,将第一角色动画迁移至第二角色,形成第二角色对应的第二角色动画。

在一可选实现方式中,获取第二角色对应的第二角色骨架信息是响应于针对第二角色的导入操作而实现的。第二角色可以是由Spine编辑器制作而成的待动画重定向的虚拟角色,在Spine编辑器中制作了第二角色对应的第二角色骨架。将制作好的第二角色骨架从Spine编辑器中导出后,将会以Spine Json文件的形式存储的磁盘中。响应于针对第二角色的导入操作,即会从磁盘中读取第二角色对应的角色骨架信息,在本实施例中,将第二角色对应的角色骨架信息定义为第二角色骨架信息。

在本实施例提供的方法中,Spine Json文件中存储的角色骨架信息和角色动画信息都具有固定的存储格式。对于角色骨架信息而言,Spine Json文件中的角色骨架信息将由Skeleton(骨架)列表、Bones(骨骼)列表、Skins(皮肤)列表、Slots(插槽)列表、Constraints(约束)列表等组成,每一个列表存储不同的角色骨架信息,比如:Bones列表存储骨骼数据,Slots列表存储附件(Attachment)和骨骼(Bone)之间的关系信息,Constraints列表存储约束节点信息。对于角色动画信息而言,Spine Json文件中的角色动画信息通常以动画时间轴的形式表示,由骨骼时间轴、槽时间轴、约束时间轴、绘制顺序时间轴等组成,每一个时间轴表示不同的关键帧属性信息在时间轴上的数值变化,比如:骨骼时间轴表示骨骼在时间轴上的旋转、位移、错切及缩放等属性的属性值变化,绘制顺序时间轴表示附件在动画时间轴上的绘制顺序变化。

针对步骤S230:

在本步骤中,将获取预设的标准骨架,根据所述第一角色骨架信息建立所述第一角色骨架与所述标准骨架之间的第一关联关系,根据所述第二角色骨架信息建立所述第二角色骨架与所述标准骨架之间的第二关联关系,并基于所述第一关联关系与所述第二关联关系建立所述第一角色骨架中各骨骼与所述第二角色骨架中各骨骼之间的映射关系,其中,所述标准骨架至少包括脊柱区域、头骨区域、手臂区域、以及腿部区域。

所述标准骨架是本实施例为了建立第一角色骨架与第二角色骨架之间的映射关系,而构建的一种标准化骨架结构。通过将第一角色骨架和第二角色骨架分别与标准骨架进行匹配,建立第一角色骨架与标准骨架的第一关联关系,以及第二角色骨架与标准骨架的第二关联关系,从而基于第一关联关系与第二关联关系,形成第一角色骨架与第二角色骨架之间的映射关系。

在本实施例提供的一种可选实现方式中,所述标准骨架至少包括脊柱区域、头骨区域、手臂区域、以及腿部区域;其中,所述脊柱区域包括骨盆节点和脊柱节点;所述头骨区域包括脖子节点和头部节点;所述手臂区域包括左肩膀节点、左上臂节点、左前臂节点、左手节点、右肩膀节点、右上臂节点、右前臂节点、右手节点;所述腿部区域包括左腿上部节点、左腿下部节点、左脚节点、右腿上部节点、右腿下部节点、右脚节点。

在本实施例提供的又一种可选实现方式中,为了满足更为复杂的角色骨架的动画重定向,在上述标准骨架的基础上增加了更为具体的骨骼设计,即,所述标准骨架还包括附加骨骼节点;其中,所述脊柱节点与所述脖子节点之间包括一条附加脊柱骨骼节点链,所述附加脊柱骨骼节点链中至少包括一个附加脊柱骨骼节点;所述脖子节点和所述头部节点之间包括一条附加脖子骨骼节点链,所述附加脖子骨骼节点链中至少包括一个附加脖子骨骼节点;所述左手节点和所述右手节点各包括五条附加手指骨骼节点链,每一条所述附加手指骨骼节点链中至少包括一个附加手指骨骼节点;所述左脚节点和所述右脚节点各包括五条附加脚指骨骼节点链,每一条所述附加脚指骨骼节点链中至少包括一个附加脚指骨骼节点。

在本实施例提供的一种可选实现方式中,建立第一角色骨架与第二角色骨架之间的映射关系,可以包括如下步骤S231至步骤S235:

步骤S231,根据所述第一角色骨架中各骨骼的骨骼状态数据,对所述第一角色骨架中各骨骼与所述标准骨架中各骨骼进行匹配,生成所述第一角色骨架对应的第一角色化模版,所述第一角色化模版中记录了所述第一角色骨架中各骨骼与所述标准骨架中各骨骼之间的匹配关系。

步骤S232,基于所述第一角色化模版,创建所述第一角色骨架对应的第一角色化节点,所述第一角色化节点用于表征所述第一角色骨架与所述标准骨架之间的所述第一关联关系。

步骤S233,根据所述第二角色骨架中各骨骼的骨骼状态数据,对所述第二角色骨架中各骨骼与所述标准骨架中各骨骼进行匹配,生成所述第二角色骨架对应的第二角色化模版,所述第二角色化模版中记录了所述第二角色骨架中各骨骼与所述标准骨架中各骨骼之间的匹配关系。

步骤S234,基于所述第二角色化模版,创建所述第二角色骨架对应的第二角色化节点,所述第二角色化节点用于表征所述第二角色骨架与所述标准骨架之间的所述第二关联关系。

步骤S235,根据所述第一角色化节点与所述第二角色化节点,确定所述第一角色骨架中各骨骼与所述第二角色骨架中各骨骼之间的映射关系。

所述角色化模版可以理解为存储角色骨架与标准骨架匹配关系的模版,在本实施例提供的方法中,将存储第一角色骨架与标准骨架匹配关系的角色化模版定义为第一角色化模版,将存储第二角色骨架与标准骨架匹配关系的角色化模版定义为第二角色化模版。

以下以第一角色化模版为例,对角色化模版的创建方法进行说明:

在一可选实现方式中,所述第一角色化模版中以键值对形式存储具有匹配关系的所述第一角色骨架中的骨骼和所述标准骨架中的骨骼,即,第一角色骨架与标准骨架中的匹配骨骼以键值对形式存储在第一角色化模版中。

在建立匹配关系之前,首先要创建出第一角色化模版,此时的第一角色化模版中还没有记录第一角色骨架与标准骨架的匹配关系,在本实施例中,将该第一角色化模版定义为第一原始角色化模版。

基于此,在一具体实现方式中,第一原始角色化模版的创建是响应于第一操作实现的,即,在根据第一角色骨架中各骨骼的骨骼状态数据,对第一角色骨架中各骨骼与标准骨架中各骨骼进行匹配,生成第一角色骨架对应的第一角色化模版的步骤之前,本实施例提供的方法还包括:响应于第一操作,创建所述第一角色骨架对应的第一原始角色化模版。

在一可选实现方式中,第一操作为对所述第一原始角色化模版的新建操作。响应于新建第一原始角色化模版,所述第一原始角色化模版中包括所述标准骨架中各骨骼对应的骨骼名称,所述标准骨架中各骨骼对应的骨骼名称为所述键值对的键名。即,在新建的第一原始角色化模版中记录有标准骨架中各骨骼的骨骼名称,且标准骨架中各骨骼对应的骨骼名称以键名存在于键值对中。将第一角色骨架中各骨骼的骨骼名称作为键值填入对应的键值对后,即完成了对第一角色化模版的初步构建。

在该实现方式中,生成第一角色骨架对应的第一角色化模版具体可以包括如下步骤S231-11至步骤S231-14:

步骤S231-11,响应于对所述第一原始角色化模版中所述标准骨架中待匹配骨骼对应的骨骼名称的第二操作,以及对所述第一角色骨架中待匹配骨骼的第三操作,根据所述第一角色骨架中待匹配骨骼的骨骼状态数据,将所述第一角色骨架中待匹配骨骼的骨骼名称作为键值记录在所述第一原始角色化模版中。

所述第二操作可以理解为对第一原始角色化模版中当前待匹配的键名(即,标准骨架中待匹配骨骼对应的骨骼名称)的选中操作,如,在角色化模版展示界面中对待匹配键名的点击操作。

所述第三操作可以理解为对第一角色骨架中待匹配骨骼的选中操作,如,在角色骨骼视窗内对第一角色骨架中待匹配骨骼的点击操作,或,在角色骨骼信息展示界面中对第一角色骨架中待匹配骨骼的骨骼名称的搜索及确认操作等。

对第一原始角色化模版中当前待匹配的键名执行选中操作后,对第一角色骨架中待匹配的骨骼执行选中操作,即可将选中的骨骼对应的骨骼名称作为键值,与键名组成键值对,实现标准骨架中待匹配骨骼与第一角色骨架中待匹配骨骼的配对。

步骤S231-12,响应于针对所述第一原始角色化模版的第四操作,判断所述第一原始角色化模版中各键值所对应的骨骼名称之间是否重复。

所述第四操作可以理解为对角色化模版的锁定操作,即,确定完成匹配的第一原始角色化模版为第一角色骨架对应的角色化模版,其中不包括匹配逻辑错误的键值对。

具体的,响应于所述第一原始角色化模版中各键值所对应的骨骼名称之间不重复,将所述第一原始角色化模版作为所述第一角色化模版;响应于所述第一原始角色化模版中各键值所对应的骨骼名称之间存在重复,重新进行匹配。

当第一原始角色化模版中各键值所对应的骨骼名称之间不存在重复时,说明在步骤S231-11中的匹配操作是准确的,那么,即可将第一原始角色化模版锁定为第一角色骨架对应的第一角色化模版。当第一原始角色化模版中各键值所对应的骨骼名称之间存在重复时,说明在步骤S231-11中的匹配操作是不完全准确的,因为在同一个角色骨架中,一个骨骼只能作为角色化模版中一个标准骨骼对应的角色骨骼,即,一个角色骨骼并不能同时对应两个或两个以上的标准骨骼,因此,就需要重新依据步骤S231-11中提供的方法至少对重复键值所对应的骨骼进行重新配对,直至第一原始角色化模版中各键值所对应的骨骼名称之间不存在重复为止。

步骤S231-13,将所述第一角色化模版存储在预设的角色化模版库中。

在一可选实现方式中,可以将锁定好的第一角色化模版存储在角色化模版库中,当再次需要对第一角色骨架进行角色化时,就可以直接从角色化模版库中调取存储的第一角色化模版,不需要再次进行重复性的匹配操作。

在另一可选实现方式中,第一操作为从预设的角色化模板库中对第一原始角色化模版的选中操作,即,复用已存储于角色化模版库中的第一原始角色化模版。响应于复用第一原始角色化模版,所述第一原始角色化模版中包括所述标准骨架中各骨骼对应的骨骼名称、以及第三角色对应的第三角色骨架中各骨骼对应的骨骼名称,所述第一原始角色化模版为所述角色化模板库中存储的多个角色化模版中的任意一个,所述第三角色为所述第一原始角色化模版对应的角色,所述标准骨架中各骨骼对应的骨骼名称为所述键值对的键名,所述第三角色骨架中各骨骼对应的骨骼名称为所述键值对的键值。

在该实现方式中,第一原始角色化模版是已经存储于角色化模版库中的现存角色化模版,是第三角色骨架对应的角色化模版,当第三角色骨架与第一角色骨架相似时,通过从角色化模版库中复用第三角色骨架对应的角色化模版,作为第一角色骨架对应的第一原始角色化模版,就可以减小第一角色化模版的创建复杂度。

由于第一原始角色化模版实际上是第三角色骨架对应的角色化模版,因此,第一原始角色化模版中记录有标准骨架中各骨骼对应的骨骼名称,还记录有第三角色骨架中各骨骼对应的骨骼名称,其中,标准骨架中各骨骼对应的骨骼名称以键名存在于键值对中,第三角色骨架中各骨骼对应的骨骼名称以键值存在于键值对中。将第一原始角色化模版从角色化模版库中调出后,在第一原始角色化模版的基础上建立标准骨架与第一角色骨架的匹配关系,即完成了对第一角色化模版的初步构建。

在该实现方式中,生成第一角色骨架对应的第一角色化模版具体可以包括如下步骤S231-21至步骤S231-25:

步骤S231-21,根据所述第一角色骨架中各骨骼的骨骼状态数据,确定所述第一角色骨架中与所述第一原始角色化模版中各键值所对应的骨骼名称相同的待匹配骨骼。

步骤S231-22,将所述待匹配骨骼与所述标准骨架中对应的骨骼进行匹配。

第一角色骨架中的骨骼名称与第一原始角色化模版中键值所对应的第三角色骨架中骨骼名称相同时,即可将第一角色骨架中的骨骼自动与键名对应的标准骨骼进行匹配。

步骤S231-23,响应于针对所述第一原始角色化模版的第四操作,判断所述第一原始角色化模版中各键值所对应的骨骼名称是否存在于所述第一角色骨架中。

所述第四操作可以理解为对角色化模版的锁定操作,即,确定完成匹配的第一原始角色化模版为第一角色骨架对应的角色化模版,其中不包括不存于在第一角色骨架中的骨骼名称。

具体的,响应于所述第一原始角色化模版中各键值所对应的骨骼名称存在于所述第一角色骨架中,将所述第一原始角色化模版作为所述第一角色化模版;响应于所述第一原始角色化模版中各键值所对应的骨骼名称中包括不存在于所述第一角色骨架中的骨骼名称,删除不存在于所述第一角色骨架中的骨骼名称所对应的键值。

当第一原始角色化模版中各键值所对应的骨骼名称均存在于第一角色骨架中,说明经过步骤S231-21和步骤S231-22匹配后的第一原始角色化模版是第一角色骨架对应的角色化模版,那么,即可将第一原始角色化模版锁定为第一角色骨架对应的第一角色化模版。当第一原始角色化模版中各键值所对应的骨骼名称中有不存在于第一角色骨架中的骨骼名称,说明当前第一原始角色化模版还没有完全对应于第一角色骨架,还需要进行进一步的匹配操作,直至第一原始角色化模版中各键值所对应的骨骼名称均存在于第一角色骨架中为止,在该实现方式中,将从第一原始角色化模版中删除不存在于第一角色骨架中的骨骼名称所对应的键值。

步骤S231-24,响应于对删除了键值的键名的第二操作,以及对所述第一角色骨架中待匹配骨骼的第三操作,根据所述第一角色骨架中待匹配骨骼的骨骼状态数据,将所述第一角色骨架中待匹配骨骼的骨骼名称作为键值记录在所述第一原始角色化模版中。

对于删除了键值的键值对而言,将采用新建模式中步骤S231-11所提供的匹配方法,为删除了键值的键名重新匹配新键值,该新键值为第一角色骨架中待匹配骨骼对应的骨骼名称,具体匹配方法在此不做赘述。

步骤S231-25,将所述第一角色化模版存储在所述角色化模版库中。

在一可选实现方式中,可以将锁定好的第一角色化模版重新存储在角色化模版库中,当再次需要对第一角色骨架进行角色化时,就可以直接从角色化模版库中调取该第一角色化模版,不需要进行重复性的匹配操作。存储在角色化模版库中的第一角色化模版也可以作为其他角色骨架对应的原始角色化模版,以生成其他角色骨架对应的角色化模版。

上述对第一角色骨架对应的第一角色化模版的创建方法进行了详细说明,第二角色骨架对应的第二角色化模版的创建方法基本相同,在此不再进行赘述。

创建了第一角色骨架对应的第一角色化模版以及第二角色骨架对应的第二角色化模版后,即可基于第一角色化模版和第二角色化模版建立第一角色化节点和第二角色化节点,即,将第一角色骨架和第二角色骨架角色化为具有相同骨架层级和命名方式的角色化节点,从而基于第一角色化节点和第二角色化节点获得第一角色骨架中各骨骼与第二角色骨架中各骨骼之间的映射关系。

针对步骤S240:

在本步骤中,将根据所述映射关系,对所述第一角色动画信息进行重定向处理,生成所述第二角色对应的第二角色动画信息。

在本实施例提供的一种可选实现方式中,第一角色动画信息包括所述第一角色骨架中各骨骼在动画时间轴上的骨骼属性数据,对应的,第一角色骨架信息包括所述第一角色骨架中各骨骼的骨骼状态数据,第二角色骨架信息包括所述第二角色骨架中各骨骼的骨骼状态数据。

在一具体实现方式中,第一角色骨架中各骨骼在动画时间轴上的骨骼属性数据包括:位移数据、缩放数据、错切数据、旋转数据。

所述位移数据是指第一角色骨架中各骨骼在动画时间轴上的位置变化量,所述缩放数据是指第一角色骨架中各骨骼在动画时间轴上的形状或尺寸变化量,所述错切数据是指第一角色骨架中各骨骼在动画时间轴上的平移量(即,骨骼相对于原点的位置发生变化,但不改变其与原点的距离),所述旋转数据是指第一角色骨架中各骨骼在动画时间轴上的旋转角度变化量。

在本实施例中,将针对动画时间轴上的骨骼属性数据的重定向定义为骨骼时间轴重定向,即,根据第一角色骨架与第二角色骨架的映射关系,将第一角色骨架中各骨骼在动画时间轴上的位移数据、缩放数据、错切数据、旋转数据,映射给第二角色骨架。

在一可选实现方式中,实现骨骼时间轴重定向可以包括如下步骤S241-1至步骤S241-4:

步骤S241-1,复制所述第一角色骨架中各骨骼在动画时间轴上的所述位移数据,根据所述映射关系,将所述位移数据映射给所述第二角色骨架中对应的骨骼,作为所述第二角色骨架中各骨骼在动画时间轴上的位移数据。

步骤S241-2,复制所述第一角色骨架中各骨骼在动画时间轴上的所述缩放数据,根据所述映射关系,将所述缩放数据映射给所述第二角色骨架中对应的骨骼,作为所述第二角色骨架中各骨骼在动画时间轴上的缩放数据。

步骤S241-3,复制所述第一角色骨架中各骨骼在动画时间轴上的所述错切数据,根据所述映射关系,将所述错切数据映射给所述第二角色骨架中对应的骨骼,作为所述第二角色骨架中各骨骼在动画时间轴上的错切数据。

步骤S241-4,基于前向动力学,根据所述第一角色骨架中各骨骼在动画时间轴上的所述旋转数据,以及所述第一角色骨架信息和所述第二角色骨架信息,计算所述旋转数据对应的映射旋转数据,根据所述映射关系,将所述映射旋转数据映射给所述第二角色骨架中对应的骨骼,作为所述第二角色骨架中各骨骼在动画时间轴上的旋转数据。

骨骼时间轴重定向中的四个骨骼属性数据中,位移数据、缩放数据、和错切数据可以采用直接复制的方式映射给对应的骨骼,旋转数据由于受到绑定姿态的影响,不能采用直接复制的方式。

在一具体实现方式中,基于前向动力学,根据第一角色骨架中各骨骼的绑定姿态,以及第二角色骨架中各骨骼的绑定姿态,将第一角色骨架中各骨骼对应的旋转数据计算为第二角色骨架中各骨骼对应的旋转数据。

在本实施例提供的又一种可选实现方式中,第一角色动画信息还包括所述第一角色骨架中各插槽在动画时间轴上的插槽属性数据,对应的,第一角色骨架信息还包括所述第一角色骨架中各插槽对应的插槽状态数据,第二角色骨架信息至少还包括所述第二角色骨架中各插槽对应的插槽状态数据。

由于插槽与骨骼具有关联关系,插槽列表中记录了插槽的名称、插槽所属骨骼的名称,因此,在对插槽状态数据进行重定向前,还可以根据第一角色骨架中各骨骼与第二角色骨架中各骨骼之间的映射关系,建立第一角色骨架中各插槽与第二角色骨架中各插槽之间的映射关系,即,在建立第一角色骨架中各骨骼与第二角色骨架中各骨骼之间的映射关系的步骤之后,本实施例提供的方法还包括:根据所述第一角色骨架信息和所述第二角色骨架信息,以及所述第一角色骨架中各骨骼与所述第二角色骨架中各骨骼之间的映射关系,建立所述第一角色骨架中各插槽与所述第二角色骨架中各插槽之间的映射关系。

在一具体实现方式中,第一角色骨架中各插槽在动画时间轴上的插槽属性数据包括:插槽内附件对象的名称数据、颜色数据。在本实施例中,将针对动画时间轴上的插槽内附件对象的名称数据、颜色数据的重定向定义为槽时间轴重定向,即,根据第一角色骨架中各插槽与第二角色骨架中各插槽的映射关系,将第一角色骨架中各插槽在动画时间轴上的附件名称数据和附件颜色数据映射给第二角色骨架中对应的插槽。

在另一具体实现方式中,第一角色骨架中各插槽在动画时间轴上的插槽属性数据还包括:插槽内附件对象的绘制顺序数据、以及插槽的偏移量。在本实施例中,将针对动画时间轴上的插槽内附件对象的绘制顺序数据、插槽的偏移量的重定向定义为绘制顺序时间轴重定向,即,根据第一角色骨架中各插槽与第二角色骨架中各插槽的映射关系,将第一角色骨架中各插槽在动画时间轴上的附件绘制顺序数据和插槽偏移量数据映射给第二角色骨架中对应的插槽。

在一可选实现方式中,实现槽时间轴重定向和绘制顺序时间轴重定向可以包括如下步骤S242:

步骤S242,复制所述第一角色骨架中各插槽在动画时间轴上的所述插槽属性数据,根据所述映射关系,将所述插槽属性数据映射给所述第二角色骨架中对应的插槽,作为所述第二角色骨架中各插槽在动画时间轴上的插槽属性数据。

槽时间轴重定向中的附件名称数据、附件颜色数据,绘制顺序时间轴重定向中的附件绘制顺序数据、插槽偏移量数据,都可以采用直接复制的方式映射给第二角色骨架中对应的插槽。

在本实施例提供的另一种可选实现方式中,第一角色动画信息还包括所述第一角色骨架中各约束节点在动画时间轴上的约束节点属性数据,对应的,第一角色骨架信息至少还包括所述第一角色骨架中各约束节点对应的约束节点状态数据,第二角色骨架信息至少还包括所述第二角色骨架中各约束节点对应的约束节点状态数据。

在一具体实现方式中,第一角色骨架中各约束节点在动画时间轴上的约束节点属性数据包括:IK约束节点属性数据、变换约束节点属性数据、路径约束节点属性数据。

在本实施例中,将针对动画时间轴上的约束节点属性数据的重定向定义为约束时间轴重定向,即,根据第一角色骨架与第二角色骨架的映射关系,将第一角色骨架中各约束节点在动画时间轴上的属性数据,映射给第二角色骨架中对应的约束节点。

在一可选实现方式中,实现约束时间轴重定向可以包括如下步骤S243:

步骤S243,复制所述第一角色骨架中各约束节点在动画时间轴上的所述约束节点属性数据,根据所述映射关系,将所述约束节点属性数据映射给所述第二角色骨架中对应的约束节点,作为所述第二角色骨架中各约束节点在动画时间轴上的约束节点属性数据。

约束时间轴重定向中的IK约束节点属性数据、变换约束节点属性数据、路径约束节点属性数据,都可以采用直接复制的方式映射给第二角色骨架中对应的约束节点。

通过上述步骤S210至步骤S240实现了将第一角色对应的第一角色动画信息重定向为第二角色对应的第二角色动画信息。在本实施例提供的一种可选实现方式中,本实施例提供的方法还包括如下步骤S250至步骤S260:

步骤S250,合并所述第二角色骨架信息和所述第二角色动画信息,形成所述第二角色对应的第二角色信息。

步骤S260,根据所述第二角色信息,渲染所述第二角色的动作动画。

重定向获得了第二角色对应的第二角色动画信息后,即可形成由第二角色骨架信息和第二角色动画信息组成的完整信息,即,第二角色对应的第二角色信息。

基于第二角色信息可以在任意应用中渲染出第二角色的动作动画,比如,在骨架查看器Skeleton Viewer中渲染出第二角色的动作动画,以便于开发人员对重定向效果进行查看,再比如,在Spine编辑器中渲染第二角色的动作动画,以便于开发人员在Spine编辑器中对第二角色进行进一步完善,再比如,在游戏引擎中渲染第二角色的角色动画,以给客户展示包括第二角色的应用。

上述第一实施例提供了一种二维动画的重定向方法,该方法通过获取第一角色(动画来源角色)对应的第一角色信息(第一角色骨架信息和第一角色动画信息)、以及第二角色(动画目标角色)对应的第二角色骨架信息,并基于预设的标准骨架,根据第一角色骨架信息和第二角色骨架信息,建立了第一角色骨架中各骨骼与第二角色骨架中各骨骼之间的映射关系,从而实现了将第一角色动画信息重定向为第二角色对应的第二角色动画信息。解决了现有技术存在的因无法建立来源角色骨架与目标角色骨架之间的映射关系,导致二维动画重定向难度大的技术问题。

需要说明的是,第一实施例中的示例仅是为了对本申请所述的方法做出解释,并不作为实际使用的限定,本申请提供的二维动画的重定向方法包括但不限于第一实施例所述的方法。

本申请第二实施例提供了一种二维动画的重定向方法,在本实施例中将以具体的示例对本申请第一实施例所述的方法进行详细说明。

在本实施例中,该重定向方法基于自定义的重定向工具实现,该工具实现了针对Spine编辑器的一套完整的二维骨架动画的重定向流程。该工具可以作为Spine编辑器下游的独立工具,利用Spine编辑器的输出文件以及运行库实现对基于Spine编辑器制作的二维动画的重定向。在本实施例提供的一种可选实现方式中,将该重定向工具定义为SpineLibrary。

在本实施例提供的方法中,以角色A表示第一角色(即,动画来源角色),以角色B表示第二角色(即,动画目标角色),对如何使用该工具实现将角色A对应的角色动画重定向至角色B进行详细说明。

图3是本实施例提供的二维动画的重定向方法的流程示意图。以下结合图3对本实施例提供的二维动画的重定向方法进行详细描述。以下描述所涉及的实施例用于解释本申请的技术方案,并不作为实际使用的限定。

如图3所示,基于重定向工具Spine Library实现二维动画的重定向可以包括如下步骤S310至步骤S340。

步骤S310,导入角色A和角色B。

在本实施例提供的一种可选实现方式中,角色A与角色B都是基于Spine编辑器构建的二维角色,角色A可以理解为历史阶段已构建的虚拟角色,具有完整的角色定义,不仅构建了角色A的角色骨架还构建了角色A的角色动画,角色B可以理解为当前阶段正构建的虚拟角色,仅构建了角色B对应的角色骨架。由于在对角色B的策划设计中,角色B的角色动画与角色A的角色动画一致,因此,不需要开发人员针对角色B再次进行角色动画的制作,可以通过动画重定向方法,将角色A的角色动画迁移到角色B上,实现角色A的角色动画的复用。基于此,本步骤所述的导入角色包括导入通过Spine编辑器制作的角色A的角色骨架A、角色A的角色动画A、以及角色B的角色骨架B。

在一具体实现方式中,在Spine编辑器中制作的角色骨架和角色动画会以SpineJson文件的形式存储在磁盘中。因此,导入角色通常包括如下步骤S311至步骤S313:

步骤S311,从磁盘中读取角色A对应的Spine Json文件和角色B对应的Spine Json文件,并反序列化为重定向工具中的实例。

步骤S312,将角色A对应的Spine Json文件中存储的角色信息拆分为角色骨架信息和角色动画信息两个部分。

步骤S313,根据角色A对应的角色骨架信息A和角色B对应的角色骨架信息B,将角色A对应的角色骨架A和角色B对应的角色骨架B渲染在重定向工具的视窗内。

图4本实施例提供的导入角色阶段的重定向工具的界面示意图。

如图4示,重定向工具界面中包括第一区域41、第二区域42、第三区域43。第一区域41为角色骨架信息显示区域,将角色导入重定向工具中后,即会在第一区域41中显示导入角色的角色骨架信息,如图4所示,第一区域41中显示有角色A对应的角色骨架信息A和角色B对应的角色骨架信息B。第二区域42为可视化区域,即,视窗,在第二区域42中将显示选中的角色骨架,如图4所示,开发人员在第一区域41中选中角色骨架信息A,因此,在第二区域42中显示角色骨架A。第三区域43为角色化面板区域,在该区域中显示有角色化模版,角色化模版的具体定义将在步骤S320中进行详细说明。

在一具体实现方式中,存储在Spine Json文件中的角色信息包括角色骨架信息和角色动画信息两个部分。以下对Spine Json文件中角色骨架信息和角色动画信息的存储方式进行具体说明。

Spine Json文件中角色骨架信息的存储方式:

角色骨架信息是用于在Spine编辑器外部(如,重定向工具、游戏引擎等)还原骨架及网格的信息,在Spine Json文件中,角色骨架信息由Skeleton(骨架)列表、Bones(骨骼)列表、Skins(皮肤)列表、Slots(插槽)列表、Constraints(约束)列表组成,其中,Skeleton列表是存储骨架元数据的列表,包括了骨架的碰撞盒位置和大小。Bones列表是存储骨骼数据的列表,是以广度优先的顺序遍历骨架上的骨骼节点所组成的,即父骨骼总是排在子骨骼前,列表中的每个元素即为一个字典,包含了创建骨骼所需要的全部信息,比如,骨骼的父节骨骼、骨骼的位置、骨骼的朝向等。Skins列表是存储蒙皮信息的列表,包含了对于网格和纹理映射顶点的定义,决定了角色的显示外观。Slots列表是存储附件(Attachment)和骨骼(Bone)之间关系信息的列表,列表中的每一个元素都是一个字典,至少包含了插槽的名称、插槽所属骨骼的名称以及插槽中的附件名称,在视窗中进行角色骨架渲染时,会按照Slots列表中的顺序对附件进行顺序绘制。Constraints列表是存储约束节点信息的列表,主要分为IK约束,变换约束和路径约束,列表中记录的是在Spine编辑器中还原约束所需要的属性。

Spine Json文件中角色动画信息的存储方式:

角色动画信息是用于在Spine编辑器外部(如,重定向工具、游戏引擎等)还原角色动作的信息,被存放于Animations(动画)列表中,将角色动画拆分为多个动画片段,列表中的每个元素存储一个动画片段对应的角色动画信息。

由于每一个动画片段都是一个随时间变化的连续帧序列,因此,在Spine Json文件中,每一个动画片段对应的角色动画信息均以动画时间轴的形式表示。

在一具体实现方式中,动画时间轴可以分为两个部分,其一是关键帧信息,其二是关键帧属性信息。关键帧信息主要包括关键帧在动画时间轴上的位置以及关键帧的插值方式,关键帧属性信息主要包括关键帧各属性的属性值。动画重定向的核心在于保留关键帧信息而重定向关键帧属性信息,即,保留角色A对应的角色动画信息中关键帧的位置和插值方式,重新计算关键帧各属性的属性值,基于计算获得的关键帧各属性的属性值和保留的关键帧位置和插值方式,生成新的角色动画信息,应用于角色B,实现动画重定向。

在另一具体实现方式中,针对关键帧属性信息,将每一个动画片段中记录的动画时间轴分为四种类型:其一是骨骼时间轴,用于存储角色动画信息中的骨骼动画信息,包括了骨骼在时间轴上的旋转、位移、错切及缩放等属性的属性值;其二是槽时间轴,用于存储角色动画信息中的插槽动画信息,包括插槽内附件在时间轴上的名称和颜色等属性的属性值;其三是约束时间轴,用于存储角色动画信息中的约束动画信息,即,约束节点的属性在动画时间轴上的属性值;其四是绘制顺序时间轴,用于存储角色动画信息中的绘制顺序信息,即,附件在动画时间轴上的绘制顺序。

当重定向工具从磁盘中读取角色的Spine Json文件后,即会根据Spine Json文件中的上述信息依次在视窗内渲染骨骼节点、插槽节点以及附件节点等,实现对角色的实例化处理。

步骤S320,对角色骨架A以及角色骨架B进行角色化处理,生成角色骨架A对应的角色化节点A、以及角色骨架B对应的角色化节点B。

由于二维动画中,角色骨架没有统一的骨骼层级和命名规范,因此,在进行动画重定向前,首先需要建立两套骨架之间的映射关系,即,建立角色骨架A与角色骨架B之间的映射关系。在本实施例中,将建立骨架间映射关系的过程定义为角色化,具体的,将角色骨架A角色化处理为角色化节点A,将角色骨架B角色化处理为角色化节点B,通过角色化节点A与角色化节点B即可获得角色骨架A与角色骨架B之间的映射关系。

在本实施例中,提供了两种建立骨架间映射关系的方法,以下对这两种方法进行分别说明:

方法一:建立角色骨架A与标准骨架之间的对应关系,并建立角色骨架B与标准骨架之间的对应关系,基于角色骨架A与标准骨架之间的对应关系和角色骨架B与标准骨架之间的对应关系,确定角色骨架A与角色骨架B之间的映射关系。

针对该方法,会提前构建一个标准骨架,将每一个待角色化骨架与该标准骨架进行匹配,建立待角色化骨架与标准骨架之间的对应关系,这样即可根据每一个待角色化骨架与标准骨架之间的对应关系,确定出任意待角色化骨架之间的映射关系。

图5是本实施例提供的一种角色化方法的示意图。

如图5所示,需要针对角色1、角色2、角色3、角色4、角色5进行动画重定向,那么,即需要建立角色1对应的角色骨架1、角色2对应的角色骨架2、角色3对应的角色骨架3、角色4对应的角色骨架4、角色5对应的角色骨架5之间的映射关系。根据上述方法,依次建立角色骨架1与标准骨架X之间的对应关系,角色骨架2与标准骨架X之间的对应关系,角色骨架3与标准骨架X之间的对应关系,角色骨架4与标准骨架X之间的对应关系,角色骨架5与标准骨架X之间的对应关系。如此,即可根据上述对应关系,确定角色骨架1、角色骨架2、角色骨架3、角色骨架4、角色骨架5中任意两个或多个骨架之间的映射关系。

方法二:对角色骨架A和角色骨架B进行直接匹配,建立角色骨架A与角色骨架B之间的映射关系。

针对该方法,无需建立标准骨架,通过角色骨架A与角色骨架B之间的骨架匹配,建立角色骨架A中各骨骼与角色骨架B中各骨骼之间的对应关系。

图6是本实施例提供的另一种角色化方法的示意图。

如图6所示,需要针对角色1、角色2、角色3、角色4、角色5进行动画重定向,那么,即需要建立角色1对应的角色骨架1、角色2对应的角色骨架2、角色3对应的角色骨架3、角色4对应的角色骨架4、角色5对应的角色骨架5之间的映射关系,根据上述方法,依次建立角色骨架1与角色骨架2之间的映射关系,角色骨架1与标准骨架3之间的映射关系,角色骨架1与标准骨架4之间的映射关系,角色骨架1与标准骨架5之间的映射关系,角色骨架2与角色骨架3之间的映射关系,角色骨架2与标准骨架4之间的映射关系,角色骨架2与标准骨架5之间的映射关系,角色骨架3与标准骨架4之间的映射关系,角色骨架3与角色骨架5之间的映射关系,角色骨架4与标准骨架5之间的映射关系。

根据图5和图6所示的角色化方法可知:当待角色化骨架只有2套时,图5所示的方法一需要进行两次骨架匹配,而图6所示的方法二仅需进行一次骨架匹配,但当待角色化骨架有多套(n套)时,方法一中的骨架匹配次数以线性方式增长,即,需要匹配n次即可确定n套骨架中任意骨架间的映射关系,而方法二中的骨架匹配次数以近似于阶乘方式增长,即,需要匹配C(n,2)次才可确定n套骨架中任意骨架间的映射关系。因此,图5所示的方法一是一种优选的角色化方法。

以下的示例建立在方法一的基础上,但在实际应用中,并不能排除对方法二的使用。

在本实施例提供的一种可选实现方式中,将标准骨架设置为包括脊柱(Spine)区域、头骨(Skull)区域、手臂(Arms)区域、大腿(Legs)区域四个部分的骨架结构。

图7是本实施例提供一种标准骨架的示意图。

如图7(a)所示,标准骨架70包括脊柱区域71、头骨区域72、左侧手臂区域731、右侧手臂区域732、左侧大腿区域741、右侧大腿区域742。

如图7(b)所示,脊柱区域71进一步包括骨盆(Hips)711和脊柱(Spine)712,其中,脊柱712是骨盆711的子骨骼。头骨区域72进一步包括脖子(Neck)721和头部(Head)722。

如图7(c)所示,左侧手臂区域731包括左肩膀(LeftShoulder)7311、左上臂(LeftArm)7312、左前臂(LeftForeArm)7313、左手(LeftHand)7314;右侧手臂区域732包括右肩膀(RightShoulder)7321、右上臂(RightArm)7322、右前臂(RightForeArm)7323、右手(RightHand)7324,其中,左肩膀7311和右肩膀7321是脊柱712的子骨骼。

如图7(d)所示,左侧大腿区域741包括左大腿上部(LeftUpLeg)7411、左大腿下部(LeftLeg)7412,左脚(LeftFoot)7413;右侧大腿区域742包括右大腿上部(RightUpLeg)7421、右大腿下部(RightLeg)7422,右脚(RightFoot)7423,其中,左大腿上部7411和右大腿上部7421是骨盆711的子骨骼。

在本实施例提供的另一种可选实现方式中,为了满足更为复杂的角色骨架的动画重定向(比如,为了实现更自然的效果,复杂角色的脊椎和脖子可能具有动画效果,手指和脚趾也可能具有动画传递需求),在上述标准骨架的基础上增加了更为具体的骨骼设计。比如:在脊柱区域、脖子区域、手掌区域、脚部区域等增加由额外骨骼组成的骨骼链。

图8是本实施例提供又一种标准骨架的示意图,在图7所示的标准骨架70的基础上,在脊柱区域、脖子区域、手掌区域、脚部区域增加额外的骨骼。

如图8(a)所述,脊柱区域的额外骨骼组成一条脊柱骨骼链81,脊柱骨骼链81的起始端骨骼为脊柱712,末端骨骼为脖子721。在一具体实现方式中,脊柱骨骼链81的长度为9个,即,由9个额外的脊柱骨骼组成,包括脊柱1(Spine1)811、脊柱2(Spine2)812、脊柱3(Spine3)813、脊柱4(Spine4)814、脊柱5(Spine5)815、脊柱6(Spine6)816、脊柱7(Spine7)817、脊柱8(Spine8)818、脊柱9(Spine9)819。

如图8(b)所述,脖子区域的额外骨骼组成一条脖子骨骼链82,脖子骨骼链82的起始端骨骼为脖子721,末端骨骼为头部722。在一具体实现方式中,脖子骨骼链82的长度为9个,即,由9个额外的脖子骨骼组成,包括脖子1(Neck1)821、脖子2(Neck2)822、脖子3(Neck3)823、脖子4(Neck4)824、脖子5(Neck5)825、脖子6(Neck6)826、脖子7(Neck7)827、脖子8(Neck8)828、脖子9(Neck9)829。

如图8(c)所述,手掌区域的额外骨骼组成五条骨骼链,分别为拇指骨骼链831、食指骨骼链832、中指骨骼链833、无名指骨骼链834、小指骨骼链835,左手与右手具有类似的结构。拇指骨骼链831、食指骨骼链832、中指骨骼链833、无名指骨骼链834、小指骨骼链835的起始端骨骼均为手掌骨骼(左手7314或右手7324)。在一具体实现方式中,每一条骨骼链的长度均为4个,即,由4个额外的手指骨骼组成,其中,拇指骨骼链831包括拇指1(HandThumb1)、拇指2(HandThumb2)、拇指3(HandThumb3)、拇指4(HandThumb4);食指骨骼链832包括食指1(HandIndex1)、食指2(HandIndex2)、食指3(HandIndex3)、食指4(HandIndex4);中指骨骼链833包括中指1(HandMiddle1)、中指2(HandMiddle2)、中指3(HandMiddle3)、中指4(HandMiddle4);无名指骨骼链834包括无名指1(HandRing1)、无名指2(HandRing2)、无名指3(HandRing3)、无名指4(HandRing4);小指骨骼链835包括小指1(HandPinky1)、小指2(HandPinky2)、小指3(HandPinky3)、小指4(HandPinky4)。

如图8(d)所述,脚部区域的额外骨骼组成五条骨骼链,分别为脚拇指骨骼链841、脚食指骨骼链842、脚中指骨骼链843、脚无名指骨骼链844、脚小指骨骼链845,左脚与右脚具有类似的结构。脚拇指骨骼链841、脚食指骨骼链842、脚中指骨骼链843、脚无名指骨骼链844、脚小指骨骼链845的起始端骨骼均为脚部骨骼(左脚7413或右脚7423)。在一具体实现方式中,每一条骨骼链的长度均为4个,即,由4个额外的脚指骨骼组成,其中,脚拇指骨骼链841包括脚拇指1(FootThumb1)、脚拇指2(FootThumb2)、脚拇指3(FootThumb3)、脚拇指4(FootThumb4);脚食指骨骼链842包括脚食指1(FootIndex1)、脚食指2(FootIndex2)、脚食指3(FootIndex3)、脚食指4(FootIndex4);脚中指骨骼链843包括脚中指1(FootMiddle1)、脚中指2(FootMiddle2)、脚中指3(FootMiddle3)、脚中指4(FootMiddle4);脚无名指骨骼链844包括脚无名指1(FootRing1)、脚无名指2(FootRing2)、脚无名指3(FootRing3)、脚无名指4(FootRing4);脚小指骨骼链845包括脚小指1(FootPinky1)、脚小指2(FootPinky2)、脚小指3(FootPinky3)、脚小指4(FootPinky4)。

当然,本实施例中仅以部分示例对如何在标准骨架中增加额外骨骼进行了举例,但在实际应用中,并不能排除在标准骨架的其他区域(比如,手臂区域、腿部区域等),增加额外骨骼的可能性。

除此以外,角色所拥有的其他额外骨骼可以归入辅助区域(Auxiliary)中,辅助区域为道具或额外的肢体重定向提供了标准模板,辅助区域的标准化骨骼以辅助区域1(Auxiliary1)、辅助区域2(Auxiliary2)、辅助区域3(Auxiliary3)……进行命名。

确定了标准骨架后,即可利用重定向工具建立标准骨架与待角色化骨架之间的对应关系,如,建立标准骨架与角色A对应的角色骨架A之间的对应关系,以及标准骨架与角色B对应的角色骨架B之间的对应关系。

在本实施例提供的一种可选实现方式中,建立标准骨架与待角色化骨架之间的对应关系,即创建待角色化骨架对应的角色化节点。

图9是本实施例提供的创建角色化节点的示意图。

如图9所示,角色A对应的角色骨架911与角色B对应的角色骨架921之间的骨架层级存在明显差异,无法直接建立映射关系。通过本实施例提供的方法,将角色骨架911与标准骨架进行匹配,形成角色骨架911对应的角色化节点912,将角色骨架921与标准骨架进行匹配,形成角色骨架921对应的角色化节点922,角色化节点912与角色化节点922之间具有统一的骨骼层级,因此,角色化节点912与角色化节点922之间存在对应关系。基于角色化节点912与角色化节点922之间的对应关系,即可获得角色骨架911与角色骨架921之间的映射关系。

在本实施例提供的一种可选实现方式中,标准骨架与待角色化骨架之间的对应关系被存储为角色化模版,角色化模版存储在XML文件中,角色化模版中的数据结构为键值对形式,如表1所示:

表1角色化模版

如表1所示,每一行中的键名为标准骨架中的骨骼名称,键值为待角色化骨架(如,角色骨架A、角色骨架B)中的骨骼名称,如此即形成了标准骨架与待角色化骨架之间的对应关系。

在本实施例提供的一种可选实现方式中,存储标准骨架与待角色化骨架之间的对应关系可以通过如下两种方式:其一是新建角色化模版,新建的角色化模版中仅记录有键名(即,标准骨架的骨骼名称),可以通过为每一个键名补充对应的键值(即,待角色化骨架的骨骼名称)的方式,生成待角色化骨架对应的角色化模版;其二是从角色化模版库中调取已建立的角色化模版,即,复用角色化模版,该角色化模版中记录有键名和键值,键值所指示的角色骨架并非当前的待角色化骨架,二者可能存在一定的相似度,可以通过修改键值(即,将角色化模版中当前待角色化骨架不存在的骨骼名称删除,重新填入当前待角色化骨架对应的骨骼名称)的方式,形成当前待角色化骨架对应的角色化模版。

以下对上述两种角色化模版的生成方式进行具体说明:

方式一:新建角色化模版。

在为待角色化骨架(即,角色骨架A和角色骨架B)创建角色化节点时,由于待角色化骨架缺少必要的骨骼层级和命名规范,需要开发人员手动将待角色化骨架的骨骼名称填入角色化模板对应的键名处,完成后的角色化模版也可以存入角色化模版库中备用。

图10是本实施例提供的一种建立待角色化骨架对应的角色化模版的示意图。

如图10(a)所示,重定向工具界面中包括第一区域101、第二区域102、第三区域103。第一区域101为骨架信息显示区域,如图10所示,第一区域101中包括角色骨架信息A和角色骨架信息B。第二区域102为可视化区域,即,视窗,在第二区域102中将显示选中的骨架,如图10(a)所示,开发人员在第一区域101中选中角色骨架信息A,因此,在第二区域102中显示角色骨架A。第三区域103为角色化面板区域,该区域至少包括一角色化模版新建按钮1031和一角色化模版显示区域1032,响应于开发人员点击角色化模版新建按钮1031,即会新建一角色化模版,并在角色化模版显示区域1032中显示新建的角色化模版中的每一个键值对,如图10(a)所示,角色化模版显示区域1032中显示的新建角色化模版中的键名包括Hips、Spine、Neck、Head、LeftLeg等,对应的键值均为Undefined(未填入)。

响应于开发人员在角色化模版显示区域1032中指定当前待匹配的骨骼,如,开发人员指定“LeftLeg”,开发人员在第二区域102显示的角色骨架A上选中骨骼1,即可将骨骼1作为键名与“LeftLeg”进行绑定,形成“LeftLeg<骨骼1>”的键值对。在一具体实现方式中,选中的骨骼以高亮进行显示,已绑定的键值对前显示已绑定标记,如,将键值对前的圆点变为绿色等。

在本实施例中,还可以采用多种可选的实现方式对上述绑定操作进行优化,比如:可以通过在第一区域101内搜索待绑定的骨骼,快速进行骨骼定位,再比如:可以通过在第一区域101内展开骨架信息列表快速找到待绑定的骨骼,再比如:可以通过点击角色化模版显示区域1032内指定的骨骼,快递定位到骨架信息列表中待绑定的骨骼,等。

如图10(b)所示,重定向工具界面中包括第一区域101、第二区域102、第三区域103。第一区域101为骨架信息显示区域,如图10所示,第一区域101中包括角色骨架信息A和角色骨架信息B。第二区域102为可视化区域,即,视窗,在第二区域102中将显示选中的骨架,如图10(b)所示,开发人员在第一区域101中选中角色骨架信息B,因此,在第二区域102中显示角色骨架B。第三区域103为角色化面板区域,该区域至少包括一角色化模版新建按钮1031和一角色化模版显示区域1032,响应于开发人员点击角色化模版新建按钮1031,即会新建一角色化模版,并在角色化模版显示区域1032中显示新建的角色化模版中的每一个键值对,如图10(b)所示,角色化模版显示区域1032中显示的新建角色化模版中的键名包括Hips、Spine、Neck、Head、LeftLeg等,对应的键值均为Undefined(未填入)。

响应于开发人员在角色化模版显示区域1032中指定当前待匹配的骨骼,如,开发人员指定“LeftLeg”,开发人员在第二区域102显示的角色骨架B上选中骨骼2,即可将骨骼2作为键名与“LeftLeg”进行绑定,形成“LeftLeg<骨骼2>”的键值对。

由于角色骨架A中的骨骼1与标准骨架中的标准骨骼“LeftLeg”进行了绑定,形成了“LeftLeg<骨骼1>”的键值对,且角色骨架B中的骨骼2与标准骨架中的标准骨骼“LeftLeg”也进行了绑定,形成了“LeftLeg<骨骼2>”的键值对,因此,基于“LeftLeg<骨骼1>”与“LeftLeg<骨骼2>”,即可确定角色骨架A中的骨骼1与角色骨架B中的骨骼2之间的映射关系。

方式二:复用角色化模版。

角色化模板库是一个存放角色化模板的文件夹,该文件夹路径下的所有XML文件都会被视作一个角色化模板并加载到重定向工具中。

开发人员通过从角色化模板库中调取已存在的角色化模版(如,角色化模版C、角色化模版D),并根据当前待角色化骨架,对该角色化模版中的部分键名进行修改,即可形成当前待角色化骨架对应的角色化模版。当前待角色化骨架中的骨骼名称与该角色化模版中的键值一致时即可自动进行绑定,不一致时则需要进行手动修改。修改后的角色化模版也可以存入角色化模版库中备用。

图11是本实施例提供的又一种建立待角色化骨架对应的角色化模版的示意图。

如图11所示,重定向工具界面中包括第一区域111、第二区域112、第三区域113。第一区域111为骨架信息显示区域,如图11所示,第一区域111中包括角色骨架信息A和角色骨架信息B。第二区域112为可视化区域,即,视窗,在第二区域112中将显示选中的骨架,如图11所示,开发者在第一区域111中选中角色骨架信息A,因此,在第二区域112中显示角色骨架A。第三区域113为角色化面板区域,该区域至少包括一角色化模版选择框1131和一角色化模版显示区域1132,响应于开发人员点击角色化模版选择框1131,即会显示一下拉菜单1133,其中包括角色化模版库中已存在的角色化模版,如图11所述,包括角色化模版1、角色化模板2、角色化模板3、……。响应于开发人员从下来菜单1133中选中一角色化模板进行复用,比如,选中角色化模板2作为复用角色化模板,那么,在角色化模版显示区域1032中即会显示角色化模板2中的每一个键值对,如图11所示,角色化模版显示区域1032中显示的角色化模版2中的键值对包括:Hips、Spine、Neck、Head、LeftLeg等。响应于“Bone1”、“Bone2”、“Bone3”与角色骨架A中的骨骼名称一致,角色骨架A中的骨骼将会自动绑定至“Hips”、“Spine”、“Neck”。由于“Bone4”、“Bone5”与角色骨架A中的骨骼名称不一致,需要开发人员手动重新绑定“Head”、“LeftLeg”对应的角色骨架A中的骨骼名称。

通过上述方法建立了待角色化骨架对应的角色化模版后,即可形成对应的角色化节点。

在本实施例提供的一种可选实现方式中,无论采用新建角色化模版的方式还是采用复用角色化模版的方式,完成角色化节点的创建,都需要对待角色化骨架与角色化节点进行锁定操作。

所述锁定操作可以理解为对角色化模版进行检测的触发操作,当开发人员单击重定向工具中的锁定按钮,触发锁定操作后,重定向工具即会对角色化模版进行检查。具体的,针对以新建方式获得的角色化模版而言,主要检测角色化模版中是否存在相同的骨骼名称,因为在同一个角色骨架中,一个骨骼只能作为角色化模版中一个标准骨骼对应的角色骨骼,即,一个角色骨骼并不能同时对应两个或两个以上的标准骨骼;对于以复用方式获得的角色化模版而言,主要检测角色化模版中的角色骨骼是否存在于当前待角色化骨架中,若不存在,则会将角色骨骼从角色化模板中移除,提示开发者手动指定当前待角色化骨架中对应的角色骨骼。

图12是本实施例提供的检测标准骨架与待角色化骨架之间对应关系的示意图。

如图12所示,重定向工具界面中包括第一区域121、第二区域122、第三区域123。第一区域121为骨架信息显示区域,如图12所示,第一区域121中包括角色骨架信息A和角色骨架信息B。第二区域122为可视化区域,即,视窗,在第二区域122中将显示选中的骨架,如图12所示,开发者在第一区域121中选中角色骨架信息A,因此,在第二区域122中显示角色骨架A。第三区域123为角色化面板区域,该区域至少包括一锁定按钮1231和一角色化模版显示区域1232,因为当前已经完成待角色化骨架与标准骨架之间的绑定,因此,角色化模版显示区域1232中显示有角色骨架A对应的角色化模版,响应于开发人员点击锁定按钮1231,即会对角色化模版显示区域1232中显示的角色化模版中的键值(即,角色骨骼)进行检测。

步骤S330,基于角色化节点A、角色化节点B,对角色A对应的角色动画信息A进行重定向处理,获得角色B对应的角色动画信息B。

通过上述步骤S320生成了角色化节点A与角色化节点B,基于角色化节点A与角色化节点B即可确定角色骨架A与角色骨架B之间的映射关系。在本步骤中,将根据角色骨架A与角色骨架B之间的映射关系,对角色A对应的角色动画信息进行重定向处理,形成角色B对应的角色动画信息,以使角色B具有与角色A相同的角色动画。

如上所示,角色A对应的角色动画被拆分为多个动画片段,每一个动画片段对应的角色动画信息均以动画时间轴的形式表示,每一个动画片段中记录的动画时间轴分为四种类型:其一是骨骼时间轴,其二是槽时间轴,其三是约束时间轴,其四是绘制顺序时间轴。时间轴中的关键帧信息是不需要进行重定向处理的,可直接跟随时间轴从角色A迁移至角色B,因此,本实施例所述的重定向处理实际上是针对时间轴中的关键帧属性信息进行的重定向。

在本实施例提供的一种可选实现方式中,重定向工具界面中还包括一重定向区域,该区域包括动画时间轴选择区域、关键帧属性信息显示区域、以及重定向显示区域。

图13是本实施例提供的重定向处理阶段的重定向工具的界面示意图。

如图13所示,重定向工具界面中包括一重定向区域131,该区域包括动画时间轴选择区域1311、关键帧属性信息显示区域1312、以及重定向显示区域1313。如图13所示,动画时间轴选择区域1311中包括四个可选择按钮,按钮“Bones”表示骨骼时间轴,“Slots”表示槽时间轴,“Deform”表示约束时间轴,“DrawOrder”表示绘制顺序时间轴,当开发人员点击任意一个按钮后,即会在关键帧属性信息显示区域1312中显示该时间轴下可重定向的关键帧属性,如图13所述,当开发人员点击按钮“Bones”,即会在关键帧属性信息显示区域1312中显示Translate(位移)、Rotate(旋转)、Scale(缩放)、Shear(错切)四个关键帧属性。当开发人员触发重定向处理后,即会在重定向显示区域1313内显示输入动画片段(角色A对应的角色动画)以及输出动画片段(角色B对应的角色动画)的片段名称。

以下分别对四种类型时间轴的重定向处理进行详细说明:

其一,针对骨骼时间轴的重定向处理。

骨骼时间轴是动画重定向的核心,骨骼时间轴包括的关键帧属性信息包括骨骼的旋转、位移、缩放及错切。针对位移属性、缩放属性和错切属性,在本实施例中采用直接复制的方式实现重定向,针对旋转属性,由于受到绑定姿态的影响,因此不能采用直接复制的方式。

在本实施例提供的一种可选实现方式中,采用前向动力学实现对旋转属性的重定向处理,其基本依据为:针对动画来源骨架(角色A对应的角色骨架A)中的每一个骨骼,都有一个变化矩阵能够使其朝向与重定向目标骨架(角色B对应的角色骨架B)中相对应的骨骼的初始姿态保持一致。以下进行举例说明:

角色骨架A为动画来源骨架,角色骨架B为重定向目标骨架,需要将角色骨架A上任意骨骼的旋转动画重定向到角色骨架B上。假设骨骼p和骨骼i是通过重定向节点在两套骨架上均能获取到的两个骨骼,其中骨骼p是骨骼i的父骨骼。对于任意骨骼而言,Q表示其在世界空间下的朝向,R表示其在父对象空间下的旋转。

角色骨架信息中包含了骨架中的任意骨骼的父节点以及其在父节点空间下的位移和旋转,因此每一个骨骼在世界空间下的位移和朝向都能被计算出来,即

对于角色骨架A的骨骼链,由于骨骼p的父对象空间就是世界空间,因此其在世界空间的朝向

同样的,对于角色骨架B的骨骼链中的骨骼p和骨骼i,即存在

由于角色骨架A和角色骨架B中的每一对骨骼,都存在如下关系:

Q

因此,对于角色骨架A与角色骨架B中的骨骼p和骨骼i的朝向存在如下关系:

角色骨架B中的骨骼i的旋转

由于

因此,对于角色骨架A上任意骨骼上的旋转动画而言,都可以通过上述公式将其重定向到角色骨架B对应的骨骼上。

在一具体实现方式中,当骨骼为根骨骼时,上述重定向公式即可简化为:

其二,针对槽时间轴的重定向。

如上所示,槽时间轴记录了插槽内附件对象的名称属性和颜色属性,角色骨架信息中包括插槽的名称、插槽所属骨骼的名称,因此,可以根据角色化节点中的标准骨架和待角色化骨架之间的对应关系,自动加载骨架上的插槽,从而建立角色A与角色B之间的插槽映射关系。

建立了角色A与角色B之间的插槽映射关系后,即可采用直接复制的方式实现重定向处理。

其三,针对约束时间轴的重定向。

约束时间轴记录了约束节点的动画,在本实施例提供的方法中,采用直接复制的方式实现重定向处理。

其四,针对绘制顺序时间轴的重定向:

绘制顺序时间轴用于改变附件在视窗内的绘制顺序,基于角色A与角色B之间的插槽映射关系,将同一插槽中附件之间的偏移量映射给角色骨架B对应的插槽即可实现重定向处理。

步骤S340,导出重定向处理后的角色B。

通过上述步骤完成对角色B的动画重定向后,可以将重定向处理获得的针对角色B的角色动画信息与角色骨架信息B组合为角色信息B,并序列化为Spine Json文件存储在磁盘上,该Spine Json文件可以被Spine编辑器或任何装载了Spine运行库的引擎重新读取。

在本实施例提供的一种可选实现方式中,重定向工具可以直接调用SkeletonViewer(骨架查看器)进程,并采用Skeleton Viewer预览重定向的动画,具体的,SkeletonViewer可以自动获取重定向工具输出的Spine Json文件(如,角色信息B序列化的SpineJson文件),并加载动画进行预览(如,角色B的动作动画)。

图14是本实施例提供的重定向结果的对比示意图。

如图14(a)所示,在采用本实施例提供的方法进行重定向处理前,角色141具有完整的骨架结构以及动作动画,而角色142具有完整的骨架结构,没有对应的动作动画。如图14(b)所示,采用本实施例提供的重定向方法将角色141对应的动作动画重定向为角色142对应的动作动画,使角色142执行与角色141相同的动作。

上述第二实施例提供了一种二维动画的重定向方法,基于自定义的重定向工具实现根据角色A的动作动画,重定向角色B的动作动画,使得角色B执行与角色A相同的动作。该工具集成了对Spine编辑器的动画文件进行动画重定向、动画复用以及输出结果可视化等功能。需要说明的是,第二实施例中的示例仅是为了对本申请所述的方法做出解释,并不作为实际使用的限定,本申请提供的二维动画的重定向方法包括但不限于第二实施例所述的方法。

本申请第三实施例提供了一种二维动画的重定向系统,该系统应用于重定向工具。图15是本实施例提供的二维动画的重定向系统的示意图。

如图15所示,本实施例提供的二维动画的重定向系统,包括:角色导入模块1501、骨架匹配模块1502、动画重定向模块1503、角色导出模块1504、预览模块1505。

所述角色导入模块1501,用于响应于针对第一角色和至少一个第二角色的导入操作,获取所述第一角色对应的第一角色信息,所述第一角色为动画来源角色,所述第一角色信息包括第一角色骨架信息和第一角色动画信息,所述第一角色骨架信息至少包括所述第一角色对应的第一角色骨架中各骨骼的骨骼状态数据,所述第一角色动画信息至少包括所述第一角色骨架中各骨骼在动画时间轴上的骨骼属性数据,并获取所述第二角色对应的第二角色骨架信息,所述第二角色为动画目标角色,所述第二角色骨架信息至少包括所述第二角色对应的第二角色骨架中各骨骼的骨骼状态数据。

所述骨架匹配模块1502,用于获取预设的标准骨架,根据所述第一角色骨架信息建立所述第一角色骨架与所述标准骨架之间的第一关联关系,根据所述第二角色骨架信息建立所述第二角色骨架与所述标准骨架之间的第二关联关系,并基于所述第一关联关系与所述第二关联关系建立所述第一角色骨架中各骨骼与所述第二角色骨架中各骨骼之间的映射关系,其中,所述标准骨架至少包括脊柱区域、头骨区域、手臂区域、以及腿部区域。

所述动画重定向模块1503,用于根据所述映射关系,对所述第一角色动画信息进行重定向处理,生成所述第二角色对应的第二角色动画信息。

所述角色导出模块1504,用于合并所述第二角色骨架信息和所述第二角色动画信息,形成所述第二角色对应的第二角色信息,并导出所述重定向工具。

所述预览模块1505,用于根据所述第二角色信息,在所述重定向工具的查看器中渲染所述第二角色的动作动画。

在本实施例提供的一种可选实现方式中,所述重定向工具为显示本申请第一实施例及第二实施例提供的二维动画的重定向方法的自定义工具。

在一具体实现方式中,所述重定向工具对应的交互界面中至少包括第一区域、第二区域、以及第三区域。其中,所述第一区域用于展示所述第一角色骨骼信息和所述第二角色骨架信息;所述第二区域用于展示所述第一角色骨架或所述第二角色骨架;所述第三区域用于展示所述第一角色骨架对应的第一角色化模版或第二角色骨架对应的第二角色化模版。

在另一具体实现方式中,所述第三区域至少还包括:角色化模版复用控件、角色化模版新建控件、锁定控件、重定向处理控件、导出控件、预览控件。其中,角色化模版复用控件用于从角色化模版库中调用待复用的角色化模版,角色化模版新建控件用于新建针对当前角色骨架(第一角色骨架或第二角色骨架)的角色化模版,锁定控件用于锁定当前角色骨架与创建好的角色化模版,重定向处理控件用于启动对第一角色动画信息的重定向处理,导出控件用于将重定向获得的第二角色信息导出重定向工具,并存储在磁盘中,预览控件用于调用骨架查看器预览重定向获得的第二角色的动作动画。

图16是本实施例提供的重定向工具对应的交互界面的示意图。

如图16所示,重定向工具交互界面中包括第一区域161、第二区域162、第三区域163。第一区域161为角色骨架信息显示区域,如图16所示,第一区域161中显示有第一角色骨架信息1611和第二角色骨架信息1612。第二区域162为可视化区域,即,视窗,在第二区域162中将显示选中的角色骨架,如图16所示,开发人员在第一区域161中选中第一角色骨架信息1611,因此,在第二区域162中显示第一角色骨架1621。第三区域163为角色化面板区域,在第三区域163中显示有角色化模版,如图16所示,开发人员当前正在创建第一角色骨架1621对应的角色化模版,因此,在第三区域163中显示第一角色化模版1631。第三区域163中还包括角色化模版复用控件1632、角色化模版新建控件1633、锁定控件1634、重定向处理控件1635、导出控件1636、预览控件1637。

本申请第四实施例提供了一种二维动画的重定向装置。

图17是本实施例提供的二维动画的重定向装置的示意图。

如图17所示,本实施例提供的二维动画的重定向装置,包括:第一信息获取单元1701、第二信息获取单元1702、映射关系创建单元1703、重定向处理单元1704。

所述第一信息获取单元1701,用于获取第一角色对应的第一角色信息,所述第一角色为动画来源角色,所述第一角色信息包括第一角色骨架信息和第一角色动画信息,所述第一角色骨架信息至少包括所述第一角色对应的第一角色骨架中各骨骼的骨骼状态数据,所述第一角色动画信息至少包括所述第一角色骨架中各骨骼在动画时间轴上的骨骼属性数据。

所述第二信息获取单元1702,用于获取至少一个第二角色对应的第二角色骨架信息,所述第二角色为动画目标角色,所述第二角色骨架信息至少包括所述第二角色对应的第二角色骨架中各骨骼的骨骼状态数据。

所述映射关系创建单元1703,用于获取预设的标准骨架,根据所述第一角色骨架信息建立所述第一角色骨架与所述标准骨架之间的第一关联关系,根据所述第二角色骨架信息建立所述第二角色骨架与所述标准骨架之间的第二关联关系,并基于所述第一关联关系与所述第二关联关系建立所述第一角色骨架中各骨骼与所述第二角色骨架中各骨骼之间的映射关系,其中,所述标准骨架至少包括脊柱区域、头骨区域、手臂区域、以及腿部区域。

可选的,所述根据所述第一角色骨架信息建立所述第一角色骨架与所述标准骨架之间的第一关联关系,根据所述第二角色骨架信息建立所述第二角色骨架与所述标准骨架之间的第二关联关系,并基于所述第一关联关系与所述第二关联关系建立所述第一角色骨架中各骨骼与所述第二角色骨架中各骨骼之间的映射关系,包括:

根据所述第一角色骨架中各骨骼的骨骼状态数据,对所述第一角色骨架中各骨骼与所述标准骨架中各骨骼进行匹配,生成所述第一角色骨架对应的第一角色化模版,所述第一角色化模版中记录了所述第一角色骨架中各骨骼与所述标准骨架中各骨骼之间的匹配关系;

基于所述第一角色化模版,创建所述第一角色骨架对应的第一角色化节点,所述第一角色化节点用于表征所述第一角色骨架与所述标准骨架之间的所述第一关联关系;

根据所述第二角色骨架中各骨骼的骨骼状态数据,对所述第二角色骨架中各骨骼与所述标准骨架中各骨骼进行匹配,生成所述第二角色骨架对应的第二角色化模版,所述第二角色化模版中记录了所述第二角色骨架中各骨骼与所述标准骨架中各骨骼之间的匹配关系;

基于所述第二角色化模版,创建所述第二角色骨架对应的第二角色化节点,所述第二角色化节点用于表征所述第二角色骨架与所述标准骨架之间的所述第二关联关系;

根据所述第一角色化节点与所述第二角色化节点,确定所述第一角色骨架中各骨骼与所述第二角色骨架中各骨骼之间的映射关系。

可选的,所述第一角色化模版中以键值对形式存储具有匹配关系的所述第一角色骨架中的骨骼和所述标准骨架中的骨骼;

在所述根据所述第一角色骨架中各骨骼的骨骼状态数据,对所述第一角色骨架中各骨骼与所述标准骨架中各骨骼进行匹配,生成所述第一角色骨架对应的第一角色化模版的步骤之前,还用于:

响应于第一操作,创建所述第一角色骨架对应的第一原始角色化模版。

可选的,响应于所述第一操作为对所述第一原始角色化模版的新建操作,所述第一原始角色化模版中包括所述标准骨架中各骨骼对应的骨骼名称,所述标准骨架中各骨骼对应的骨骼名称为所述键值对的键名;

所述根据所述第一角色骨架中各骨骼的骨骼状态数据,对所述第一角色骨架中各骨骼与所述标准骨架中各骨骼进行匹配,生成所述第一角色骨架对应的第一角色化模版,包括:

响应于对所述第一原始角色化模版中所述标准骨架中待匹配骨骼对应的骨骼名称的第二操作,以及对所述第一角色骨架中待匹配骨骼的第三操作,根据所述第一角色骨架中待匹配骨骼的骨骼状态数据,将所述第一角色骨架中待匹配骨骼的骨骼名称作为键值记录在所述第一原始角色化模版中。

可选的,在所述响应于对所述第一原始角色化模版中所述标准骨架中待匹配骨骼对应的骨骼名称的第二操作,以及对所述第一角色骨架中待匹配骨骼的第三操作,根据所述第一角色骨架中待匹配骨骼的骨骼状态数据,将所述第一角色骨架中待匹配骨骼的骨骼名称作为键值记录在所述第一原始角色化模版中的步骤之后,还用于:

响应于针对所述第一原始角色化模版的第四操作,判断所述第一原始角色化模版中各键值所对应的骨骼名称之间是否重复;

响应于所述第一原始角色化模版中各键值所对应的骨骼名称之间不重复,将所述第一原始角色化模版作为所述第一角色化模版;

响应于所述第一原始角色化模版中各键值所对应的骨骼名称之间存在重复,重新进行匹配。

可选的,在所述响应于所述第一原始角色化模版中各键值所对应的骨骼名称之间不重复,将所述第一原始角色化模版作为所述第一角色化模版的步骤之后,还用于:

将所述第一角色化模版存储在预设的角色化模版库中。

可选的,响应于所述第一操作为从预设的角色化模板库中对所述第一原始角色化模版的选中操作,所述第一原始角色化模版中包括所述标准骨架中各骨骼对应的骨骼名称、以及第三角色对应的第三角色骨架中各骨骼对应的骨骼名称,所述第一原始角色化模版为所述角色化模板库中存储的多个角色化模版中的任意一个,所述第三角色为所述第一原始角色化模版对应的角色,所述标准骨架中各骨骼对应的骨骼名称为所述键值对的键名,所述第三角色骨架中各骨骼对应的骨骼名称为所述键值对的键值;

所述根据所述第一角色骨架中各骨骼的骨骼状态数据,对所述第一角色骨架中各骨骼与所述标准骨架中各骨骼进行匹配,生成所述第一角色骨架对应的第一角色化模版,包括:

根据所述第一角色骨架中各骨骼的骨骼状态数据,确定所述第一角色骨架中与所述第一原始角色化模版中各键值所对应的骨骼名称相同的待匹配骨骼;

将所述待匹配骨骼与所述标准骨架中对应的骨骼进行匹配。

可选的,在所述将所述待匹配骨骼与所述标准骨架中对应的骨骼进行匹配的步骤之后,还用于:

响应于针对所述第一原始角色化模版的第四操作,判断所述第一原始角色化模版中各键值所对应的骨骼名称是否存在于所述第一角色骨架中;

响应于所述第一原始角色化模版中各键值所对应的骨骼名称存在于所述第一角色骨架中,将所述第一原始角色化模版作为所述第一角色化模版;

响应于所述第一原始角色化模版中各键值所对应的骨骼名称中包括不存在于所述第一角色骨架中的骨骼名称,删除不存在于所述第一角色骨架中的骨骼名称所对应的键值。

可选的,在所述响应于所述第一原始角色化模版中各键值所对应的骨骼名称中包括不存在于所述第一角色骨架中的骨骼名称,删除不存在于所述第一角色骨架中的骨骼名称所对应的键值的步骤之后,还用于:

响应于对删除了键值的键名的第二操作,以及对所述第一角色骨架中待匹配骨骼的第三操作,根据所述第一角色骨架中待匹配骨骼的骨骼状态数据,将所述第一角色骨架中待匹配骨骼的骨骼名称作为键值记录在所述第一原始角色化模版中。

可选的,在所述响应于所述第一原始角色化模版中各键值所对应的骨骼名称存在于所述第一角色骨架中,将所述第一原始角色化模版作为所述第一角色化模版的步骤之后,还用于:

将所述第一角色化模版存储在所述角色化模版库中。

所述重定向处理单元1704,用于根据所述映射关系,对所述第一角色动画信息进行重定向处理,生成所述第二角色对应的第二角色动画信息。

可选的,所述第一角色骨架中各骨骼在动画时间轴上的骨骼属性数据包括:位移数据、缩放数据、错切数据、旋转数据;

所述根据所述映射关系,对所述第一角色动画信息进行重定向处理,生成所述第二角色对应的第二角色动画信息,包括:

复制所述第一角色骨架中各骨骼在动画时间轴上的所述位移数据,根据所述映射关系,将所述位移数据映射给所述第二角色骨架中对应的骨骼,作为所述第二角色骨架中各骨骼在动画时间轴上的位移数据;

复制所述第一角色骨架中各骨骼在动画时间轴上的所述缩放数据,根据所述映射关系,将所述缩放数据映射给所述第二角色骨架中对应的骨骼,作为所述第二角色骨架中各骨骼在动画时间轴上的缩放数据;

复制所述第一角色骨架中各骨骼在动画时间轴上的所述错切数据,根据所述映射关系,将所述错切数据映射给所述第二角色骨架中对应的骨骼,作为所述第二角色骨架中各骨骼在动画时间轴上的错切数据;

基于前向动力学,根据所述第一角色骨架中各骨骼在动画时间轴上的所述旋转数据,以及所述第一角色骨架信息和所述第二角色骨架信息,计算所述旋转数据对应的映射旋转数据,根据所述映射关系,将所述映射旋转数据映射给所述第二角色骨架中对应的骨骼,作为所述第二角色骨架中各骨骼在动画时间轴上的旋转数据。

可选的,所述第一角色骨架信息至少还包括所述第一角色骨架中各插槽对应的插槽状态数据,所述第一角色动画信息至少还包括所述第一角色骨架中各插槽在动画时间轴上的插槽属性数据,所述第二角色骨架信息至少还包括所述第二角色骨架中各插槽对应的插槽状态数据;

在所述基于预设的标准骨架,根据所述第一角色骨架信息和所述第二角色骨架信息,建立所述第一角色骨架中各骨骼与所述第二角色骨架中各骨骼之间的映射关系的步骤之后,还用于:

根据所述第一角色骨架信息和所述第二角色骨架信息,以及所述第一角色骨架中各骨骼与所述第二角色骨架中各骨骼之间的映射关系,建立所述第一角色骨架中各插槽与所述第二角色骨架中各插槽之间的映射关系。

可选的,所述第一角色骨架中各插槽在动画时间轴上的插槽属性数据包括:插槽内附件对象的名称数据、颜色数据、绘制顺序数据、以及插槽的偏移量;

所述根据所述映射关系,对所述第一角色动画信息进行重定向处理,生成所述第二角色对应的第二角色动画信息,还包括:

复制所述第一角色骨架中各插槽在动画时间轴上的所述插槽属性数据,根据所述映射关系,将所述插槽属性数据映射给所述第二角色骨架中对应的插槽,作为所述第二角色骨架中各插槽在动画时间轴上的插槽属性数据。

可选的,所述第一角色骨架信息至少还包括所述第一角色骨架中各约束节点对应的约束节点状态数据,所述第一角色动画信息至少还包括所述第一角色骨架中各约束节点在动画时间轴上的约束节点属性数据,所述第二角色骨架信息至少还包括所述第二角色骨架中各约束节点对应的约束节点状态数据;

所述根据所述映射关系,对所述第一角色动画信息进行重定向处理,生成所述第二角色对应的第二角色动画信息,还包括:

复制所述第一角色骨架中各约束节点在动画时间轴上的所述约束节点属性数据,根据所述映射关系,将所述约束节点属性数据映射给所述第二角色骨架中对应的约束节点,作为所述第二角色骨架中各约束节点在动画时间轴上的约束节点属性数据。

可选的,所述装置还包括:信息合并单元和信息渲染单元;

所述信息合并单元,用于合并所述第二角色骨架信息和所述第二角色动画信息,形成所述第二角色对应的第二角色信息;

所述信息渲染单元,用于根据所述第二角色信息,渲染所述第二角色的动作动画。

本申请第五实施例提供了一种电子设备,图18是本实施例提供的电子设备的结构示意图。

如图18所示,本实施例提供的电子设备,包括:存储器1801、处理器1802;

所述存储器1801,用于存储执行二维动画的重定向方法的计算机指令;

所述处理器1802,用于执行存储于所述存储器1801中的计算机指令,以执行如下操作:

获取第一角色对应的第一角色信息,所述第一角色为动画来源角色,所述第一角色信息包括第一角色骨架信息和第一角色动画信息,所述第一角色骨架信息至少包括所述第一角色对应的第一角色骨架中各骨骼的骨骼状态数据,所述第一角色动画信息至少包括所述第一角色骨架中各骨骼在动画时间轴上的骨骼属性数据;

获取至少一个第二角色对应的第二角色骨架信息,所述第二角色为动画目标角色,所述第二角色骨架信息至少包括所述第二角色对应的第二角色骨架中各骨骼的骨骼状态数据;

获取预设的标准骨架,根据所述第一角色骨架信息建立所述第一角色骨架与所述标准骨架之间的第一关联关系,根据所述第二角色骨架信息建立所述第二角色骨架与所述标准骨架之间的第二关联关系,并基于所述第一关联关系与所述第二关联关系建立所述第一角色骨架中各骨骼与所述第二角色骨架中各骨骼之间的映射关系,其中,所述标准骨架至少包括脊柱区域、头骨区域、手臂区域、以及腿部区域;

根据所述映射关系,对所述第一角色动画信息进行重定向处理,生成所述第二角色对应的第二角色动画信息。

可选的,还执行如下操作:

合并所述第二角色骨架信息和所述第二角色动画信息,形成所述第二角色对应的第二角色信息;

根据所述第二角色信息,渲染所述第二角色的动作动画。

可选的,所述根据所述第一角色骨架信息建立所述第一角色骨架与所述标准骨架之间的第一关联关系,根据所述第二角色骨架信息建立所述第二角色骨架与所述标准骨架之间的第二关联关系,并基于所述第一关联关系与所述第二关联关系建立所述第一角色骨架中各骨骼与所述第二角色骨架中各骨骼之间的映射关系,包括:

根据所述第一角色骨架中各骨骼的骨骼状态数据,对所述第一角色骨架中各骨骼与所述标准骨架中各骨骼进行匹配,生成所述第一角色骨架对应的第一角色化模版,所述第一角色化模版中记录了所述第一角色骨架中各骨骼与所述标准骨架中各骨骼之间的匹配关系;

基于所述第一角色化模版,创建所述第一角色骨架对应的第一角色化节点,所述第一角色化节点用于表征所述第一角色骨架与所述标准骨架之间的所述第一关联关系;

根据所述第二角色骨架中各骨骼的骨骼状态数据,对所述第二角色骨架中各骨骼与所述标准骨架中各骨骼进行匹配,生成所述第二角色骨架对应的第二角色化模版,所述第二角色化模版中记录了所述第二角色骨架中各骨骼与所述标准骨架中各骨骼之间的匹配关系;

基于所述第二角色化模版,创建所述第二角色骨架对应的第二角色化节点,所述第二角色化节点用于表征所述第二角色骨架与所述标准骨架之间的所述第二关联关系;

根据所述第一角色化节点与所述第二角色化节点,确定所述第一角色骨架中各骨骼与所述第二角色骨架中各骨骼之间的映射关系。

可选的,所述第一角色化模版中以键值对形式存储具有匹配关系的所述第一角色骨架中的骨骼和所述标准骨架中的骨骼;

在所述根据所述第一角色骨架中各骨骼的骨骼状态数据,对所述第一角色骨架中各骨骼与所述标准骨架中各骨骼进行匹配,生成所述第一角色骨架对应的第一角色化模版的步骤之前,还执行如下操作:

响应于第一操作,创建所述第一角色骨架对应的第一原始角色化模版。

可选的,响应于所述第一操作为对所述第一原始角色化模版的新建操作,所述第一原始角色化模版中包括所述标准骨架中各骨骼对应的骨骼名称,所述标准骨架中各骨骼对应的骨骼名称为所述键值对的键名;

所述根据所述第一角色骨架中各骨骼的骨骼状态数据,对所述第一角色骨架中各骨骼与所述标准骨架中各骨骼进行匹配,生成所述第一角色骨架对应的第一角色化模版,包括:

响应于对所述第一原始角色化模版中所述标准骨架中待匹配骨骼对应的骨骼名称的第二操作,以及对所述第一角色骨架中待匹配骨骼的第三操作,根据所述第一角色骨架中待匹配骨骼的骨骼状态数据,将所述第一角色骨架中待匹配骨骼的骨骼名称作为键值记录在所述第一原始角色化模版中。

可选的,在所述响应于对所述第一原始角色化模版中所述标准骨架中待匹配骨骼对应的骨骼名称的第二操作,以及对所述第一角色骨架中待匹配骨骼的第三操作,根据所述第一角色骨架中待匹配骨骼的骨骼状态数据,将所述第一角色骨架中待匹配骨骼的骨骼名称作为键值记录在所述第一原始角色化模版中的步骤之后,还执行如下操作:

响应于针对所述第一原始角色化模版的第四操作,判断所述第一原始角色化模版中各键值所对应的骨骼名称之间是否重复;

响应于所述第一原始角色化模版中各键值所对应的骨骼名称之间不重复,将所述第一原始角色化模版作为所述第一角色化模版;

响应于所述第一原始角色化模版中各键值所对应的骨骼名称之间存在重复,重新进行匹配。

可选的,在所述响应于所述第一原始角色化模版中各键值所对应的骨骼名称之间不重复,将所述第一原始角色化模版作为所述第一角色化模版的步骤之后,还执行如下操作:

将所述第一角色化模版存储在预设的角色化模版库中。

可选的,响应于所述第一操作为从预设的角色化模板库中对所述第一原始角色化模版的选中操作,所述第一原始角色化模版中包括所述标准骨架中各骨骼对应的骨骼名称、以及第三角色对应的第三角色骨架中各骨骼对应的骨骼名称,所述第一原始角色化模版为所述角色化模板库中存储的多个角色化模版中的任意一个,所述第三角色为所述第一原始角色化模版对应的角色,所述标准骨架中各骨骼对应的骨骼名称为所述键值对的键名,所述第三角色骨架中各骨骼对应的骨骼名称为所述键值对的键值;

所述根据所述第一角色骨架中各骨骼的骨骼状态数据,对所述第一角色骨架中各骨骼与所述标准骨架中各骨骼进行匹配,生成所述第一角色骨架对应的第一角色化模版,包括:

根据所述第一角色骨架中各骨骼的骨骼状态数据,确定所述第一角色骨架中与所述第一原始角色化模版中各键值所对应的骨骼名称相同的待匹配骨骼;

将所述待匹配骨骼与所述标准骨架中对应的骨骼进行匹配。

可选的,在所述将所述待匹配骨骼与所述标准骨架中对应的骨骼进行匹配的步骤之后,还执行如下操作:

响应于针对所述第一原始角色化模版的第四操作,判断所述第一原始角色化模版中各键值所对应的骨骼名称是否存在于所述第一角色骨架中;

响应于所述第一原始角色化模版中各键值所对应的骨骼名称存在于所述第一角色骨架中,将所述第一原始角色化模版作为所述第一角色化模版;

响应于所述第一原始角色化模版中各键值所对应的骨骼名称中包括不存在于所述第一角色骨架中的骨骼名称,删除不存在于所述第一角色骨架中的骨骼名称所对应的键值。

可选的,在所述响应于所述第一原始角色化模版中各键值所对应的骨骼名称中包括不存在于所述第一角色骨架中的骨骼名称,删除不存在于所述第一角色骨架中的骨骼名称所对应的键值的步骤之后,还执行如下操作:

响应于对删除了键值的键名的第二操作,以及对所述第一角色骨架中待匹配骨骼的第三操作,根据所述第一角色骨架中待匹配骨骼的骨骼状态数据,将所述第一角色骨架中待匹配骨骼的骨骼名称作为键值记录在所述第一原始角色化模版中。

可选的,在所述响应于所述第一原始角色化模版中各键值所对应的骨骼名称存在于所述第一角色骨架中,将所述第一原始角色化模版作为所述第一角色化模版的步骤之后,还执行如下操作:

将所述第一角色化模版存储在所述角色化模版库中。

可选的,所述第一角色骨架中各骨骼在动画时间轴上的骨骼属性数据包括:位移数据、缩放数据、错切数据、旋转数据;

所述根据所述映射关系,对所述第一角色动画信息进行重定向处理,生成所述第二角色对应的第二角色动画信息,包括:

复制所述第一角色骨架中各骨骼在动画时间轴上的所述位移数据,根据所述映射关系,将所述位移数据映射给所述第二角色骨架中对应的骨骼,作为所述第二角色骨架中各骨骼在动画时间轴上的位移数据;

复制所述第一角色骨架中各骨骼在动画时间轴上的所述缩放数据,根据所述映射关系,将所述缩放数据映射给所述第二角色骨架中对应的骨骼,作为所述第二角色骨架中各骨骼在动画时间轴上的缩放数据;

复制所述第一角色骨架中各骨骼在动画时间轴上的所述错切数据,根据所述映射关系,将所述错切数据映射给所述第二角色骨架中对应的骨骼,作为所述第二角色骨架中各骨骼在动画时间轴上的错切数据;

基于前向动力学,根据所述第一角色骨架中各骨骼在动画时间轴上的所述旋转数据,以及所述第一角色骨架信息和所述第二角色骨架信息,计算所述旋转数据对应的映射旋转数据,根据所述映射关系,将所述映射旋转数据映射给所述第二角色骨架中对应的骨骼,作为所述第二角色骨架中各骨骼在动画时间轴上的旋转数据。

可选的,所述第一角色骨架信息至少还包括所述第一角色骨架中各插槽对应的插槽状态数据,所述第一角色动画信息至少还包括所述第一角色骨架中各插槽在动画时间轴上的插槽属性数据,所述第二角色骨架信息至少还包括所述第二角色骨架中各插槽对应的插槽状态数据;

在所述基于预设的标准骨架,根据所述第一角色骨架信息和所述第二角色骨架信息,建立所述第一角色骨架中各骨骼与所述第二角色骨架中各骨骼之间的映射关系的步骤之后,还执行如下操作:

根据所述第一角色骨架信息和所述第二角色骨架信息,以及所述第一角色骨架中各骨骼与所述第二角色骨架中各骨骼之间的映射关系,建立所述第一角色骨架中各插槽与所述第二角色骨架中各插槽之间的映射关系。

可选的,所述第一角色骨架中各插槽在动画时间轴上的插槽属性数据包括:插槽内附件对象的名称数据、颜色数据、绘制顺序数据、以及插槽的偏移量;

所述根据所述映射关系,对所述第一角色动画信息进行重定向处理,生成所述第二角色对应的第二角色动画信息,还包括:

复制所述第一角色骨架中各插槽在动画时间轴上的所述插槽属性数据,根据所述映射关系,将所述插槽属性数据映射给所述第二角色骨架中对应的插槽,作为所述第二角色骨架中各插槽在动画时间轴上的插槽属性数据。

可选的,所述第一角色骨架信息至少还包括所述第一角色骨架中各约束节点对应的约束节点状态数据,所述第一角色动画信息至少还包括所述第一角色骨架中各约束节点在动画时间轴上的约束节点属性数据,所述第二角色骨架信息至少还包括所述第二角色骨架中各约束节点对应的约束节点状态数据;

所述根据所述映射关系,对所述第一角色动画信息进行重定向处理,生成所述第二角色对应的第二角色动画信息,还包括:

复制所述第一角色骨架中各约束节点在动画时间轴上的所述约束节点属性数据,根据所述映射关系,将所述约束节点属性数据映射给所述第二角色骨架中对应的约束节点,作为所述第二角色骨架中各约束节点在动画时间轴上的约束节点属性数据。

可选的,所述标准骨架包括脊柱区域、头骨区域、手臂区域、以及腿部区域;其中,

所述脊柱区域包括骨盆节点和脊柱节点;

所述头骨区域包括脖子节点和头部节点;

所述手臂区域包括左肩膀节点、左上臂节点、左前臂节点、左手节点、右肩膀节点、右上臂节点、右前臂节点、右手节点;

所述腿部区域包括左腿上部节点、左腿下部节点、左脚节点、右腿上部节点、右腿下部节点、右脚节点。

可选的,所述标准骨架还包括附加骨骼节点;其中,

所述脊柱节点与所述脖子节点之间包括一条附加脊柱骨骼节点链,所述附加脊柱骨骼节点链中至少包括一个附加脊柱骨骼节点;

所述脖子节点和所述头部节点之间包括一条附加脖子骨骼节点链,所述附加脖子骨骼节点链中至少包括一个附加脖子骨骼节点;

所述左手节点和所述右手节点各包括五条附加手指骨骼节点链,每一条所述附加手指骨骼节点链中至少包括一个附加手指骨骼节点;

所述左脚节点和所述右脚节点各包括五条附加脚指骨骼节点链,每一条所述附加脚指骨骼节点链中至少包括一个附加脚指骨骼节点。

本申请第六实施例提供了一种计算机可读存储介质,计算机可读存储介质包括计算机指令,计算机指令在被处理器执行时用于实现本申请各实施例所述的方法。

需要注意的是,本文中的“第一”、“第二”等关系术语仅用于区分一个实体或操作与另一个实体或操作,并不要求或暗示这些实体或操作之间存在任何实际的关系或顺序。此外,“包括”、“有”,“包含”和“包括”和其他类似形式的词语在含义上是相同的,并且,在上述任何一个词语之后的任何一个或者多个项目的结尾是开放式的,上述任何一个名词均不表示所述一个或多个项目已经列举穷尽,或者仅限于这些已列举的一个或者多个项目。

在本文中使用时,除非另有明确说明,术语“或”包括所有可能的组合,但不可行的除外。例如,如果表达为一个数据库可能包括A或B,则除非另有特别规定或不可行,可能包括数据库A,或B,或者A和B。第二个例子,如果表达为某个数据库可能包括A、B或C,则除非另有特别规定或不可行,所述数据库可以包括数据库A、或B、或C、或者A和B、或者A和C、或者B和C、或者A和B和C。

值得注意的是,上述实施例可以通过硬件或软件(程序代码),或硬件和软件的组合来实现。如果由软件实现,则可将其存储在上述计算机可读介质中。该软件在由处理器执行时,可以执行上述已披露的方法。本公开中描述的计算单元和其他功能单元可以由硬件或软件,或硬件和软件的组合来实现。本领域普通技术人员,也会理解上述多个模块/单元可以组合成一个模块/单元,而上述每个模块/单元可以进一步划分为多个子模块/子单位。

在上述详细说明中,实施例已参照许多具体细节进行了描述,这些细节可能因实施而异。可以对所述实施例进行某些适配和修改。对于本领域的技术人员,可以从本申请公开的具体实施方式中,显而易见的获得其它一些实施方式。本说明书和示例仅出于示例性的目的,本申请的真实范围和本质由权利要求说明。示图所示的步骤顺序也仅出于解释说明的目的,并不意味着限定于任何特定的步骤、顺序。因此,那些精通本领域的技术人员会意识到,在实施相同的方法时,这些步骤可以以不同的顺序执行。

在本申请的示图和详细说明中,公开了示例性的实施例。但是,可以对这些实施例进行许多变化和修改。相应的,尽管使用了具体的术语,但这些术语只是一般和描述性的,而不是出于限定的目的。

相关技术
  • 一种二维码生成方法、装置及电子设备
  • 生成、验证二维码的方法和装置,存储介质和电子设备
  • 全光二维量化和编码的方法、系统和电子设备
  • 可弯曲电子设备、可弯曲电子设备的控制方法、装置及电子设备
  • 风控系统优化方法、系统、装置以及电子设备
  • 动画重定向方法、装置、电子设备及存储介质
  • 一种智能汽车连续时间最优决控模型构建及求解方法
技术分类

06120116586240