HI,欢迎来到起点商标网!
24小时服务QQ:2880605093

动画处理方法及装置、计算机存储介质、电子设备与流程

2021-01-11 11:01:04|274|起点商标网
动画处理方法及装置、计算机存储介质、电子设备与流程

本公开涉及游戏技术领域,特别涉及一种动画处理方法、动画处理装置、计算机存储介质及电子设备。



背景技术:

在计算机技术、网络技术以及电子技术不断发展的今天,动画在很多领域得到了广泛应用。游戏角色的骨架由多根骨骼组成,这些骨骼以树状方式组织,每根骨骼记录了相对父节点的平移、旋转和缩放,因此角色的整体姿态取决于每根骨骼的姿态。游戏中,动画包含了角色骨架在一段时间内的关键帧数据,运行时可以利用动画驱动角色的运动姿态变化。游戏中的动画融合一般是指角色在两段动作之间切换时的过渡过程。

相关技术中,一般是通过游戏引擎自带的动画融合技术来对动画进行融合。然而,一方面,引擎提供的动画编辑与调试功能往往只适用于该引擎本身,无法跨引擎使用,因而通用性较差;另一方面,引擎自身的动画调试功能通常较为固定,并且由于提供给外界的扩展接口较少,导致灵活性不强,不利于使用者定制化地增加或调整动画融合的相关功能。

鉴于此,本领域亟需开发一种新的动画处理方法及装置。

需要说明的是,上述背景技术部分公开的信息仅用于加强对本公开的背景的理解。



技术实现要素:

本公开的目的在于提供一种动画处理方法、动画处理装置、计算机存储介质及电子设备,进而至少在一定程度上避免了相关技术中通用性和灵活性较差的缺陷。

本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。

根据本公开的第一方面,提供一种动画处理方法,包括:与编辑端建立通信连接;接收所述编辑端发送的融合配置信息,所述融合配置信息包括至少两个动画片段对应的至少两个动画名称,以及,对所述至少两个动画片段进行融合处理的融合参数;根据所述至少两个动画名称调用至少两个动画片段,并根据所述融合参数对所述至少两个动画片段进行融合处理;其中,所述融合配置信息为对预先创建的配置文件进行反序列化处理得到的信息,或,所述编辑端接收到的信息。

在本公开的示例性实施例中,所述与编辑端建立通信连接,包括:接收所述编辑端发送的端口信息,根据所述端口信息向所述编辑端发送通信连接请求;当接收到所述编辑端返回的应答消息时,与所述编辑端建立通信连接。

在本公开的示例性实施例中,所述融合参数包括融合方式;所述融合方式包括第一融合方式;所述根据所述融合参数对所述至少两个动画片段进行融合处理,包括:根据所述融合参数确定目标融合方式;若所述目标融合方式为所述第一融合方式,则将所述至少两个动画片段中的任一动画片段确定为目标动画;将所述目标动画相邻两帧内游戏角色的位姿变化量确定为融合动画的相邻两帧内游戏角色的位姿变化量。

在本公开的示例性实施例中,所述融合方式还包括第二融合方式,所述方法还包括:若所述目标融合方式为所述第二融合方式,则分别获取各个动画片段的相邻两帧内游戏角色的位姿变化量;将至少两个所述位姿变化量进行线性插值得到目标位姿变化量,将所述目标位姿变化量确定为融合动画的相邻两帧内游戏角色的位姿变化量。

在本公开的示例性实施例中,所述将至少两个所述位姿变化量进行线性插值得到目标位姿变化量,包括:获取各所述位姿变化量与对应融合权重的乘积;所述位姿变化量与融合权重之间具备预设映射关系;所述融合权重随时间线性变化;将至少两个所述乘积的和确定为所述目标位姿变化量。

根据本公开的第二方面,提供一种动画处理方法,包括:根据接收到的交互操作指令,确定是否加载预先创建的配置文件;若加载所述配置文件,则将对所述配置文件进行反序列化处理之后得到的融合配置信息发送至游戏端;若不加载所述配置文件,则将接收到的融合配置信息发送至所述游戏端。

在本公开的示例性实施例中,在根据接收到的交互操作指令,确定是否加载预先创建的配置文件之前,所述方法还包括:将端口信息发送至所述游戏端;接收所述游戏端发送的通信连接请求,并向所述游戏端发送应答消息。

在本公开的示例性实施例中,在与所述游戏端建立通信连接之后,所述方法还包括:获取输入关键字;基于正则匹配法匹配所述输入关键字对应的动画名称;将包含至少两个所述动画名称的融合配置信息发送至所述游戏端。

在本公开的示例性实施例中,在将接收到的融合配置信息发送至所述游戏端之后,所述方法还包括:获取优化融合参数;将所述优化融合参数发送至所述游戏端,以使所述游戏端根据所述优化融合参数对至少两个动画片段进行融合处理。

根据本公开的第三方面,提供一种动画处理装置,包括:连接模块,用于与编辑端建立通信连接;接收模块,用于接收所述编辑端发送的融合配置信息,所述融合配置信息包括至少两个动画片段对应的至少两个动画名称,以及,对所述至少两个动画片段进行融合处理的融合参数;融合模块,用于根据所述至少两个动画名称调用至少两个动画片段,并根据所述融合参数对所述至少两个动画片段进行融合处理;其中,所述融合配置信息为对预先创建的配置文件进行反序列化处理得到的信息,或,所述编辑端接收到的信息。

根据本公开的第四方面,提供一种动画处理装置,包括:确定模块,用于根据接收到的交互操作指令,确定是否加载预先创建的配置文件;反序列化处理模块,用于若加载所述配置文件,则将对所述配置文件进行反序列化处理之后得到的融合配置信息发送至所述游戏端;信息输入模块,用于若不加载所述配置文件,则将接收到的融合配置信息发送至所述游戏端。

根据本公开的第五方面,提供一种计算机存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述第一、二方面所述的动画处理方法。

根据本公开的第六方面,提供一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述第一、二方面所述的动画处理方法。

由上述技术方案可知,本公开示例性实施例中的动画处理方法、动画处理装置、计算机存储介质及电子设备至少具备以下优点和积极效果:

在本公开的一些实施例所提供的技术方案中,一方面,本公开通过游戏端与编辑端建立通信连接,能够在将游戏端与编辑端解耦的情况下,便于二者相互通信,使得游戏端能够根据编辑端发送的指令进行动画处理。并且,本申请能够在仅调整小部分代码的情况下,将游戏端替换为多种不同的目标游戏,使得该工具可以包含多种不同的游戏引擎,实现跨引擎使用,提高了工具的通用性。进一步的,接收编辑端发送的融合配置信息,该融合配置信息可以是编辑端对预先创建的配置文件进行反序列化处理得到的信息,也可以是用户根据自身喜好自行输入的信息,解决了相关技术中引擎自身的动画调试功能较为固定,无法根据用户自身想法对融合效果进行定制的技术问题,使得融合动画灵活可控。另一方面,根据至少两个动画名称调用至少两个动画片段,并根据融合参数对至少两个动画片段进行融合处理,从而,能够使得游戏融合过程在游戏端自身的引擎中进行,真实的反映游戏中的实际效果。

本公开应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示出本公开一示例性实施例中动画处理方法的流程示意图;

图2示出本公开一示例性实施例中动画处理方法的子流程示意图;

图3示出本公开一示例性实施例中动画处理方法的界面示意图;

图4示出本公开一示例性实施例中动画处理方法的界面示意图;

图5示出本公开一示例性实施例中动画处理方法的示意图;

图6示出本公开一示例性实施例中动画处理系统的结构示意图;

图7示出本公开一示例性实施例中动画处理方法的整体流程示意图;

图8示出本公开一示例性实施例中动画处理装置的结构示意图;

图9示出本公开另一示例性实施例中动画处理装置的结构示意图;

图10示出本公开示例性实施例中计算机存储介质的结构示意图;

图11示出本公开示例性实施例中电子设备的结构示意图。

具体实施方式

现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。

本说明书中使用用语“一个”、“一”、“该”和“所述”用以表示存在一个或多个要素/组成部分/等;用语“包括”和“具有”用以表示开放式的包括在内的意思并且是指除了列出的要素/组成部分/等之外还可存在另外的要素/组成部分/等;用语“第一”和“第二”等仅作为标记使用,不是对其对象的数量限制。

此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。

相关技术中,一般是通过以下两种方案进行动画融合:

①借助动画编辑软件来查看融合效果,如:autodeskmaya/autodesk3dsmax/autodeskmotionbuilder等。然而,借助于动画编辑软件(autodeskmaya等)的方法实际上未与游戏引擎的动画播放器结合起来,因此动画编辑软件中的融合效果不能100%反映游戏中的实际效果。况且不同游戏引擎的动画播放器具有一定的差异性,它们的动画播放机制和融合效果不尽相同,这在动画编辑软件中也无法很好地体现出来。因此,该方法局限性较大,无法因地制宜地解决动画融合的调试问题。

②动画融合技术与具体的游戏引擎相挂钩,引擎编辑器通过提供一个编辑窗口来支持动画融合的调试。然而,一些游戏引擎自带的动画融合技术虽然能完全反映游戏中动画融合的实际效果,但是其缺点是通用性不足、灵活性不强和扩展性较差。一方面,引擎提供的动画编辑与调试功能往往只适用于该引擎本身,无法跨引擎使用,因而通用性较差;另一方面,引擎自身的动画调试功能通常较为固定,并且由于提供给外界的扩展接口较少,导致灵活性不强,不利于使用者定制化地增加或调整动画融合的相关功能。

在本公开的实施例中,首先提供了一种动画处理方法,至少在一定程度上克服相关技术中提供的动画处理方法通用性和灵活性较差的缺陷。

图1示出本公开一示例性实施例中动画处理方法的流程示意图,该动画处理方法的执行主体可以是对动画进行处理的动画融合工具。

参考图1,根据本公开的一个实施例的动画处理方法包括以下步骤:

步骤s110,与编辑端建立通信连接;

步骤s120,接收编辑端发送的融合配置信息,融合配置信息包括至少两个动画片段对应的至少两个动画名称,以及,对至少两个动画片段进行融合处理的融合参数;

步骤s130,根据至少两个动画名称调用至少两个动画片段,并根据融合参数对至少两个动画片段进行融合处理。

在图1所示实施例所提供的技术方案中,一方面,本公开通过游戏端与编辑端建立通信连接,能够在将游戏端与编辑端解耦的情况下,便于二者相互通信,使得游戏端能够根据编辑端发送的指令进行动画处理。并且,本申请能够在仅调整小部分代码的情况下,将游戏端替换为多种不同的目标游戏,使得该工具可以包含多种不同的游戏引擎,实现跨引擎使用,提高了工具的通用性。进一步的,接收编辑端发送的融合配置信息,该融合配置信息可以是编辑端对预先创建的配置文件进行反序列化处理得到的信息,也可以是用户根据自身喜好自行输入的信息,解决了相关技术中引擎自身的额动画调试功能较为固定,无法根据用户自身想法对融合效果进行定制的技术问题,使得融合动画灵活可控。另一方面,根据至少两个动画名称调用至少两个动画片段,并根据融合参数对至少两个动画片段进行融合处理,从而,能够使得游戏融合过程在游戏端自身的引擎中进行,真实的反映游戏中的实际效果。

以下对图1中的各个步骤的具体实现过程进行详细阐述:

需要说明的是,可以预先创建一动画融合工具,该动画融合工具包括游戏端和编辑端。其中,游戏端用于接收编辑端发送的相关指令,并执行动画融合过程;编辑端用于根据接收到的信息,向游戏端发送指令,以使得游戏端根据用户指示执行动画融合过程。游戏端与编辑端以通信接口为纽带结合起来,可以通过rpc协议(remoteprocedurecall,即远程过程调用,也可以称之为远程程序调用,简称:rpc)进行通信。底层技术基于套接字通信,通信协议基于无状态、轻量级的远程过程调用传送协议(json-rpc)。示例性的,可以参考图2,图2示出本公开一示例性实施例中动画处理方法的结构图,具体示出动画融合工具中游戏端与编辑端的结构图,参考图2可知,游戏端的消息收发结构可以通过rpc通信与编辑端的消息收发接口进行通信。

通过rpc通信的方式,本公开可以将编辑端和游戏端分离开来,这样一方面使得工具与游戏引擎无关,可以跨引擎应用。另一方面,本发明的技术框架几乎适用于所有需要进行动画融合调试的游戏,并且能够与具体的动画引擎接口结合起来,真实地反映游戏中动画融合的实际效果。

继续参考图1,在步骤s110中,与编辑端建立通信连接。

具体的,在启动动画融合工具之后,编辑端可以将自身的端口信息(例如:ip(internetprotocol,互联网协议,简称:ip)地址及端口号)发送至游戏端,进而,游戏端可以根据该端口信息向编辑端发送通信连接请求,从而,在接收到编辑端发送的应答消息时,游戏端可以与编辑端建立通信连接。

在与编辑端建立通信连接之后,游戏端可以初始化游戏界面、游戏角色和动画数据库中的动画片段,并向编辑端发送初始化完成消息。初始化,就是把变量(variable)赋为默认值,把控件设为默认状态,把没准备的准备好。每个软件,或是工具,系统等都有一个初始化。如系统的初始化就是将系统还原到一开始做的备份的状态。

在步骤s120中,接收编辑端发送的融合配置信息,融合配置信息包括至少两个动画片段对应的至少两个动画名称,以及,对至少两个动画片段进行融合处理的融合参数。

示例性的,可以基于pyqt5在编辑端搭建一ui界面(userinterface,用户界面,也称人机界面,简称:ui),并通过ui界面的编辑窗口和搜索窗口来确定用户输入的动画名称,不但能够方便快捷地配置动画融合的关键参数,从而动态地观察不同情况下的融合效果,而且还能够通过一系列的辅助功能,如:动画搜索、动画信息查看、以及配置文件的快速保存和加载,来促进动画融合的调试。基于上述ui界面的编辑窗口,一方面,能够方便快捷地配置动画融合的相关参数,从而动态地观察不同情况下的融合效果;进一步的,还能够通过一系列的辅助功能,如:动画搜索、动画信息查看、以及配置文件的快速保存和加载,来促进动画融合的调试;进一步的,使得动画融合工具使用步骤简单,功能明确,具有较强的实用性。

在接收到游戏端发送的初始化完成消息之后,用户可以在上述ui界面的编辑窗口中输入交互操作指令,以确定是否加载预先创建的配置文件。示例性的,可以参考图3,图3示出本公开一示例性实施例中动画处理方法的界面示意图,具体示出上述编辑窗口的界面示意图,以下结合图3对具体的实施方式进行解释:

当用户点击图3中的“加载配置”按钮时,则编辑端可以加载预先创建好的配置文件,并对该配置文件进行反序列化处理,得到融合配置信息,进而,可以将该融合配置信息自动填充至上述ui界面的编辑窗口中,进而,当用户点击“执行按钮”时,编辑端可以将上述融合配置信息发送至游戏端。或者,用户也可以在上述编辑窗口中进行交互操作(输入或选择相关信息),以生成上述融合配置信息,进而,当用户点击“执行按钮”时,编辑端可以将上述融合配置信息发送至游戏端。

其中,上述融合配置信息可以包括以下内容:

第一,至少两个动画片段对应的至少两个动画名称(即图3中的a动画名、b动画名),该动画片段可以同为二维动画或同为三维动画。需要说明的是,点击“搜索”按钮将弹出动画搜索界面。在搜索框中,可以输入动画名称或动画关键字来快速搜寻动画。由于一些游戏涉及的动画数量巨大,通过此功能即可从大量的动画中快速找到并指定参与融合的动画片段。示例性的,可以参考图4,图4示出本公开一示例性实施例中动画处理方法的界面示意图,具体示出上述搜索窗口的界面示意图,从而,用户可以在上述搜索窗口中输入动画关键字,进而,编辑端可以基于正则匹配法匹配到动画关键字对应的动画名称,并通过鼠标左键双击选中目标动画名称。用户还可以在上述搜索窗口中输入动画名称,进而,可以选中该动画名称。

第二,对至少两个动画片段进行融合处理的融合参数。需要说明的是,该融合参数可以包括:

①切出点:a动画的切出点。为了更直观地进行设置,这里以动画时间百分比的形式来配置动画的切出点,因此切出点的取值区间是[0,1],0代表处于动画的开始时间,1代表处于动画的结束时间;

②融合时间(用t表示,单位:秒):融合时间是指a动画和b动画共存的时间。在融合时间内,a动画和b动画将共同影响游戏角色的动作及姿态,此时a动画和b动画对角色姿态的影响比重取决于融合的方式。当融合时间结束,a动画的比重为0%,b动画的比重为100%。

③切入点:b动画的切入点,同样,设置的是动画时间的百分比,取值区间是[0,1]。

示例性的,可以参考图5,图5示出本公开一示例性实施例中动画处理方法的示意图,具体示出上述切出点、融合时间、切入点的关系示意图,参考图5可知,融合时间是指上一段动画与下一段动画共存的时间。图5中,游戏角色在a动画的驱使下进行运动,展现a动画的动作姿态;播放至a动画的切出点时(可配置,默认是a动画的结束时间),开始融入b动画,在融合时间内,a动画和b动画在角色上共存,共同影响角色的动作及姿态;融合时间结束,a动画完全融出,b动画完全融入,角色继续播放b动画,直至结束。一般来说,切入点减去融合时间不应小于动画的开始时间,切出点不应大于动画的结束时间。

④融合方式:动画的融合方式。本公开中提供的融合方式可以包括:第一融合方式(使用a动画的位移及朝向或使用b动画的位移及朝向)、第二融合方式(线性插值)。本公开支持选择上述3种融合方式的任意一种,并且可以根据需求扩展更多的融合方式。

⑤循环播放:是否循环播放。若勾选,则在执行时将重复播放a动画和b动画的融合效果,否则只播放一次。

⑥动画信息:点击“查询”按钮,将弹出动画信息显示窗口,包含a和b动画默认融合时的切入点、切出点和动画时长等,能够方便地查看动画数据的默认参数。

⑦使用默认值:点击“设置”按钮,将按照动画原始的默认数据来设置a动画的切出点和b动画的切入点,并更新ui界面中的参数。

⑧执行时重置:设置执行时是否需要重置游戏环境。若勾选,则在执行时,首先重置游戏环境和游戏角色位置,然后再执行动画融合操作,否则将直接执行动画融合操作。

⑨其他设置:其他非关键配置可以在此进行设置,包括工具的ui样式和个性化设置等。

⑩默认保存路径:设置配置文件的默认保存路径。

保存方案到文件:点击“保存方案到文件”按钮,将调用配置文件保存模块将ui界面中的参数以json文件的形式保存到配置文件中,保存路径即为上述设置的默认保存路径。

加载配置:点击“加载”按钮,可以选择加载已保存的配置文件。底层将读取和解析配置文件,并将配置参数更新至ui界面。

执行按钮:点击“执行”按钮,将向游戏端发送执行指令和面板参数。游戏端接收指令并提取参数,最终在游戏界面中展示角色的融合效果。

继续参考图1,在步骤s130中,根据至少两个动画名称调用至少两个动画片段,并根据融合参数对至少两个动画片段进行融合处理。

在接收到上述融合配置信息之后,游戏端可以根据上述至少两个动画名称调用至少两个动画片段,并根据上述融合参数对至少两个动画片段进行融合处理。

具体的,参照上述步骤s120的相关解释,当根据上述融合参数确定出的目标融合方式(即用户选择的目标融合方式或上述配置文件中预先设置的目标融合方式)为:第一融合方式(使用a动画的位移及朝向),则可以将a动画确定为目标动画,并获取目标动画的相邻两帧内游戏角色的位姿变化量,并将该位姿变化量确定为融合动画的相邻两帧内游戏角色的位姿变化量。举例而言,以位姿变化量包括位移变化量和朝向变化量为例进行说明,当游戏中相邻两帧图像的时间间隔为dt时(比如,一个30帧的游戏,它的帧间隔为1/30秒,约等于0.033秒),在dt时间内,a动画的位姿变化量和朝向变化量分别为s1和y1,则生成的融合动画中相邻两帧内游戏角色的位姿变化量s=s1,相邻两帧内游戏角色的朝向变化量y=y1。

当根据上述融合参数确定出的目标融合方式(即用户选择的目标融合方式或上述配置文件中预先设置的目标融合方式)为:第一融合方式(使用b动画的位移及朝向),则可以将b动画确定为目标动画,并获取目标动画的相邻两帧内游戏角色的位姿变化量,将该位姿变化量确定为融合动画的相邻两帧内游戏角色的位姿变化量。举例而言,参照上述解释,当游戏中相邻两帧图像的时间间隔为dt时(比如,一个30帧的游戏,它的帧间隔为1/30秒,约等于0.033秒),在dt时间内,b动画的位姿变化量和朝向变化量分别为s2和y2,则生成的融合动画中相邻两帧内游戏角色的位姿变化量s=s2,相邻两帧内游戏角色的朝向变化量y=y2。

当根据上述融合参数确定出的目标融合方式(即用户选择的目标融合方式或上述配置文件中预先设置的目标融合方式)为:第二融合方式(线性插值),则可以分别获取各个动画片段的相邻两帧内游戏角色的位姿变化量;将至少两个位姿变化量进行线性插值得到目标位姿变化量,将目标位姿变化量确定为融合动画的相邻两帧内游戏角色的位姿变化量。

示例性的,继续参照上述步骤的相关解释,当位姿变化量包含位移变化量和朝向变化量时,则可以将至少两个位移变化量进行线性插值得到目标位移变化量,将至少两个朝向变化量进行线性插值得到目标朝向变化量,并将目标位移变化量确定为融合动画的相邻两帧内游戏角色的位移变化量,将所述目标朝向变化量确定为融合动画的相邻两帧内游戏角色的朝向变化量。

具体的,将至少两个位移变化量进行线性插值得到目标位移变化量的具体过程可以是:获取a动画的相邻两帧内游戏角色的位移变化量s1,以及,获取b动画的相邻两帧内游戏角色的位移变化量s2,进而,可以获取位移变化量s1与融合权重w1的第一乘积,以及,获取位移变化量s2与融合权重w2的第二乘积,将第一乘积与第二乘积之和确定为目标位移变化量s,则s=s1*w1+s2*w2。从而,可以将该目标位移变化量确定为融合动画的相邻两帧内游戏角色的位移变化量。

将至少两个朝向变化量进行线性插值得到目标朝向变化量的具体过程可以是:获取a动画片段的相邻两帧内游戏角色的朝向变化量y1,以及,获取b动画片段的相邻两帧内游戏角色的朝向变化量y2;进而,可以获取朝向变化量y1与融合权重w1的第三乘积,以及,获取朝向变化量y2与融合权重w2的第四乘积;将第三乘积与第四乘积之和确定为目标朝向变化量y,则y=y1*w1+y2*w2。从而,可以将该目标朝向变化量确定为融合动画的相邻两帧内游戏角色的朝向变化量。

需要说明的是,上述融合权重w1和融合权重w2可以是随时间线性变化的。示例性的,初始时,可以设置w1=0,w2=1-w1;随着融合过程的进行,w1线性增大,w2线性减小,具体的,w1(下一帧融合权重)=w1(上一帧融合权重)+1/t*dt,w2=1-w1;直至融合结束时,w1=1,w2=0。

在根据融合参数对至少两个动画片段进行融合处理之后,游戏端可以对融合动画进行播放显示。从而,用户可以直观的看到融合效果。

若融合效果不符合预期要求,则用户可以直接在上述ui界面的编辑窗口中进行修改,以将之前的融合配置信息修改为优化融合参数,进而,可以点击ui界面的“保存方案到文件”按钮,以将接收到的上述用户输入的信息以json文件的形式进行保存,进而,在点击执行按钮之后,编辑端可以将该优化融合参数发送至游戏端,使得游戏端根据该优化融合参数对上述至少两个动画片段进行重新融合处理。类似的,若本次融合效果仍然不符合预期时,用户可以再次更改参数,直至优化效果满足预期效果为止。

需要说明的是,基于本公开中的动画融合工具,用户只需调整编辑端的ui界面及游戏端的指令执行逻辑,即可完成定制化或自定义的功能需求。

示例性的,本公开还提供了一种动画处理系统,示例性的,可以参考6,图6示出本公开一示例性实施例中动画处理系统的结构示意图,以下结合图6对具体的实施方式进行解释。

游戏端601和编辑端602各自都包含了消息收发接口。消息收发接口作为游戏端和编辑端的中间层,起到了桥梁的作用,通过rpc的方式来进行双向通信。编辑端不仅能便捷地修改和设置动画融合相关参数,还能发送指令及参数到游戏端。游戏端接收到消息后,调动内部的处理单元进行处理,展示动画融合的效果。此外,游戏端也可以传递消息至编辑端,从而实现信息的同步。

具体的,游戏端可以包括消息收发单元6011、指令处理单元6012、初始化组件6013、动画播放组件6014、动画信息管理单元6015和其他组件6016。

游戏端的消息收发单元6011:用于接收编辑端传来的指令和参数,然后传递给指令处理单元6012进行处理,完成信息传递和结果反馈等功能。具体的,游戏端作为客户端,在启动时将根据编辑端发送的ip地址和端口号,向编辑端主动发起通信连接请求,两者随即建立起通信连接。

指令处理单元6012:用于解析并处理编辑端发送的消息和指令。具体的,在游戏端启动时,自动调用初始化组件6013,以创建出基本的游戏角色和游戏场景,并通过动画信息管理单元6015加载好所需的动画数据。进而,通过解析、提取编辑端传来的具体指令和参数,自动完成指令与逻辑之间的映射,从而进行相应的逻辑处理。在执行完融合过程时,将调用动画播放组件6014来完成融合效果的展示。

初始化组件6013:用于对指令处理单元6012提供一系列的初始化接口,包括了游戏角色、游戏场景及动画数据的初始化逻辑。组件内部对游戏内的初始化接口进行了一层封装,使得本公开在使用时能够方便地在游戏端完成初始化的逻辑。

动画播放组件6014:用于对指令处理单元提供动画播放及动画融合相关的接口。尽管不同游戏引擎的动画播放接口略有不同,但是动画播放组件完成接口封装,对外部模块提供了简单的调用接口。使得指令处理单元6012在执行动画融合指令的时候,通过传递动画融合的关键参数,并调用此模块的相关接口,便可展示出融合动画的实际效果。

动画信息管理单元6015:用于保存和管理动画数据库中的所有动画数据。本公开中所有的动画数据都保存在xml(extensiblemarkuplanguage,标准通用标记语言的子集,简称:xml)格式的文件中。对于动画融合,每一个动画的基本信息包括:动画总时长、默认的融合时的切入点和默认融合时的切出点等。为了便于统一管理,此模块内部含有xml文件解析组件,可以读取每个动画数据的基本信息并构建数据结构,方便程序使用。

其他组件6016:包含了与本公开核心内容无关的游戏端其他组件。

编辑端602可以包括消息收发单元6021、ui界面6022、动画搜索单元6023、配置文件保存与加载单元6024、配置文件6025。

编辑端的消息收发单元6021:用于向游戏端发送指令和参数来驱动游戏端动画融合逻辑的执行。具体的,在启动游戏时,将ip地址和端口号以启动参数的形式传递给游戏端,并接收游戏端发送的通信连接请求,从而与游戏端建立起通信连接。底层基于套接字通信,协议基于json-rpc。为方便调用和程序实现,上层封装成rpc调用接口,因此编辑端和游戏端可以非常方便地进行双向通信。

ui界面6022:包含一编辑窗口和一搜索窗口以及一系列的功能控件。在编辑窗口中,能够动态设置参与融合的动画名称及其融合参数。

动画搜索单元6023:用于为动画选择和搜索提供底层处理机制。动画搜索单元维护了一份动画名列表,包含游戏中的所有动画名称。搜索功能的实现基于字符串的正则匹配,以搜索框中的动画关键字作为输入,在搜索窗口中展示匹配到的动画名称。

配置文件保存及加载单元6024:提供了将ui界面中的融合参数保存为配置文件并加载的功能。配置文件的格式为json格式,配置文件保存及加载模块内部引入了python3的json模块,使用json.dump方法将融合参数保存为配置文件,使用json.loads方法来读取配置文件,所读取的参数将自动写入到编辑端的ui界面上。通过该单元,不但省去了人工反复编辑配置的繁琐过程,而且还大大提高了动化融合工具的使用效率,为记录问题和分析问题提供了快捷的方法。

配置文件6025:用于保存所有配置文件的集合。

本公开的技术方案大量使用组件化和单元模块化的思维进行系统设计,这样不仅有利于提高代码的调试效率,而且非常便于后期的代码维护。另外,基于本公开中的动画融合工具,用户(相关开发人员)能够方便地对工具进行扩展、移植和改造。首先,功能扩展方便,其次,工具移植成本较低,移植时编辑端的各单元几乎可以原封不动,仅需根据不同的游戏或引擎来调整游戏端的模块接口,便可因地制宜地将动画融合工具接入到不同的游戏当中,实现工具的跨引擎使用。

示例性的,可以参考图7,图7示出本公开一示例性实施例中动画处理方法的整体流程示意图,包含步骤s701-s708,以下结合图7对具体的实施方式进行解释。

在步骤s701中,开始;

在步骤s702中,启动动画融合工具;

在步骤s703中,游戏端与编辑端建立通信连接;

在步骤s704中,游戏端初始化游戏界面、游戏角色和动画数据库;

在步骤s705中,根据用户的交互操作指令,确定是否加载配置文件;

在步骤s706中,若是,则加载配置文件,并执行步骤s707,将配置文件中的融合配置信息自动写入ui界面;

若否,则执行步骤s707中,获取用户在编辑端ui界面上输入的融合配置信息;

在步骤s708中,用户点击执行按钮时,编辑端将上述融合配置信息发送至游戏端;

在步骤s709中,游戏端接收上述融合配置信息;

在步骤s710中,游戏端的根据融合配置信息进行动画融合处理;

在步骤s711中,用户在游戏端查看融合效果;

在步骤s712中,结束。

基于上述技术方案,一方面,本公开能够在仅调整小部分代码的情况下,将游戏端替换为多种不同的目标游戏,使得该工具可以包含多种不同的游戏引擎,实现跨引擎使用,提高了工具的通用性。进一步的,能够解决相关技术中引擎自身的额动画调试功能较为固定,无法根据用户自身想法对融合效果进行定制的技术问题,使得融合动画灵活可控。另一方面,能够使得游戏融合过程在游戏端自身的引擎中进行,真实的反映游戏中的实际效果。

本公开还提供了一种动画处理装置,图8示出本公开示例性实施例中动画处理装置的结构示意图;如图8所示,动画处理装置800可以包括连接模块801、接收模块802和融合模块803。其中:

连接模块801,用于与编辑端建立通信连接。

在本公开的示例性实施例中,连接模块还用于接收编辑端发送的端口信息,根据端口信息向编辑端发送通信连接请求;当接收到编辑端返回的应答消息时,与编辑端建立通信连接。

接收模块802,用于接收编辑端发送的融合配置信息,融合配置信息包括至少两个动画片段对应的至少两个动画名称,以及,对至少两个动画片段进行融合处理的融合参数。

融合模块803,用于根据至少两个动画名称调用至少两个动画片段,并根据融合参数对至少两个动画片段进行融合处理。

在本公开的示例性实施例中,所述融合参数包括融合方式;所述融合方式包括第一融合方式;所述根据所述融合参数对所述至少两个动画片段进行融合处理,包括:根据所述融合参数确定目标融合方式;若所述目标融合方式为所述第一融合方式,则将所述至少两个动画片段中的任一动画片段确定为目标动画;将所述目标动画相邻两帧内游戏角色的位姿变化量确定为融合动画的相邻两帧内游戏角色的位姿变化量。

在本公开的示例性实施例中,所述融合方式还包括第二融合方式,所述方法还包括:若所述目标融合方式为所述第二融合方式,则分别获取各个动画片段的相邻两帧内游戏角色的位姿变化量;将至少两个所述位姿变化量进行线性插值得到目标位姿变化量,将所述目标位姿变化量确定为融合动画的相邻两帧内游戏角色的位姿变化量。

在本公开的示例性实施例中,融合模块还用于获取各所述位姿变化量与对应融合权重的乘积;所述位姿变化量与融合权重之间具备预设映射关系;所述融合权重随时间线性变化;将至少两个所述乘积的和确定为所述目标位姿变化量。

上述动画处理装置中各模块的具体细节已经在对应的动画处理方法中进行了详细的描述,因此此处不再赘述。

本公开还提供了一种动画处理装置,图9示出本公开示例性实施例中动画处理装置的结构示意图;如图9所示,动画处理装置900可以包括确定模块901、反序列化处理模块902和信息输入模块903。其中:

确定模块901,用于根据接收到的交互操作指令,确定是否加载预先创建的配置文件。

在本公开的示例性实施例中,确定模块还用于将端口信息发送至游戏端;接收游戏端发送的通信连接请求,并向游戏端发送应答消息。

在本公开的示例性实施例中,确定模块还用于获取输入关键字;基于正则匹配法匹配输入关键字对应的动画名称;将包含至少两个动画名称的融合配置信息发送至游戏端。

反序列化处理模块902,用于若加载配置文件,则将对配置文件进行反序列化处理之后得到的融合配置信息发送至游戏端。

信息输入模块903,用于若不加载配置文件,则将接收到的融合配置信息发送至游戏端。

在本公开的示例性实施例中,信息输入模块还用于获取优化融合参数;将优化融合参数发送至游戏端,以使游戏端根据优化融合参数对至少两个动画片段进行融合处理。

上述动画处理装置中各模块的具体细节已经在对应的动画处理方法中进行了详细的描述,因此此处不再赘述。

应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。

此外,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。

通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本公开实施方式的方法。

在本公开示例性实施方式中,还提供了一种能够实现上述方法的计算机存储介质。其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施例中,本公开的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。

参考图10所示,描述了根据本公开的实施方式的用于实现上述方法的程序产品1000,其可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本公开的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。

计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、c++等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。

此外,在本公开的示例性实施例中,还提供了一种能够实现上述方法的电子设备。

所属技术领域的技术人员能够理解,本公开的各个方面可以实现为系统、方法或程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。

下面参照图11来描述根据本公开的这种实施方式的电子设备1100。图11显示的电子设备1100仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。

如图11所示,电子设备1100以通用计算设备的形式表现。电子设备1100的组件可以包括但不限于:上述至少一个处理单元1110、上述至少一个存储单元1120、连接不同系统组件(包括存储单元1120和处理单元1110)的总线1130以及显示单元1140。

其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元1110执行,使得所述处理单元1110执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。例如,所述处理单元1110可以执行如图1中所示的:步骤s110,与编辑端建立通信连接;步骤s120,接收编辑端发送的融合配置信息,融合配置信息包括至少两个动画片段对应的至少两个动画名称,以及,对至少两个动画片段进行融合处理的融合参数;步骤s130,根据至少两个动画名称调用至少两个动画片段,并根据融合参数对至少两个动画片段进行融合处理;其中,融合配置信息为对预先创建的配置文件进行反序列化处理得到的信息,或,编辑端接收到的信息。

存储单元1120可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(ram)11201和/或高速缓存存储单元11202,还可以进一步包括只读存储单元(rom)11203。

存储单元1120还可以包括具有一组(至少一个)程序模块11205的程序/实用工具11204,这样的程序模块11205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。

总线1130可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。

电子设备1100也可以与一个或多个外部设备1200(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备1100交互的设备通信,和/或与使得该电子设备1100能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口1150进行。并且,电子设备1100还可以通过网络适配器1160与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器1160通过总线1130与电子设备1100的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备1100使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。

通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施方式的方法。

此外,上述附图仅是根据本公开示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其他实施例。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。

起点商标作为专业知识产权交易平台,可以帮助大家解决很多问题,如果大家想要了解更多知产交易信息请点击 【在线咨询】或添加微信 【19522093243】与客服一对一沟通,为大家解决相关问题。

此文章来源于网络,如有侵权,请联系删除

相关标签: 系统
tips