数据处理方法及相关产品与流程
未命名
07-27
阅读:76
评论:0

1.本技术涉及计算机技术领域,尤其涉及一种数据处理方法、一种数据处理装置、一种计算机设备、一种计算机可读存储介质以及一种计算机程序产品。
背景技术:
2.随着互联网技术的迅速发展,游戏动画的制作越来越追求自然真实的视觉效果,尤其是游戏中虚拟角色的动画。然而,为虚拟角色实时生成动画是一项极具挑战性的任务。传统的方式通常是在动画师手工制作虚拟角色的动画,并将其存储至内存的动画素材库中,人工制作动画效率低,质量差。
技术实现要素:
3.本技术实施例提供一种数据处理方法及相关产品,可以自动化、智能化地生成动作动画,有效提高角色动画的制作效率和质量。
4.一方面,本技术实施例提供了一种数据处理方法,包括:
5.获取针对目标虚拟角色的用户指令,用户指令包括目标动作类型;
6.从控制策略模型库中选取属于目标动作类型的目标控制策略模型;目标控制策略模型是根据属于目标动作类型的目标动作片段训练的控制策略模型;
7.利用目标控制策略模型,对目标虚拟角色在第t个控制周期的状态进行处理,得到目标虚拟角色在第t+1个控制周期的动作控制策略,动作控制策略用于表征目标虚拟角色执行的动作,t为大于等于1的整数;
8.根据第t+1个控制周期的动作控制策略,生成目标虚拟角色在第t+1个控制周期的动作动画,以及目标虚拟角色在第t+1个控制周期的状态;
9.输出目标虚拟角色在所有控制周期的动作动画。
10.一方面,本技术实施例提供了一种数据处理装置,包括:
11.获取模块,用于获取针对目标虚拟角色的用户指令,用户指令包括目标动作类型;
12.选取模块,用于从控制策略模型库中选取属于目标动作类型的目标控制策略模型;目标控制策略模型是根据属于目标动作类型的目标动作片段训练的控制策略模型;
13.处理模块,用于利用目标控制策略模型,对目标虚拟角色在第t个控制周期的状态进行处理,得到目标虚拟角色在第t+1个控制周期的动作控制策略,动作控制策略用于表征目标虚拟角色执行的动作,t为大于等于1的整数;
14.处理模块,还用于根据第t+1个控制周期的动作控制策略,生成目标虚拟角色在第t+1个控制周期的动作动画,以及目标虚拟角色在第t+1个控制周期的状态;
15.输出模块,用于输出目标虚拟角色在所有控制周期的动作动画。
16.一方面,本技术实施例提供了一种计算机设备,包括:处理器、存储器以及网络接口;处理器与存储器、网络接口相连,其中,网络接口用于提供网络通信功能,存储器用于存储程序代码,处理器用于调用程序代码,以执行本技术实施例中的数据处理方法。
17.相应地,本技术实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序包括程序指令,程序指令当被处理器执行时,执行本技术实施例中的数据处理方法。
18.相应地,本技术实施例提供了一种计算机程序产品,该计算机程序产品包括计算机程序或计算机指令,该计算机程序或计算机指令被处理器执行时实现如本技术实施例中一方面提供的数据处理方法。
19.在本技术实施例中,通过获取用户指令,可以根据用户指令中包括的目标动作类型自动从控制策略模型库中选取相应的目标控制策略模型,并基于该目标控制策略模型确定动作控制策略,进而生成目标虚拟角色在所有控制周期的动作动画。上述方案,根据目标动作类型智能匹配目标控制策略模型,由于目标控制策略模型是基于目标动作类型的动作片段训练得到的,对特定动作类型的动作特征进行了精确地学习和捕捉,因此该目标控制策略模型可以准确地生成目标动作类型的动作动画,保证动画质量;目标控制策略模型自动处理虚拟角色的状态,生成满足用户期望的动画,摒弃人工制作的方式,有效提升动画制作效率;此外,当本方案应用到动画实时生成的场景中时,由于不需要存储不同动作类型的动画素材,而仅需调用训练好的控制策略模型就可以实时生成动画,尤其是在游戏角色动画的生成中,可以有效减小游戏占用的存储以及运行时的内存。
附图说明
20.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
21.图1是本技术一个示例性实施例提供的一种数据处理系统的架构图;
22.图2是本技术一个示例性实施例提供的一种数据处理方法的流程示意图;
23.图3是本技术一个示例性实施例提供的一种一个双足人物模型的角色坐标系和重心关节坐标系的关系;
24.图4是本技术一个示例性实施例提供的一种目标控制策略模型处理数据的示意图;
25.图5是本技术一个示例性实施例提供的一种目标控制策略模型训练方法的流程示意图;
26.图6是本技术一个示例性实施例提供的一种目标控制策略模型训练框架的结构示意图;
27.图7是本技术一个示例性实施例提供的另一种控制策略模型训练框架的结构示意图;
28.图8是本技术一个示例性实施例提供的一种数据处理装置的结构示意图;
29.图9是本技术一个示例性实施例提供的一种计算机设备的结构示意图。
具体实施方式
30.为了使本技术领域的人员更好地理解本技术方案,下面将结合本技术实施例中的
附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
31.为了更好地理解本技术实施例的方案,下面先对本技术实施例可能涉及的相关术语和概念进行介绍。
32.1、ue(unreal engine,虚幻引擎)
33.ue是一种实时三维创作工具,可制作照片级逼真的视觉效果和沉浸式体验,具体可以应用在游戏、建筑、影视、模拟等等行业。ue4(unreal engine 4,虚幻4引擎)编辑器提供的动力学模拟的功能可以使生成的动作动画更加逼真,因为它会严格根据物理定律,来模拟重力、外力碰撞与虚拟角色肌肉关节驱动的自身运动,而它的控制策略非常复杂:从玩家或者游戏开发人员期望游戏角色到达的位置与姿态,很难推导出应该给模拟器下达什么样的命令,基于规格的控制策略也难以获得。但是目前已经存在许多使用深度强化学习来训练控制策略的例子,比如drecon和deep mimic(一种动作生成算法)这样的强化学习方法可以用来为双足人物骨骼训练控制策略。
34.2、四元数
35.四元数是简单的超复数。复数是由实数加上虚数单位i组成,其中i=-1。相似地,四元数都是由实数加上三个虚数单位i、j、k组成,对于i、j、k本身的几何意义可以理解为一种旋转,其中i旋转代表x轴与y轴相交平面中x轴正向向y轴正向的旋转,j旋转代表z轴与x轴相交平面中z轴正向向x轴正向的旋转,k旋转代表y轴与z轴相交平面中y轴正向向z轴正向的旋转,-i、-j、-k分别代表i、j、k旋转的反向旋转。
36.3、运动学
37.专门描述物体的运动,即物体在空间中的位置随时间的演进而作的改变,完全不考虑作用力或质量等等影响运动的因素。
38.4、动力学
39.主要研究作用于物体的力与物体运动的关系。
40.5、深度强化学习
41.deep reinforcement learning,简称drl。顾名思义,也即深度学习和强化学习的结合。在游戏领域,深度强化学习能够让智能体在环境中进行探索来学习策略,不需要经过标记的样本。其中,强化学习是环境状态到动作空间的映射的一种学习,基础是马尔可夫决策过程(markov decision process,mdp);深度学习可以通过奖惩机制挖掘最优策略,侧重于学习解决问题的策略。深度学习则通过多层网络和非线性变换学习数据的分布式特征表示,侧重于对事物的感知和表达。
42.6、智能体
43.能通过传感器感知环境和通过执行器作用于环境的实体。深度强化学习智能体则是一种基于深度强化学习算法的计算实体。
44.7、人工智能
45.人工智能(artificial intelligence,ai)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解
智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。
46.本技术实施例提供的方案涉及人工智能领域下的计算机视觉技术和机器学习/深度学习。
47.其中,计算机视觉是一门研究如何使机器“看”的科学,更进一步的说,就是指用摄影机和电脑代替人眼对目标进行识别、跟踪和测量等机器视觉,并进一步做图形处理,使电脑处理成为更适合人眼观察或传送给仪器检测的图像。作为一个科学学科,计算机视觉研究相关的理论和技术,试图建立能够从图像或者多维数据中获取信息的人工智能系统。计算机视觉技术通常包括图像处理、图像识别、图像语义理解、图像检索、ocr、视频处理、视频语义理解、视频内容/行为识别、三维物体重建、3d技术、虚拟现实、增强现实、同步定位与地图构建等技术,还包括常见的人脸识别、指纹识别等生物特征识别技术。
48.机器学习(machine learning,ml)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。机器学习和深度学习通常包括人工神经网络、置信网络、强化学习、迁移学习、归纳学习、式教学习等技术。本技术实施例中对控制策略模型的训练可以利用强化学习的技术,具体可以是深度强化学习,例如deepmimic算法(一种动作生成算法)进行训练学习,最终学习到的目标控制策略模型可以用于生成动作动画。
49.可以理解的是,在本技术的具体实施方式中,涉及到虚拟角色的状态、关联状态、有关虚拟角色的其他数据以及用户指令等相关的数据,当本技术以上实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
50.下面将结合附图,对本技术实施例提供的数据处理系统的架构进行介绍。
51.请参见图1,图1是本技术一个示例性实施例提供的一种数据处理系统的结构示意图。如图1所示,包括数据库100和数据处理设备101,数据处理设备100和数据库101之间可以通过有线或无线的方式进行通信连接,数据库100可以是数据处理设备101的本地数据库或者是数据处理设备101可以访问的云端数据库。数据处理设备101可以是终端设备,在一个实施例中,终端设备可以是智能手机、平板电脑、智能可穿戴设备、智能语音交互设备、智能家电、个人电脑、车载终端等等设备,在此不做限制。
52.在一个实施例中,数据库100包括控制策略模型库,该控制策略模型库用于存储属于不同动作类型的控制策略模型,每个控制策略模型都是利用某类动作类型的目标动作片段训练得到的,并且都能够生成虚拟角色的某一种动作动画,不同动作类型的动作动画诸如可以是走路、跑步、跳跃、后空翻、侧空翻、回旋踢等等。这些动作动画都是满足运动学特性和动力学特性的动画,并且应用在虚拟角色中具备十分真实的视觉效果。此外,数据库
100还包括动画素材库,该动画素材库用于存储控制策略模型为虚拟角色生成的动作动画,动画素材库中包括的动作类型可以等同或多于控制策略模型所属的动作类型,可选地,动画素材库还可以存储动画师手动制作的虚拟对象的动作动画。
53.数据处理设备101可以获取针对目标虚拟角色的用户指令,根据用户指令中包括的目标动作类型,可以从控制策略模型库中选取出属于该目标动作类型的目标控制策略模型,进而利用该目标控制策略模型处理目标虚拟角色在第t个控制周期的状态,得到第t+1个控制周期的动作控制策略,其中,状态用于表征目标虚拟角色的特征信息,例如可以是当前游戏画面的原始信息经过诸如cnn等技术进行编码提取的特征。
54.根据该动作控制策略生成目标虚拟角色在第t+1个控制周期的动作动画以及状态,目标控制策略模型再接着处理目标虚拟角色在第t+1个控制周期的状态,生成接下来一个控制周期的动作动画以及状态,如此循环这个过程,可以生成目标虚拟角色在所有控制周期的动作动画并输出。可选地,数据处理设备101为终端设备,在一个实施例中,终端设备可以将所有控制周期的动作动画可以按照生成时间的顺序组合为动画序列,并存储至动画素材库中,后续终端设备可以响应用户的动画播放指令从动画素材库中抽取出目标动作类型的动作动画并在终端设备中进行播放。在另一个实施例中,终端设备也可以在检测到生成所有控制周期的动作动画时,直接在图像界面中将目标虚拟角色的动作动画通过渲染以及蒙皮处理之后播放出来。
55.数据处理系统可以应用于诸如游戏领域、影视领域等涉及虚拟角色的动作动画生成的场景。通过用户指令中包括的目标动作类型,可以从控制策略模型库中选取出目标动作类型的目标控制策略模型,根据目标控制策略模型可以生成对应目标动作类型的动作动画,这样可以高效地生成动作动画,并且利用训练好的目标控制策略模型能够有效提高生成的动作动画的质量。
56.下面结合附图,对本技术实施例提出的数据处理方法的具体实现方式进行详细阐述。
57.请参见图2,图2是本技术一个示例性实施例提供的一种数据处理方法的流程示意图。该方法可以由计算机设备(例如图1所示的数据处理设备101)执行。其中,该数据处理方法包括但不限于以下步骤。
58.首先对本技术实施例提供的数据处理方案所适用的场景进行简要介绍。在一实施例中,此数据处理方案可以应用于以下两个动画生成场景,分别是:
59.1)动画预先生成场景:此场景适用于设计动作动画的用户,例如动画师、美术人员等,设计动作动画的用户通过在客户端中设置相应的参数(例如动作动画的帧率、动作动画所属目标动作类型等),发起用户指令,通过预先设置的目标动作类型,从控制策略模型库中调用对应的目标控制策略模型生成目标动作类型的动作动画,该动作动画可以存储至动画素材库中,以便后续接收到该动作类型的动作动画的用户发起的动画播放指令时,从动画素材库中调用目标动作类型的动作动画进行显示。
60.2)动画实时生成场景:此场景适用于使用动作动画的用户,例如游戏玩家,当接收到该类用户发起的用户指令时,根据该用户指令中包括的目标动作类型,可以从控制策略模型中调用属于目标动作类型的目标控制策略模型,根据目标控制策略模型实时地生成目标虚拟角色的动作动画,并对动作动画进行渲染蒙皮等处理,展现到用户界面中。更详细地
实现方式可以参见以下内容。
61.s201,获取针对目标虚拟角色的用户指令。
62.目标虚拟角色是指待生成动作动画的虚拟角色,目标虚拟角色可以是游戏、动漫、电影、电视等中的虚拟角色,例如,目标虚拟角色为游戏角色,虚拟角色包括但不限于人型角色、仿真机器人、动物角色(例如恐龙、狮子)等,这些虚拟角色可以模拟绘制真实环境中的人或物等得到。
63.基于上述对动画生成场景的介绍,当本方案应用于动画预先生成场景中时,获取到的针对目标虚拟角色的用户指令可以是设计动作动画的用户(例如美术人员)在客户端中进行操作触发产生的;当本方案应用于动画实时生成场景中时,获取到的针对目标虚拟角色的用户指令可以是使用动作动画的用户(例如玩家)在客户端中进行操作触发产生的。客户端可以运行于终端设备中。例如,用户通过终端设备的物理键盘或鼠标点击触发,也可以是通过屏幕触控的方式触发,例如手势感应(诸如长按、单击、连续点击),还可以是语音感应、体式感应等等,对用户指令的触发方式在此不做限定。
64.获取到的用户指令包括目标动作类型。该目标动作类型可以由用户直接设置(主要用于预先生成动作动画的场景)或通过映射标识间接选择(主要用于使用动作动画的场景),这样目标动作类型可以是用户期望的动作类型,可用于指示目标虚拟角色最终生成符合用户期望的动作动画。动作类型可以包括奔跑、行走、跳跃、后空翻、回旋踢等,每一种动作类型都对应一段动作动画。在动作动画生成的过程中,根据目标动作类型可以指示客户端从控制策略模型库中选取何种控制策略模型作为目标控制策略模型,即下述步骤s202。
65.s202,从控制策略模型库中选取属于目标动作类型的目标控制策略模型。
66.控制策略模型库用于存储训练好的属于不同动作类型的控制策略模型,每个控制策略模型都是利用某一种动作类型的动作片段训练得到的,其中,动作片段可以是动作捕捉采集的,也可以是美术手工设计的,还可以是各种智能的动作生成算法生成的,还可以是从互联网中获取的动作片段,对于动作片段的来源在此不做限制。需要说明的是,该动作片段可能不符合动力学模拟特性,看起来不够逼真,但也可能是符合动力学模拟特性的,例如直接来源于真实视频中的动作片段,对此不做限定。
67.可见,控制策略模型库中存储的控制策略模型和动作类型之间存在映射关系,由此,根据针对目标虚拟角色的用户指令中包括的目标动作类型,可以从控制策略模型库包括的多个控制策略模型中选取出属于该目标动作类型的目标控制策略模型,该目标控制策略模型是根据属于目标动作类型的目标动作片段训练的控制策略模型。此处的目标动作类型即用户指令中的目标动作类型,在控制策略模型库中包括的所有动作类型中是输入的目标动作类型匹配的动作类型,例如后空翻。通过从控制策略模型库中选取用于生成符合用户期望的动作动画的目标控制策略,按照下述步骤可以实时或者提前生成动作动画。对于目标控制策略模型的具体训练过程可以参见图5对应实施例的描述,在此先不详述。需要说明的是,对应控制策略模型中存储的所有控制策略模型,均可以采用如图5对目标控制策略模型的训练方式实现。
68.此处将训练好的控制策略模型和动作类型对应,虽然在训练阶段通过不同动作类型的动作片段训练多个控制策略模型,而非针对所有动作类型泛化出一个控制策略模型,但是在控制策略模型应用阶段可以不用输入目标动作片段进行处理,而是直接将控制策略
模型和动作类型对应,利用目标动作类型的目标控制策略得到动作动画,进而有效降低目标控制策略模型的数据处理量。
69.在一个实施例中,控制策略模型可以包括策略神经网络(或者说策略网络),该策略神经网络可以是基于深度强化学习算法(例如deep mimic算法或者)建立的全连接神经网络(multi-layer perceptron,mlp),或者卷积神经网络,或者残差神经网络等等,在此对该策略神经网络的类型不做限制。根据目标动作类型的目标动作片段训练控制策略模型的内容可以参见图5对应实施例中的描述,在此先不做详述。可选地,控制策略模型可以设置在客户端的动作模拟引擎(例如ue4)程序中,利用动作模拟引擎的物理模拟器进行强化学习训练,这样有助于生成复杂的控制策略,从而利用训练好的目标控制策略模型生成带有动力学模拟的高质量动画,并且通过将控制策略模型设置在动作模拟引擎中进行训练,得到的目标策略模型处理数据无需额外编程,可自动兼容动作模拟引擎程序,更加便于开发人员使用和维护。
70.s203,利用目标控制策略模型,对目标虚拟角色在第t个控制周期的状态进行处理,得到目标虚拟角色在第t+1个控制周期的动作控制策略,t为大于等于1的整数。
71.第t个控制周期属于目标虚拟角色的当前控制周期,控制周期可以表征控制目标虚拟角色模拟动作的时间,例如0.1s。每个控制周期的时间可以相同,或不同,例如第1个控制周期为0.1s,第2个控制周期可能为0.2s,第3个周期可能为0.05s,这可能取决于控制策略模型处理的数据量,控制周期也可以与时间无关,仅仅表示一组事件按同样的顺序重复出现,重复出现一次就称为一个控制周期。目标虚拟角色在每个控制周期都有对应的状态,状态可以表征目标虚拟角色的特征信息,每个控制周期的状态都可以被客户端获取。可选地,状态可以包括描述目标虚拟角色信息的多种数据,例如关节位置、关节姿态以及关节转角。在此需要说明的是,客户端获取到的目标虚拟角色在每个控制周期的状态并不是目标虚拟角色最原始的数据,而是对获取到的原始数据计算整理得到的。
72.在一个实施例中,客户端可以采集目标虚拟角色在第t个周期的初始状态信息,初始状态信息是目标虚拟角色在当前控制周期下最原始的数据,然后根据该初始状态信息可以确定在当前控制周期的状态,并将状态整理为符合目标控制策略模型处理的数据格式,例如目标虚拟角色在第t个控制周期的状态是按照预设的格式整理的多维向量。
73.可选地,初始状态信息可以包括当前角色状态、环境参数、当前模拟时间等信息,其中,当前角色状态用于反映目标虚拟角色在当前处理周期所呈现的状态,当前角色状态可以包括目标虚拟角色(为方便描述,下述简称角色)的位姿信息,例如可以包括角色在世界坐标系中的位置与姿态、角色重心关节(例如pelvis关节)相对于角色的位置与姿态、所有参与物理学模拟的骨骼关节相对于角色的位置,上述位置或姿态均可以用四元数表示;环境参数用于表征目标虚拟角色所处的虚拟环境,可以是与深度强化学习相关的环境参数;当前模拟时间是指动力学模拟中用于积分的时间,而非世界时钟的时间。
74.示例性地,如图3展示了在动力学模拟引擎(例如ue4)中的一个双足人物模型的角色坐标系和重心关节坐标系的关系,其中,角色坐标系为世界坐标系,可以描述目标虚拟角色在世界坐标系中的位置,重心关节坐标系用于描述双足人物模型的重心关节的运动位置,在重心关节坐标系下操作可以驱动该重心关节运动,从而达到期望的位置,这里的重心关节可以为pelvis(骨盆)关节。
75.上述数据中,所有参与物理学模拟(即动力学模拟)的骨骼关节相对于角色的姿态,可以获得所有参与动力学模拟的骨骼关节相对于其母关节的旋转,即关节转角,通过对关节转角的差分,还能推算得到包括速度和角速度在内的所有状态信息。
76.以双足人骨骼模型为例,在双足人骨骼模型中,除了pelvis关节之外,还有18个可转动骨骼关节,每个可转动骨骼关节有不同维的自由度,如下表1所示。
77.表1 可转动关节以及自由度
[0078][0079][0080]
可以发现,每个骨骼关节可转动的自由度从1维到3维不等,18个骨骼关节按照转换旋转角度的方式,共计可产生有效的32个自由度。因此,在客户端获取到初始状态信息之后,利用其包括的当前角色状态的18组表示骨骼关节旋转的姿态四元数,就能求出32个表示骨骼关节转动的角度值,即关节转角。
[0081]
根据关节转角、关节位置以及关节姿态就可以完整表征目标虚拟角色当前状态(下述简称角色状态)。示例性地,关节位置为重心关节位置,关节姿态为重心关节姿态,且重心关节位置用重心关节pelvis在世界坐标系中的3维位置坐标表示,重心关节姿态为重心关节相对于角色的姿态,用6维的forward-up向量表示(例如图3中示出的坐标系1和坐标系2)。由此,32维关节转角、3维重心关节位置以及6维重心关节姿态,共计41维向量即可包含在目标虚拟角色的状态中。
[0082]
可选地,目标虚拟角色在第t个控制周期的状态包括多个控制周期的角色状态,角色状态可以由关节转角、关节位置、关节姿态表征,且为多维的向量。示例性地,每个控制周
期的角色状态都是41维的向量,将目标虚拟角色在第t个控制周期的状态设置为41
×
7=287维的向量,其中,包括目标虚拟角色在第t个控制周期的角色状态,以及目虚拟角色在历史控制周期,例如第t-1个控制周期以及第t-2个控制周期的角色状态,而剩余的4个维度的数值可以置为0或者其他随机的常量,也即这7控制周期的角色状态共同组合为目标虚拟角色在第t个控制周期的状态。
[0083]
在另一个实施例中,初始状态信息还可以包括目标动作类型的动作片段,该目标动作类型的动作片段的相关参数信息和目标虚拟角色在各个控制周期的角色状态包括的内容类似,例如目标虚拟角色当前状态包括关节转角、重心关节位置、重心关节姿态共计41维的向量,那么,目标动作片段的相关参数信息也可以包括关节转角、重心关节位置、重心关节姿态共计41维的向量。这些信息都可以用于描述目标动作片段中参考虚拟角色的目标姿态,该目标姿态为目标虚拟角色在下一个或多个控制周期跟踪的姿态。为了保证目标控制策略模型最佳的处理效果,可以将目标动作片段的相关参数信息和目标虚拟角色的角色状态一同整理排列为observation向量,即第t个控制周期的状态,根据然后由目标控制策略模型处理。示例性地,以第t个控制周期为基准,在目标动作片段中选取第t+1个控制周期、第t+2个控制周期、第t+5个控制周期以及第t+10个控制周期的角色状态,以及,选取目标虚拟角色在第t-1个控制周期以及第t-2个控制周期的角色状态,结合目标虚拟角色在第t个控制周期的角色状态作为observation向量,其中,每个控制周期的角色状态中包括32维关节转角、3维关节位置以及6维关节姿态,构成41维数据,而7个不同的控制周期的角色状态则构成287维的observation向量,用于表示目标虚拟角色在第t个控制周期的状态,其中包括的不是置为0或其他常量的值。
[0084]
也就是说,第t个控制周期的状态可以包括关节转角、关节位置、关节姿态。其他参数(例如环境参数、当前模拟时间)也可以包括在状态中,但后续处理主要关注关节转角、关节位置、关节姿态这几个数据。可选地,可以按照观察(observation)向量的格式将这些数据整理进行排列整理,然后输入至目标控制策略模型进行处理,输出目标虚拟角色在第t+1个控制周期的动作控制策略。具体的处理方式可以参见下述介绍。
[0085]
请参见图4,是本技术实施例提供的一种目标控制策略模型处理数据的示意图,客户端上传目标虚拟角色的状态给目标控制策略模型,然后由目标控制策略模型计算,得到控制命令,即动作控制策略。
[0086]
动作控制策略用于表征目标虚拟角色执行的动作,动作控制策略也被称为控制命令action,具体地,在动力学模拟引擎中可以引导带有动力学仿真的目标虚拟角色完成控制命令指示的既定动作。以目标虚拟角色为双足人骨骼模型为例,动作控制策略表征的动作可以通过目标虚拟角色中各个骨骼关节在下一个周期应该转动的角度值,即第t+1个控制周期的关节转角体现,与此同时,该关节转角也可以作为第t+1个控制周期的状态包含的数据。
[0087]
s204,根据第t+1个控制周期的动作控制策略,生成目标虚拟角色在第t+1个控制周期的动作动画,以及目标虚拟角色在第t+1个控制周期的状态。
[0088]
第t+1个控制周期的动作控制策略在第t个控制周期结束后执行,并且目标虚拟角色执行该动作所产生的数据作用于第t+1个控制周期。也即,在第t个控制周期结束之后,目标虚拟角色根据第t个控制周期的状态生成的动作控制策略在第t+1个控制周期内运动,可
以生成相应的动作动画,至此,目标虚拟角色在第t+1个控制周期内按照动作控制策略完成动作,并且目标虚拟角色的姿态以及所处的位置等信息都有所改变,也即目标虚拟角色的状态发生变化,从而目标虚拟角色产生新的状态,即第t+1个控制周期的状态。
[0089]
在一实施例中,步骤s204的具体实现方式可以如下步骤1)~3):
[0090]
1)根据第t个控制周期的状态和第t+1个控制周期的动作控制策略确定目标虚拟角色中各个目标转动对象的转动力矩。
[0091]
目标虚拟角色包括多个目标转动对象,以目标虚拟角色为双足人物模型为例,目标虚拟角色包括的多个目标转动对象为多个可转动关节,例如上述表1示出的18个可转动关节。为了让目标虚拟角色符合动力学特性,动作控制策略可以被运用到动作模拟引擎(如ue4)中的物理模拟器(也即动力学模拟器)的动力学模拟计算中,直到第t个控制周期结束。各个目标转动对象的转动力矩也称为转矩,具体的表达可以如下式(1):
[0092][0093]
其中,spring和damping是两个控制系统系数,一般默认选择为常数10000和2000,可以由用户自行调整使用变化的数值,达到更加理想的控制效果。v
x
是当前控制周期的关节转角的角速度,q
x
表示当前的关节转角,其中x为连续时间,通过对不同的关节转角进行差分可以得到关节转角的角速度。v
x
和q
x
属于第t个控制周期内的状态。
[0094]
2)根据转动力矩,控制目标虚拟角色的各个目标转动对象在第t+1个控制周期内进行运动,以生成目标虚拟角色在第i+1个训练周期的动作动画。
[0095]
根据计算得到的转矩,各个可转动关节可以按照相应的转矩进行转动,各个可转动关节的转动构成目标虚拟角色在第t+1个控制周期内的运动,进而生成动作动画,由此,在目标虚拟角色运动结束之后,生成的目标虚拟角色的新的状态,并将其作为目标虚拟角色在第t+1个控制周期的状态。
[0096]
3)在目标虚拟角色运动结束后,获取目标虚拟角色在第t+1个控制周期的状态。
[0097]
在一实施例中,获取目标虚拟角色在第t+1个控制周期的状态的方式包括:获取目标虚拟角色的环境信息和位姿信息;根据位姿信息和环境信息生成目标虚拟角色在第t+1个控制周期的状态。其中,环境信息用于表征目标虚拟角色所处的虚拟环境;位姿信息用于表征目标虚拟角色的位置和姿态。目标虚拟角色根据动作控制策略生成的动作动画运动,例如,走路时迈出右脚的动作动画,运动结束,也即到达动作控制策略指示的相应姿态,这时目标虚拟角色各个可转动目标对象,例如各个可转动关节发生的位置和姿态均发生变化,即这里获取到的姿态信息相比于前一周期是新的姿态信息,环境信息和位姿信息对应可以为上述是初始状态信息,例如位姿信息包括角色(component)在世界坐标系中的位置与姿态四元数,角色pelvis关节相对于component的位置与姿态四元数、所有参与物理学模拟的骨骼关节相对于component的姿态四元数。根据第t+1个控制周期收集到的初始状态信息确定状态可以参考步骤s203中的介绍,在此不做赘述。
[0098]
需要说明的是,在第t+1个控制周期的状态的处理也按照前述处理第t个控制周期的状态实现,依次循环,直到处理到预设数量个控制周期的状态,得到结果之后,就可以得到所有控制周期的动作动画。当应用在提前生成动画场景下时,预设数量可以由设计动作动画的用户,例如动画师、游戏美术人员来决定;当应用在实时生成场景下时,预设数量还可以包含在用户指令中,即由目标虚拟角色所处的游戏场景和玩家操作来决定。
[0099]
通过将动作控制策略应用于动作模拟引擎的物理模拟器中进行动力学模拟计算,得到各个可转动目标对象的转动力矩,进而根据该转动力矩进行运动,可以生成动画效果更加逼真,并且满足动力学特性的高质量动作动画。
[0100]
s205,输出目标虚拟角色在所有控制周期的动作动画。
[0101]
当根据目标虚拟角色在当前控制周期的状态获取到下一个控制周期的状态之后,重复执行步骤s204,可以生成所有控制周期的动作动画。每个控制周期的动作动画为一帧动画数据,所有控制周期的动作动画可以构成一个具有一定时长的动作片段(或者说角色动画),例如3s的走路片段,2s的后空翻。此处需要说明的是,根据目标控制策略模型输出的动作控制策略生成的所有周期的动作动画,属于目标动作类型,即用户指令包括的目标动作类型,这样生成的动作动画是符合用户期望的。之后可以将目标虚拟角色在所有控制周期的动作动画进行输出,更详细地可以参见下述介绍。
[0102]
如此,通过上述步骤,目标控制策略模型自动生成目标动作类型的动画序列,如果设计动作动画的用户重复上述过程,输入不同的动作类型,可以高效地得到不同动作类型的动作动画,进而提高不同动作类型的动作动画的生产效率,大大减轻动画师手动制作目标虚拟角色的动作动画的工作量,当应用在游戏领域,不同动作类型的动作动画高效的生成方式还可以进一步减轻游戏开发工作,缩短开发流程。
[0103]
在一个实施例中,步骤s205的可选实现方式可以是:
[0104]
将所有控制周期的动作动画按照记录的生成时间由小到大的顺序,组合为动画序列,并将动画序列存储至动画素材库;动画序列的动作类型属于目标动作类型;当接收到包含目标动作类型的动画播放指令时,响应于动画播放指令从动画素材库中调取动画序列进行播放。
[0105]
每个控制周期的动作动画对应记录有生成时间,该生成时间可以是在世界时钟下的一个时间点,根据记录的生成时间可以对所有控制周期的动作动画进行排序,构成具有先后顺序的动作序列,该动作序列可以是连续动作空间的动作。之后,动画序列可以存储至动画素材库中,并对应标记为目标动作类型,以便于在接收到的包含目标动作类型的动画播放指令时,响应于该动画播放指令从动画素材库中调取该目标动作类型的动画序列进行播放。
[0106]
对于不同目标控制策略模型处理得到的动画序列,都可以存储到动画素材库中,每个动画序列对应为一种动作类型,可选地,动画素材库中的所有动画序列都是由不同目标控制策略模型生成的动画序列,用户在发起动画播放指令时,可以根据动画播放指令中包括的动作类型,从动画素材库中调取对应动作类型的动画序列进行播放。
[0107]
采用这种方式,将通过目标控制策略模型自动生成目标虚拟角色对应的动作序列存储在动画素材库中,并在用户发起动画播放指令时匹配到对应动作类型的动作序列,这样可方便需要使用动作动画的用户快速准确地从动画素材库中查找到目标动作类型的动作序列进行播放。
[0108]
在另一实施例中,步骤s205的可选实现方式还可以是:
[0109]
按照设定的渲染帧率对目标虚拟角色在所有控制周期的动作动画分别进行渲染处理,并将蒙皮网格施加至渲染处理后的动作动画中,得到待播放动作动画;待播放动画包括多个动画帧;在图形界面中播放多个动画帧,多个动画帧中的每一个动画帧是在达到同
步等待时长之后显示;同步等待时长是根据设定的渲染帧率确定的。
[0110]
在一个实施例方式中,目标虚拟角色在所有控制周期的动作动画生成之后,可以对动作动画进行渲染、蒙皮之后直接在图形界面中播放出来,在另一个实施方式中,还可以是每得到一个控制周期的动作动画之后,就对该控制周期的动作动画进行渲染、蒙皮处理,并在达到同步等待时长之后显示到图像界面中。而无需等待用户发起的动画播放指令,适用于实时地生成动作动画场景。其中,设定的渲染帧率是指待渲染的动作序列的帧率,帧数越高动作序列包含的动作动画内容越多。通过对目标虚拟角色在所有控制周期的动作动画分别进行渲染,得到渲染处理后的动作动画,然后对渲染处理后的动作动画进行蒙皮处理,所谓蒙皮,即是把三维骨骼顶点联系至骨骼的位置的过程。具体地,可以将蒙皮网格施加至渲染处理后的动作动画中,该蒙皮网格是指包裹在骨骼周围的三角形网格,目标虚拟角色的一个或多个骨骼可以控制网格的每个顶点。这样构成的待播放动画即骨骼蒙皮动画,骨骼控制蒙皮运动,而骨骼本身的运动,即由动作控制策略来实现。之后,在图形界面播放待播放动作动画包括的多个动画帧时,还存在同步等待时长,每帧动画在同步等待时长之后显示到图形界面,可以使得动作动画更加符合真实的时间速率。
[0111]
示例性地,以帧率为120帧的动作动画为例,对动作序列中各个控制周期的动作动画分别进行渲染,那么动作动画中的每一帧画面(即每一个动画帧)的计算所需的时间可能远远小于1/120秒,为了使得最终播放的画面看起来和真实时间的速率一致,在此强行等待到了1/120秒后才把动画帧播放出来。这也称为时间同步等待机制,利用这种时间等待同步机制,可以图形界面播放的动画帧符合真实的时间速率,从而更加生动逼真。
[0112]
在一个实施例中,上述渲染、蒙皮等处理为用来部署的动作模拟引擎的功能,即用来部署的动作模拟引擎带有图形渲染以及图形界面,这样目标虚拟角色的动作动画可以生动地展示给用户,而用来训练控制策略模型和用来部署目标控制策略模型的动作模拟引擎(例如ue4)环境有所不同,用来训练控制策略模型动作模拟引擎(例如ue4程序),为了加快数据收集的速度,提高训练的效率,并不带有图形渲染和用于展示的动画的图形界面,并且不具有上述等待机制,一旦该引擎中的动力学模拟器计算出每个训练周期(例如0.1秒)后最新状态,就立刻打包发送到服务器上,这也是为了在最大程度上提高训练效率。
[0113]
本技术实施例提供的方案,通过获取用户指令,可以根据用户指令中包括的目标动作类型自动化、智能化地从控制策略模型库中选取相应的目标控制策略模型,由于目标控制策略模型是基于一种动作类型的动作片段训练得到的,对特定动作类型的动作特征进行了精确地学习和捕捉,因此该目标控制策略模型可以准确地生成目标动作类型的动作动画,保证动画质量;目标控制策略模型自动处理虚拟角色的状态,生成满足用户期望的动画,摒弃人工制作的方式,有效提升动画制作效率;并且在目标控制策略模型处理数据的过程中,通过对目标虚拟角色的转动力矩的计算,可以对目标虚拟角色动作动画进行物理约束,符合相应地物理定律,由此可以生成更加逼真的动作动画。此外,当本方案应用到动画实时生成的场景中时,由于不需要存储不同动作类型的动画素材,而仅需调用训练好的控制策略模型就可以实时生成动画,尤其是在游戏角色动画的生成中,可以有效减小游戏占用的存储以及运行时的内存。此外,在输出所有周期的动作动画时,存在时间同步等待机制,可以进一步提升动作动画播放的效果。
[0114]
为了更好地理解本方案的内容,下面对目标控制策略模型的训练过程进行详细说
明。请参见图5,是本技术实施例提供的一种目标控制策略模型训练方法的流程示意图,该方法由客户端执行,包括但不限于以下步骤。
[0115]
s501,获取目标虚拟角色在第i个训练周期的关联状态;其中,i为大于或等于1的整数。
[0116]
训练周期是控制策略模型在训练时期的时间步长,例如0.1s,在对控制策略模型的训练阶段,每个训练周期都是相同的。第i个训练周期是当前正在训练的时间周期,第i个训练周期的关联状态可以包括前一个或多个历史训练周期的状态,可以理解的是,若是首个训练周期,那么关联状态则仅包括首个训练周期的目标虚拟角色的状态。这些关联状态用于训练目标虚拟角色的动作控制策略,可以包括目标虚拟角色本身的数据和/或目标动作片段中参考虚拟角色的数据。
[0117]
在一个实施例中,第i个训练周期的关联状态包括:目标虚拟角色的第一状态,以及目标动作片段中参考虚拟角色的第二状态;第一状态包括目标虚拟角色在第i个训练周期的状态,和目标虚拟角色在历史训练周期的状态;第二状态包括参考虚拟角色在参考训练周期的状态;参考训练周期由第i个训练周期和设定训练周期数确定;状态包括位置信息、姿态信息以及关节转角。
[0118]
具体的,目标动作片段是给定的固定动画片段,属于一种目标动作类型,这里的目标动作类型是多种动作类型中的任一种,例如回旋踢的动作。该目标动作片段可以是动作捕捉采集的,也可以是美术手工设计的,还可以是各种智能的动作生成算法生成的,该目标动作片段可能不符合动力学模拟特性,看起来不够逼真,但也可能符合动力学模拟特性,对此不做限定。控制策略模型训练的任务是让动作模拟引擎中带有动力学模拟的目标虚拟角色尽量跟踪该目标动作片段,并且利用动作控制策略来控制目标虚拟角色生成的动作动画是符合动力学特性的。
[0119]
目标动作片段中的参考虚拟角色所做出的动作即目标虚拟角色跟踪的动作。因此,参考虚拟角色也有状态,具体用下述第二状态表示。关联状态中的第一状态是与目标虚拟角色直接关联的状态,第一状态不仅包括目标虚拟角色在当前训练周期的状态,即第i个训练周期的状态,还可以包括历史周期的状态,该历史训练周期是第i个训练周期为基准进行选取,例如上一训练周期(第i-1个训练周期)的状态,上二训练周期(第i-2个训练周期)的状态。当然,此处的i大于或等于3,对应选取的历史训练周期才有意义。此处将目标虚拟角色在历史训练周期的状态包含第一状态中,可以使得后续控制策略模型加强对历史动作动画的学习训练,避免遗忘。
[0120]
第二状态是与参考虚拟角色直接关联的状态,第二状态中参考虚拟角色在参考训练周期的状态包括以第i个训练周期为基准确定的未来多个训练周期。其中,设定训练周期数例如是1、2、3等数值。例如,以当前训练周期为准的下一个训练周期(即第i+1个训练周期)、下两个训练周期(即第i+2个训练周期)等。无论是目标虚拟角色的状态还是目标动作片段中虚拟角色的状态,都包含位置信息、姿态信息以及关节转角。将该目标动作片段中的状态作为参考,可以使得目标虚拟角色根据当前训练周期以及历史训练周期的状态获知下一训练周期各个关节转动的角度,以更好地进行跟踪训练。
[0121]
在一个实施例中,按照前述图2对应实施例中获取目标虚拟角色的状态的介绍,此处的第一状态和第二状态包含的具体内容也可以按照同样的方式获取,示例性地,获取到
的第一状态和第二状态分别可以包括如下内容:
[0122]
1)第一状态
[0123]
41维当前(第i个训练周期)状态:pi,oi,qi[0124]
41维上一周期(第i-1个训练周期)状态:p
i-1
,o
i-1
,q
i-1
[0125]
41维上二周期(第i-2个训练周期)状态:p
i-2
,o
i-2
,q
i-2
[0126]
2)第二状态
[0127]
41维目标动作片段下一周期(第i+1个训练周期)状态:p
gi+1
,o
gi+1
,q
gi+1
[0128]
41维目标动作片段下二周期(第i+2个训练周期)状态:p
gi+2
,o
gi+2
,q
gi+2
[0129]
41维目标动作片段下五周期(第i+5个训练周期)状态:p
gi+5
,o
gi+5
,q
gi+5
[0130]
41维目标动作片段下十周期(第i+10个训练周期)状态:p
gi+10
,o
gi+10
,q
gi+10
[0131]
其中,p表示关节位置(例如pelvis关节位置),o表示关节姿态(例如pelvis关节位置),q表示关节转角,41维表示3维的关节位置、6维的关节姿态以及32维的关节转角。
[0132]
将上述示例的第i训练周期处理的关联状态所包含的所有状态整理为287(41
×
7=287)维的向量,这个向量可以称为观察向量observation。需要说明的是,上述第一状态和第二状态仅为示例内容,也可以选取其他训练周期的状态。例如可以是目标动作片段在第i+2个、第i+4个训练周期的状态。
[0133]
s502,利用控制策略模型对第i个训练周期的关联状态进行处理,得到目标虚拟角色在第i+1个训练周期的动作控制策略,并根据第i个训练周期的关联状态确定动作奖励。
[0134]
本技术实施例中,控制策略模型存储于客户端的动作模拟引擎中。控制策略模型可以包括基于深度强化学习算法训练的策略网络,该策略网络具体可以是基础的神经网络,例如卷积神经网络、残差神经网络、全连接神经网络等等。客户端的动作模拟引擎是带有动力学模拟功能的引擎,例如ue4的带有动力学模拟的引擎,该动作模拟引擎可以被启动在客户端的cpu内核上。
[0135]
当客户端采集到目标虚拟角色在第i个训练周期的关联数据之后,控制策略模型处理第i个训练周期的关联状态,得到应用于第i+1个训练周期的动作控制策略。与此同时,利用第i个训练周期的关联状态还可以确定动作奖励,该动作奖励可以用于评估第i个训练周期的动作控制策略应用于目标虚拟角色的好坏,通过动作奖励可以不断地调整学习目标,进而生成符合预期的动作控制策略。
[0136]
在一个实施方式中,利用控制策略模型处理第i个训练周期的步骤可以包括:根据目标虚拟角色在第i个训练周期的关联状态以及控制策略模型,确定目标虚拟角色的动作期望和动作方差;根据动作方差和动作期望,确定目标虚拟角色在第i+1个训练周期的动作控制策略分布;对在第i+1个训练周期的动作控制策略分布进行采样处理,得到目标虚拟角色在第i+1个训练周期的动作控制策略。
[0137]
在此,以控制策略模型包括简单的三层感知神经网络为例,并结合以下表达式对控制策略模型处理的原理进行如下解释。其中,三层感知神经网络是多层感知机(multi-layer perceptron,mlp),包括输入层、隐层、输出层,该神经网络处理的表达式可以记为:
[0138]
mean=w2*tanh(w1*tanh(w0*observation+b0)+b1)+b2ꢀꢀꢀꢀ
式(2)
[0139]
其中,w0、w1、w2为控制策略模型中各层的参数矩阵,b0、b1、b2为控制策略模型中各层的偏置向量,参数矩阵和偏置向量统称为策略权重(或策略神经网络的权重),
observation表示第i个训练周期的关联状态。mean为32维的向量,是神经网络输出的动作期望。
[0140]
然后mean向量可以经过高斯分布采样得到动作控制策略action,也即控制命令,且控制命令action服从高斯分布,即:
[0141]
action~n(mean,std)
ꢀꢀꢀ
式(3)
[0142]
其中,action是目标关节转角,可以记为mean为动作期望,std为动作方差。此表达式代表根据动作期望和动作方差确定出来的动作控制策略分布。在一些实施例方式中,动作方差可以是由控制策略模型输出的常数,即mlp网络可以同时输出mean和std,在另一些实施方式中,动作方差也可以是由服务器下发给客户端。
[0143]
可选地,以observation是根据上述示例的第一状态和第二状态整理的287维向量,控制策略模型首先得到的mean向量为32维,最终输出的action也是32维的向量。
[0144]
之后,通过高斯分布的概率密度函数,可以得到在策略网络输出的mean向量下随机采样到该action的概率,将其称为策略采样概率,此策略采样概率后续也可以使用到对控制策略模型的训练中。
[0145]
在一种实施方式中,根据第i个训练周期的关联状态确定动作奖励的方式可以为:对目标虚拟角色在第i个训练周期的状态和目标动作片段的参考虚拟角色在第i个训练周期的状态进行差分处理,得到差分信息;确定差分信息对应的奖励分量;奖励分量包括位置奖励分量、姿态奖励分量以及关节转角奖励分量;将位置奖励分量、姿态奖励分量以及关节转角奖励分量进行加权求和,得到目标虚拟角色的动作奖励。
[0146]
此处动作奖励的计算引入了目标动作片段,以目标动作片段为依据,可以将目标虚拟角色和目标动作片段中的姿势的轨迹误差折算为动作奖励。具体地,参照前述步骤s501中介绍的状态包括位置信息、姿态信息以及关节转角,可以对目标虚拟角色以及目标动作片段中参考虚拟角色的状态进行差分计算,例如目标虚拟角色在第i个训练周期的位置信息和目标动作片段在第i个训练周期的位置信息相减,对应的姿态信息和关节转角同理,得到各种对应的差分信息,这样根据差分信息,可以进一步确定奖励分量,例如直接将差分信息作为奖励分量,或者对差分信息进行处理,例如平方、指数等之后作为奖励分量。可选地,奖励分量对应状态包括的内容,可以包括位置奖励分量、姿态奖励分量以及关节转角奖励分量,再给各个奖励分量赋值相应权重之后求和得到最终的动作奖励。这里对各个奖励分量进行加权求和,可以衡量不同奖励分量对动作奖励的影响,权重越大,该奖励分量对动作奖励的影响越大,如此动作奖励可以关注更重要的奖励分量,从而更好地进行策略学习。
[0147]
示例地,按照对动作奖励原理的介绍以及对关联状态的介绍,动作奖励的表达式设计如下:
[0148][0149]
其中,表示差分信息;表示差分信息;分别表示关节转角奖励分量、位置奖励分量、姿态奖励分量;α1、α2、α3为奖励权重。差分信息越小,表示目标虚拟角色和目标动作片段的动作重合度越高,动作奖励越大。示例地,奖励权重可以分别设置为0.7、0.2、0.1,即关节转角奖励分量更多地决定动作奖
励。
[0150]
参照上述示例的内容,部署在客户端的动作模拟引擎中的控制策略模型的输入输出,具体的奖励计算可以总结为下表2中的内容。
[0151]
表2 控制策略模型的输入输出
[0152][0153]
在控制策略模型的训练阶段,客户端的控制策略模型输入输出以及奖励可以按照表2的设计执行。
[0154]
需要说明的是,在执行步骤s503之前,还包括:将动作控制策略应用于目标虚拟角色,确定目标虚拟角色中各个可转动关节的转矩。具体可以参照图4对应实施例中式(1),相应数据代为此处的目标关节转角action、目标虚拟角色的当前关节转角qc以及角速度vc即可。如此,便于采集到目标虚拟角色在第i+1个训练周期的关联状态。
[0155]
以上两个步骤即客户端的动作模拟引擎利用控制策略模型在一个训练周期(如0.1s内)完成的事情,如此循环往复,并在每个训练周期解释之后,执行下述步骤s503。
[0156]
s503,将第i个训练周期的关联状态、第i+1个训练周期的动作控制策略、动作奖励和第i+1个训练周期的关联状态,组合为训练样本。
[0157]
客户端采集到目标虚拟角色在第i个训练周期的关联状态、控制策略模型输出的第i+1个训练周期的动作控制策略、动作奖励以及第i+1个训练周期的关联状态,可以组合为训练样本,该训练样本后续将用于对控制策略模型进行训练,以更新模型参数。其中,第i+1个训练周期的关联状态是第i+1个训练周期的动作控制策略应用于目标虚拟角色后采集到的。
[0158]
在此将训练样本记为train={observationi,a
gi+1
,ri,observation
i+1
},依次对应当前训练周期的关联状态、第i+1个训练周期的动作控制策略、动作奖励、第i+1个训练周期的关联状态。这些数据会整理为一组训练样本,然后发送到服务器上。上传到服务器的数据可以根据所选取的深度强化学习算法的类型不同略微有些不同,但主要是这几个数据。可选地,控制策略模型训练可以使用deep mimic算法,其中可以使用近端优化策略(proximal policy optimization,ppo)算法进行策略优化。
[0159]
可选地,训练样本还包括策略采样概率,策略采样概率是对动作控制策略分布进行采样处理后生成的,例如,对服从高斯分布的动作控制策略采样之后得到的值是传递给动作模拟引擎进行物理模拟的目标转角,该目标转角代入高斯分布概率密度函数,可以得到action的采样概率,根据该策略采样概率可以计算控制策略模型的损失,以更好地评估
和调整控制策略模型。
[0160]
可选地,训练样本还包括当前模拟时间,当前模拟时间是动力学模拟中用于积分的时间,通过当前模拟时间可以记录状态包括的数据产生的先后顺序。
[0161]
s504,将训练样本发送至服务器,以使服务器根据训练样本训练服务器中存储的控制策略模型。
[0162]
客户端将训练样本通过socket发送给服务器,具体的训练过程在服务器端实现。在此对服务器利用训练样本训练当中存储的控制策略模型的过程进行简要介绍:在数据收集阶段,服务器每间隔一个训练周期就可以接收到客户端发送来的训练样本,这些训练样本将统一存储到数据库中,对控制策略模型的训练过程具体为深度强化学习训练的过程,用于存储训练样本的数据库亦被称为经验回放池,在深度强化学习的迭代中,当数据库中收集的训练样本达到一定数量(例如2
16
组)时,服务器中的深度强化学习智能体可以随机在数据库中抽取若干次(例如26次)训练样本形成一批次(batch)训练样本集,每个batch训练样本集中含有多组训练样本(例如2
10
组),这些训练样本集将被用到基于随机梯度下降的深度强化学习训练中,并更新控制策略模型。例如控制策略模型为策略神经网络,采用deepmimic算法中使用近端优化策略ppo算法训练该策略神经网络。更新之后的控制策略模型有新的模型参数,例如步骤s502中示例的策略权重w0、w1、w2、b0、b1、b2,这些权重将依次下发到客户端中,并由客户端执行步骤s505。
[0163]
结合前述步骤可知,客户端中的控制策略模型主要负责前向计算,即根据当前目标虚拟角色的关联状态进行控制命令的计算,而对控制策略模型的更新的运算,例如应用随机梯度下降更新控制策略模型放在服务器上通过gpu来进行,由于利用控制策略模型执行前向计算的空间代价和时间代价是很低的,而和服务器通信的时间代价是极高的,通过在客户端构建控制策略模型,将控制策略模型的前向计算功能转移到客户端,可以极大地降低客户端对服务器的依赖以及从服务器上下载控制命令的频率,提高训练的效率。
[0164]
在一实施例中,客户端将整理好的训练样本通过socket(套接字)发送至服务器,此时无需等待服务器的回复,客户端可以利用控制策略模型自行开始下一个训练周期的动力学模拟和数据采集。
[0165]
也即:对第i+1个训练周期的动作控制策略应用于目标虚拟角色之后产生的状态进行采集,得到目标虚拟角色在第i+1个训练周期的关联状态;若在第i+1个训练周期内未接收到服务器发送的模型参数,则利用控制策略模型对第i+1个训练周期的关联状态进行处理,得到目标虚拟角色在第i+2个训练周期的动作控制策略。
[0166]
在得到第i+1个训练周期的动作控制策略之后,在紧接着的下一个训练周期,即第i+1个训练周期应用该动作控制策略,得到目标虚拟角色在第i+1个训练周期的关联状态,需要说明的是,这个关联状态不是目标虚拟角色应用动作控制策略之后原始的数据,而是经过整理计算之后得到的,具体过程可以参见第i个训练周期的关联状态的获取过程,在此不做赘述。在第i个训练周期之后,训练样本发送给服务器,但是在第i+1个训练周期将关联状态输入控制策略模型之前,还未接收到服务器下发的数据,控制策略模型没有新的模型参数载入以更新,那么,就还是使用处理第i个训练周期的关联状态的控制策略模型来处理第i+1个训练周期的关联状态。也即第i个训练周期和第i+1个训练周期使用相同的控制策略模型对新的关联状态进行计算,得到新的动作控制策略,即应用于第i+2个训练周期的动
作控制策略。并基于在第i+2个训练周期的动作控制策略进行动力学模拟计算,即计算转矩。
[0167]
在没有接收到模型参数之前,控制策略模型不更新,但是客户端对目标控制角色的数据采集、动作控制策略计算等依旧按照训练周期的顺序在有序进行,只是在客户端接收到模型参数时,处理关联状态的控制策略模型有所不同,但并不影响客户端处理数据的进度,如此一来,客户端在本地就可以快速得到用于动力学模拟的动作控制策略,对动作进行连续模拟计算,而无需和服务器通信获取动作控制策略,避免不必要的等待时间,可以高效地进行动力学模拟。
[0168]
可以理解的是,由于服务器是在训练样本达到一定量之后再抽取数据进行训练的,服务器向客户端下发模型参数是低频的,而客户端也不一定要等待服务器模型参数的下发才能够进行下一步的数据处理,这样服务器和客户端之间的数据交换所需的通信频率也是极低的,可以有效降低通信频率,提高训练效率。
[0169]
s505,接收服务器发送的训练后的控制策略模型的模型参数,并根据接收到的模型参数对控制策略模型进行更新,以得到目标控制策略模型。
[0170]
在一个实施例中,客户端根据接收到的模型参数对控制策略模型进行更新,以得到目标控制策略模型的实现步骤可以包括:根据接收到的模型参数调整控制策略模型的模型参数,调整后的控制策略模型用于生成新的训练样本,新的训练样本用于继续调整控制策略模型的模型参数;当调整后的控制策略模型满足模型收敛条件时,将调整后的控制策略模型作为目标控制策略模型。
[0171]
部署或存储在客户端的动作模拟引擎中的控制策略模型,可以依据服务器下发的模型参数进行调整,调整后的控制策略模型处理输入的目标虚拟角色的关联状态,输出动作控制策略。根据控制策略模型的输入输出对以及其他相关数据(例如下一训练周期的关联状态、动作奖励、策略采样概率中的一种或多种)整理为新的训练样本,新的训练样本发送给服务器,服务器在收集到的训练样本达到一定数量时,抽取训练样本对控制策略模型进行训练,再将更新的模型参数下发给客户端,继续调整模型、处理数据等,循环这个过程,直到客户端的控制策略模型达到模型收敛条件,就可以将对应调整后的控制策略模型作为目标模型。其中,模型收敛条件可以是调整次数达到预设次数,或者动作奖励达到奖励阈值,也可以是前后两次接收到的模型参数的变化在误差范围内等等,在此不做限制。
[0172]
客户端在收到服务器发送的模型参数之后,将在本地的控制策略模型中重新载入这些模型参数,即将原有的模型参数替换为服务器下发的模型参数,生成新的控制策略模型,根据新的控制策略模型可以生成动作控制策略,采集目标虚拟角色的关联状态,根据该关联状态整理训练样本并发送给服务器。如此循环往复,直至获得满足任务要求的策略表现,这里的任务要求可以是动作奖励达到奖励阈值,就可以得到目标控制策略模型。由于目标控制策略模型参考目标动作类型的目标动作片段生成的,能够很好地捕捉目标动作类型的动作特征,进而模仿该种动作类型的动作生成对应的动作动画。
[0173]
在此需要说明的是,按照步骤s501-s505的训练步骤,可以训练出多个控制策略模型,每个控制策略模型属于一种动作类型,被调用时能够生成该种动作类型的控制策略模型,而这是由训练参考的动作片段所属的动作类型的不同造成的。也就是说,训练时输入何种动作类型的动作片段对控制策略模型进行训练,训练得到的控制策略模型属于该种动作
类型,并且应用阶段对应能够生成该种动作类型的动作动画。
[0174]
综上,本技术实施例提供的数据处理方案中有关控制策略模型训练过程是十分高效的,这是因为在训练阶段,客户端中的控制策略模型只需简单的前向计算,即根据当前训练周期的关联状态计算出下一个训练周期的动作控制策略,而对控制策略模型的反向传播训练中涉及的梯度计算,例如随机策略梯度计算的则是由服务器执行,客户端接收并存储服务器下发的模型参数,依据该模型参数来更新本地的控制策略模型,实现服务器中训练好的控制策略模型以及客户端的控制策略模型同步,由于前向计算所需的时间代价和空间代价很低,模型参数的下发也是低频的,并且即使客户端的控制策略模型没有更新,依旧能够有序地进行相应数据的处理,客户端对服务器的依赖以及数据交换的频率大大降低,如此,仅牺牲客户端上很小的内存就可以换取更高的训练效率。
[0175]
结合上述对控制策略模型的训练过程的介绍,给出如图6所示的控制策略模型的训练框架的结构示意图,包括服务器和n个客户端。其中,服务器端部署有基于python语言的深度强化学习算法,每个客户端中都构建了相同的策略神经网络计算图,即控制策略模型,n个客户端对应有n个控制策略模型。在多个客户端(例如n=1000)中分别启动ue4的带有动力学模拟的引擎,这些引擎将会被启动在不同的cpu内核上。目前ue4编辑器普遍使用c++或c#语言来开发,而深度强化学习算法通常使用python语言来开发,利用图6示出的结构可以实现ue4上的数据和深度强化学习智能体的数据交换。
[0176]
下面基于该训练框架对其涉及的具体处理流程进行说明:
[0177]
1)每个ue4客户端在上一个训练周期(例如0.1s)结束之后,ue4客户端可以记录下目标虚拟角色当前的关联状态、目标动作片段的目标姿态(也即下一个训练周期跟踪的动作)、环境参数、当前模拟时间等信息,并立即进行处理。具体地,这些数据可以按照深度强化学习算法中定义的控制策略模型输入observation向量的格式进行整理排列,排列后的数据经过控制策略模型前向计算以及随机采样,得到动作控制策略action(即控制命令),该控制命令也即刻被应用在ue4动力学模拟的控制上,同时,客户端还可以根据目标虚拟角色的当前状态和目标动作片段的当前状态计算强化学习所需的动作奖励reward值。
[0178]
2)客户端将observation向量、action向量、action执行之后目标虚拟角色最新的状态、随机策略采样概率、reward值以及当前模拟时间都可以上传至服务器,此时客户端无需阻塞,也不需要等待服务器的回复,就可以即刻开始下一个训练周期的模拟。
[0179]
3)服务器接收到任意一个客户端发来的数据,就可以直接将其存入数据库中。每当数据库中的数据条数达到一定数值(例如2
16
组),深度强化学习智能体便会根据随机梯度下降的原则从数据库中随机抽取若干组数据进行策略梯度计算,并使用计算得到的梯度通过ppo算法来更新控制策略模型,经过深度强化学习智能体更新后的控制策略模型就储存在服务器上备份。
[0180]
4)策略更新完成后,服务器端的控制策略模型的模型参数(例如策略权重)便会被下发到每个客户端上。客户端载入更新之后的模型参数,然后便可继续为下一轮更新开始高效地采集数据。
[0181]
重复执行上述1)~4),经过一段时间的强化学习训练,就能获得一个性能完好的目标控制策略模型,能够稳定地为ue4中带有动力学仿真的目标虚拟角色生成控制命令,引导其完成既定的动作,生成高质量动画。上述方案每个客户端中都构建了相同的策略神经
网络计算图,在每次深度强化学习智能体完成策略升级之后,会将策略权重下发到每个客户端。每个客户端在本地就能使用目标虚拟角色的当前状态进行控制命令的计算及动力学模拟的计算,然后将本地数据整理成深度强化学习所需的格式,上传到服务器的数据库中。期间无需等待服务器的应答,可以连续不断地采集数据,直到接收服务器上下一轮更新过后的策略权重。
[0182]
可见,通过把控制策略模型的前向计算放在客户端上执行,就能大大降低客户端对服务器的依赖,降低从服务器上下载数据的频率。利用深度强化学习算法来升级策略的运算还是放在服务器上通过gpu来进行,而服务器只需低频地下发策略权重。策略前向计算的空间代价与时间代价是很低的,通信的时间代价是极高的,所以可以将策略前向计算这部分功能移到客户端上,这样仅需要牺牲客户端上很少的运行内存(例如10m左右),就能够大大节省深度强化学习采集数据所需的时间,而且,采用控制策略模型在ue4本地部署的方式,还能够极大提升游戏运行时的运算效率。
[0183]
为了更好地说明本方案所带来的效果,请参见图7,是本技术实施例提供的另一种控制策略模型的训练框架的示意图。如图7所示,包括n个客户端和服务器端。该控制策略模型基于深度强化学习进行训练,基于python语言的深度强化学习算法放在服务器端,在多个客户端(例如n=1000)分别启动ue4的带有动力学模拟的引擎。这些引擎将会被启动在不同的cpu内核上。基于图7的数据处理流程如下:
[0184]
1)上传状态:客户端在每个模拟器模拟的时间周期(例如0.1秒)内,每一个客户端会将目标虚拟角色的当前状态、目标动作片段的目标姿态(也即下一个训练周期跟踪的动作)、环境参数、当前模拟时间等信息整理为一个数据包,通过socket发送给服务器。
[0185]
2)下载命令:服务器收到数据包后,会将数据包中的数据按照深度强化学习算法中定义的控制策略模型输入向量的格式进行整理排列,排列后的数据经过控制策略模型前向计算,得到的控制命令,会被发回相应的客户端上。
[0186]
3)数据存入:服务器可以根据客户端上传的目标虚拟角色的当前状态和已知的目标动作片段的当前状态计算强化学习所需的动作奖励reward值,并将控制策略模型的输入输出对、随机采样概率、动作奖励等信息存入数据库中。
[0187]
4)数据抽取和策略更新:每当数据库中的数据条数达到一定数值(例如216组),深度强化学习智能体便会根据随机梯度下降的原则从数据库中随机抽取若干组数据进行策略梯度计算,并使用计算得到的梯度通过ppo算法来更新策略神经网络。
[0188]
重复执行上述1)~4),经过一段时间的强化学习训练,直到获得一个性能完好的目标控制策略模型,能够稳定地为ue4中带有动力学仿真的角色生成控制命令,引导其完成既定的动作,生成高质量动画。
[0189]
上述描述的基于socket通信方案实现深度强化学习训练的神经网络给ue4中带有动力学模拟的目标虚拟角色提供控制策略,由于控制策略模型只被存放在服务器上,客户端每模拟一个时间步(例如0.1s)都要和服务器进行一次通信,上传当前目标虚拟角色的状态等相关信息,并等待服务器的控制策略模型进行策略计算,下载控制命令,导致深度强化学习智能体采集数据的时候存在大量不必要的通信延迟和等待,既浪费时间,又给客户端时间同步引入新的问题。
[0190]
尤其是在强化学习的过程中,由于数据采集的过程是具有严格的时序先后逻辑
的,也就是说,只有计算出上一步目标虚拟角色的角色状态结果(也即上一步控制命令应用于角色所产生的状态),才能计算这一步的控制命令,只有得到这一步的控制命令,才能开始下一步角色状态的计算,也即,每一步的计算都依赖于上一步的运算结果,因此这些计算无法并行。并且,每当客户端上传目标虚拟角色的角色状态的计算结果时,ue4由于接收不到新的控制命令,会停止动作的模拟,等待服务器收到状态,计算控制命令并下发之后,客户端才能够开始继续模拟。这样一来,所花费是时间代价是极高的。示例性地,客户端上一段长度为10s的动作片段,若策略频率为10hz,也即每0.1秒需获取控制命令,则需要和服务器通信100次,使用socket进行本机通信每次需要消耗大约20ms。那么客户端实际上有2s的时间花费在等待上,完全没有做任何事情。需要说明的是,客户端模拟长度为10s的动作片段,在不需要gui界面、不开渲染、只是为了采集数据的情况下,其真实运行的时间是远远少于10s的。因此,2s的等待时间甚至超过了真正用来计算动力学模拟的时间。
[0191]
而本技术实施例提出的方案,采用如图6所示的训练框架,相比于图7中客户端每模拟一个时间步(0.1s)都要和服务器进行一次通信,上传目标虚拟角色的状态,并等待服务器策略网络计算,下载控制命令的方式,本方案直接在每个客户端中的动作模拟引擎中(例如具体是基于c++的ue4插件中)构建策略神经网络计算图,将部分在服务器上的程序(即策略网络前向计算动作控制策略action)移动到客户端实现,从而达到大幅度降低通信频率的目的,极大提高深度强化学习的训练效率,可以避免因为socket通信的卡顿而造成控制命令的延迟。
[0192]
以动作模拟引擎为ue4为例,本方案可以在ue4开启动力学模拟的情况下能够保证在ue4的tick(基本时间单位)时间内计算出控制命令,完成带有动力学模拟的高质量动画。通过使用ue4的物理模拟器进行分布式深度强化学习的训练框架,在每个客户端的ue4程序里构建计算图,储存策略网络权重,相比于图7,这项改进仅仅牺牲客户端上很小的内存(10m量级),却能大大降低数据交换算需要通信频率(102~104倍,具体视任务不同而定),通过降低网络通信频率,实时性好、准确性高,且提高了训练的效率。利用ue4的物理模拟器进行强化学习训练有助于生成复杂的控制策略,最终能够生成带有动力学模拟的高质量动画,这不仅减轻游戏开发工作,缩短开发流程,还能减小游戏占用的存储与运行时的内存,在相同条件下本技术实施例提供的训练方式所需的策略训练时间有效地缩短,而且最终获得的策略无需额外编程,就已经自动兼容ue4程序,更加便于游戏开发人员的使用。
[0193]
请参见图8,图8是本技术一个示例性实施例提供的一种数据处理装置的结构示意图。上述数据处理装置可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如该数据处理装置为一个应用软件;该数据处理装置可以用于执行本技术实施例提供的方法中的相应步骤。如图8所示,该数据处理装置800可以包括:获取模块801、选取模块802、处理模块803、输出模块804以及训练模块805。
[0194]
获取模块801,用于获取针对目标虚拟角色的用户指令,用户指令包括目标动作类型;
[0195]
选取模块802,用于从控制策略模型库中选取属于目标动作类型的目标控制策略模型;目标控制策略模型是根据属于目标动作类型的目标动作片段训练的控制策略模型;
[0196]
处理模块803,用于利用目标控制策略模型,对目标虚拟角色在第t个控制周期的状态进行处理,得到目标虚拟角色在第t+1个控制周期的动作控制策略,动作控制策略用于
表征目标虚拟角色执行的动作,t为大于等于1的整数;
[0197]
处理模块803,还用于根据第t+1个控制周期的动作控制策略,生成目标虚拟角色在第t+1个控制周期的动作动画,以及目标虚拟角色在第t+1个控制周期的状态;
[0198]
输出模块804,用于输出目标虚拟角色在所有控制周期的动作动画。
[0199]
在一个实施例中,输出模块804,具体用于:将所有控制周期的动作动画按照记录的生成时间由小到大的顺序,组合为动画序列,并将动画序列存储至动画素材库;动画序列的动作类型属于目标动作类型;当接收到包含目标动作类型的动画播放指令时,响应于动画播放指令从动画素材库中调取动画序列进行播放。
[0200]
在另一实施例中,输出模块804,具体还用于:按照设定的渲染帧率对目标虚拟角色在所有控制周期的动作动画分别进行渲染处理,并将蒙皮网格施加至渲染处理后的动作动画中,得到待播放动作动画;待播放动画包括多个动画帧;在图形界面中播放多个动画帧,多个动画帧中的每一个动画帧是在达到同步等待时长之后显示;同步等待时长是根据设定的渲染帧率确定的。
[0201]
在一实施例中,目标虚拟角色包括多个目标转动对象;处理模块803,具体用于:根据第t个控制周期的状态和第t+1个控制周期的动作控制策略确定目标虚拟角色中各个目标转动对象的转动力矩;根据转动力矩,控制目标虚拟角色的各个目标转动对象在第t+1个控制周期内进行运动,以生成目标虚拟角色在第i+1个训练周期的动作动画;在目标虚拟角色运动结束后,获取目标虚拟角色在第t+1个控制周期的状态。
[0202]
在一实施例中,处理模块803,具体用于:获取目标虚拟角色的环境信息和位姿信息;环境信息用于表征目标虚拟角色所处的虚拟环境;位姿信息用于表征目标虚拟角色的位置和姿态;根据位姿信息和环境信息生成目标虚拟角色在第t+1个控制周期的状态。
[0203]
在一实施例中,方法由客户端执行,数据处理装置,还包括训练模块805,用于:获取目标虚拟角色在第i个训练周期的关联状态;其中,i为大于或等于1的整数;利用控制策略模型对第i个训练周期的关联状态进行处理,得到目标虚拟角色在第i+1个训练周期的动作控制策略,并根据第i个训练周期的关联状态确定动作奖励;控制策略模型存储于客户端的动作模拟引擎中;将第i个训练周期的关联状态、第i个训练周期的动作控制策略、动作奖励和第i+1个训练周期的关联状态,组合为训练样本;第i+1个训练周期的关联状态是第i+1个训练周期的动作控制策略应用于目标虚拟角色后采集到的;将训练样本发送至服务器,以使服务器根据训练样本训练服务器中存储的控制策略模型;接收服务器发送的训练后的控制策略模型的模型参数,并根据接收到的模型参数对控制策略模型进行更新,以得到目标控制策略模型。
[0204]
在一实施例中,第i个训练周期的关联状态包括:目标虚拟角色的第一状态,以及目标动作片段中参考虚拟角色的第二状态;第一状态包括目标虚拟角色在第i个训练周期的状态,和目标虚拟角色在历史训练周期的状态;第二状态包括参考虚拟角色在参考训练周期的状态;参考训练周期由第i个训练周期和设定训练周期数确定;状态包括位置信息、姿态信息以及关节转角。
[0205]
在一实施例中,训练模块805,还用于:对第i+1个训练周期的动作控制策略应用于目标虚拟角色之后产生的状态进行采集,得到目标虚拟角色在第i+1个训练周期的关联状态;若在第i+1个训练周期内未接收到服务器发送的模型参数,则利用控制策略模型对第i+
memory,eprom)、或便携式只读存储器(compact disc read-only memory,cd-rom)等等中的一种或者多种的组合。
[0214]
该计算机设备900中的至少一个处理器901用于调用至少一个存储器903中存储的计算机程序,用于执行前述的数据处理方法,例如前述图2、图5所示实施例所描述的数据处理方法。
[0215]
在一种可能的实施方式中,该计算机设备900中的处理器901用于调用至少一个存储器903中存储的计算机程序,用于执行以下操作:通过通信接口获取针对目标虚拟角色的用户指令,用户指令包括目标动作类型;从控制策略模型库中选取属于目标动作类型的目标控制策略模型;目标控制策略模型是根据属于目标动作类型的目标动作片段训练的控制策略模型;利用目标控制策略模型,对目标虚拟角色在第t个控制周期的状态进行处理,得到目标虚拟角色在第t+1个控制周期的动作控制策略,动作控制策略用于表征目标虚拟角色执行的动作,t为大于等于1的整数;根据第t+1个控制周期的动作控制策略,生成目标虚拟角色在第t+1个控制周期的动作动画,以及目标虚拟角色在第t+1个控制周期的状态;输出目标虚拟角色在所有控制周期的动作动画。
[0216]
在一个实施例中,处理器901,具体用于:将所有控制周期的动作动画按照记录的生成时间由小到大的顺序,组合为动画序列,并将动画序列存储至动画素材库;动画序列的动作类型属于目标动作类型;当接收到包含目标动作类型的动画播放指令时,响应于动画播放指令从动画素材库中调取动画序列进行播放。
[0217]
在另一实施例中,处理器901,具体还用于:按照设定的渲染帧率对目标虚拟角色在所有控制周期的动作动画分别进行渲染处理,并将蒙皮网格施加至渲染处理后的动作动画中,得到待播放动作动画;待播放动画包括多个动画帧;在图形界面中播放多个动画帧,多个动画帧中的每一个动画帧是在达到同步等待时长之后显示;同步等待时长是根据设定的渲染帧率确定的。
[0218]
在一实施例中,目标虚拟角色包括多个目标转动对象;处理器901,具体用于:根据第t个控制周期的状态和第t+1个控制周期的动作控制策略确定目标虚拟角色中各个目标转动对象的转动力矩;根据转动力矩,控制目标虚拟角色的各个目标转动对象在第t+1个控制周期内进行运动,以生成目标虚拟角色在第i+1个训练周期的动作动画;在目标虚拟角色运动结束后,获取目标虚拟角色在第t+1个控制周期的状态。
[0219]
在一实施例中,处理器901,具体用于:获取目标虚拟角色的环境信息和位姿信息;环境信息用于表征目标虚拟角色所处的虚拟环境;位姿信息用于表征目标虚拟角色的位置和姿态;根据位姿信息和环境信息生成目标虚拟角色在第t+1个控制周期的状态。
[0220]
在一实施例中,方法由客户端执行,处理器901,用于:获取目标虚拟角色在第i个训练周期的关联状态;其中,i为大于或等于1的整数;利用控制策略模型对第i个训练周期的关联状态进行处理,得到目标虚拟角色在第i+1个训练周期的动作控制策略,并根据第i个训练周期的关联状态确定动作奖励;控制策略模型存储于客户端的动作模拟引擎中;将第i个训练周期的关联状态、第i个训练周期的动作控制策略、动作奖励和第i+1个训练周期的关联状态,组合为训练样本;第i+1个训练周期的关联状态是第i+1个训练周期的动作控制策略应用于目标虚拟角色后采集到的;将训练样本发送至服务器,以使服务器根据训练样本训练服务器中存储的控制策略模型;接收服务器发送的训练后的控制策略模型的模型
参数,并根据接收到的模型参数对控制策略模型进行更新,以得到目标控制策略模型。
[0221]
在一实施例中,第i个训练周期的关联状态包括:目标虚拟角色的第一状态,以及目标动作片段中参考虚拟角色的第二状态;第一状态包括目标虚拟角色在第i个训练周期的状态,和目标虚拟角色在历史训练周期的状态;第二状态包括参考虚拟角色在参考训练周期的状态;参考训练周期由第i个训练周期和设定训练周期数确定;状态包括位置信息、姿态信息以及关节转角。
[0222]
在一实施例中,处理器901,还用于:对第i+1个训练周期的动作控制策略应用于目标虚拟角色之后产生的状态进行采集,得到目标虚拟角色在第i+1个训练周期的关联状态;若在第i+1个训练周期内未接收到服务器发送的模型参数,则利用控制策略模型对第i+1个训练周期的关联状态进行处理,得到目标虚拟角色在第i+2个训练周期的动作控制策略。
[0223]
在一实施例中,处理器901,具体用于:根据目标虚拟角色在第i个训练周期的关联状态以及控制策略模型,确定目标虚拟角色的动作期望和动作方差;根据动作方差和动作期望,确定目标虚拟角色在第i+1个训练周期的动作控制策略分布;对在第i+1个训练周期的动作控制策略分布进行采样处理,得到目标虚拟角色在第i+1个训练周期的动作控制策略;其中,训练样本还包括策略采样概率,采样概率是对动作控制策略分布进行采样处理后生成的。
[0224]
在一实施例中,处理器901,具体用于:根据接收到的模型参数调整控制策略模型的模型参数,调整后的控制策略模型用于生成新的训练样本,新的训练样本用于继续调整控制策略模型的模型参数;当调整后的控制策略模型满足模型收敛条件时,将调整后的控制策略模型作为目标控制策略模型。
[0225]
在一实施例中,处理器901,具体用于:对目标虚拟角色在第i个训练周期的状态和目标动作片段的参考虚拟角色在第i个训练周期的状态进行差分处理,得到差分信息;确定差分信息对应的奖励分量;奖励分量包括位置奖励分量、姿态奖励分量以及关节转角奖励分量;将位置奖励分量、姿态奖励分量以及关节转角奖励分量进行加权求和,得到目标虚拟角色的动作奖励。
[0226]
应当理解,本技术实施例中所描述的计算机设备900可执行前文所对应实施例中对该数据处理方法的描述,也可执行前文图2或图5所对应实施例中对该数据处理装置800的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
[0227]
此外,还应指出,本技术一个示例性实施例还提供了一种存储介质,该存储介质中存储了前述数据处理方法的计算机程序,该计算机程序包括程序指令,当一个或多个处理器加载并执行该程序指令,可以实现实施例中对数据处理方法的描述,这里不再赘述,对采用相同方法的有益效果描述,也在此不再赘述。可以理解的是,程序指令可以被部署在一个或能够互相通信的多个计算机设备上执行。
[0228]
上述计算机可读存储介质可以是前述任一实施例提供的数据处理装置或者上述计算机设备的内部存储单元,例如计算机设备的硬盘或内存。该计算机可读存储介质也可以是该计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。进一步地,该计算机可读存储介质还可以既包括该计算机设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该计算机设备所需的其他程序
和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
[0229]
本技术实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行前述实施例提供的方法。
[0230]
本技术实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
[0231]
本技术实施例装置中的模块可以根据实际需要进行合并、划分和删减。
[0232]
以上所揭露的仅为本发明的部分实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。
技术特征:
1.一种数据处理方法,其特征在于,所述方法包括:获取针对目标虚拟角色的用户指令,所述用户指令包括目标动作类型;从控制策略模型库中选取属于所述目标动作类型的目标控制策略模型;所述目标控制策略模型是根据属于所述目标动作类型的目标动作片段训练的控制策略模型;利用所述目标控制策略模型,对所述目标虚拟角色在第t个控制周期的状态进行处理,得到所述目标虚拟角色在第t+1个控制周期的动作控制策略,所述动作控制策略用于表征所述目标虚拟角色执行的动作,t为大于等于1的整数;根据所述第t+1个控制周期的动作控制策略,生成所述目标虚拟角色在第t+1个控制周期的动作动画,以及所述目标虚拟角色在第t+1个控制周期的状态;输出所述目标虚拟角色在所有控制周期的动作动画。2.如权利要求1所述的方法,其特征在于,所述输出所述目标虚拟角色在所有控制周期的动作动画,包括:将所有控制周期的动作动画按照记录的生成时间由小到大的顺序,组合为动画序列,并将所述动画序列存储至动画素材库;所述动画序列的动作类型属于目标动作类型;当接收到包含所述目标动作类型的动画播放指令时,响应于所述动画播放指令从所述动画素材库中调取所述动画序列进行播放。3.如权利要求1所述的方法,其特征在于,所述输出所述目标虚拟角色在所有控制周期的动作动画,包括:按照设定的渲染帧率对所述目标虚拟角色在所有控制周期的动作动画分别进行渲染处理,并将蒙皮网格施加至所述渲染处理后的动作动画中,得到待播放动作动画;所述待播放动画包括多个动画帧;在图形界面中播放所述多个动画帧,所述多个动画帧中的每一个动画帧是在达到同步等待时长之后显示;所述同步等待时长是根据所述设定的渲染帧率确定的。4.如权利要求1~3任一项所述的方法,其特征在于,所述目标虚拟角色包括多个目标转动对象;所述根据所述第t+1个控制周期的动作控制策略,生成所述目标虚拟角色在第t+1个控制周期的动作动画,以及所述目标虚拟角色在第t+1个控制周期的状态,包括:根据所述第t个控制周期的状态和所述第t+1个控制周期的动作控制策略确定所述目标虚拟角色中各个目标转动对象的转动力矩;根据所述转动力矩,控制所述目标虚拟角色的各个目标转动对象在第t+1个控制周期内进行运动,以生成所述目标虚拟角色在第i+1个训练周期的动作动画;在所述目标虚拟角色运动结束后,获取所述目标虚拟角色在第t+1个控制周期的状态。5.如权利要求4所述的方法,其特征在于,所述获取所述目标虚拟角色在第t+1个控制周期的状态,包括:获取所述目标虚拟角色的环境信息和位姿信息;所述环境信息用于表征所述目标虚拟角色所处的虚拟环境;所述位姿信息用于表征所述目标虚拟角色的位置和姿态;根据所述位姿信息和所述环境信息生成所述目标虚拟角色在第t+1个控制周期的状态。6.如权利要求1所述的方法,其特征在于,所述方法由客户端执行,所述方法还包括:
获取所述目标虚拟角色在第i个训练周期的关联状态;其中,i为大于或等于1的整数;利用控制策略模型对所述第i个训练周期的关联状态进行处理,得到所述目标虚拟角色在第i+1个训练周期的动作控制策略,并根据所述第i个训练周期的关联状态确定动作奖励;所述控制策略模型存储于所述客户端的动作模拟引擎中;将所述第i个训练周期的关联状态、所述第i个训练周期的动作控制策略、所述动作奖励和所述第i+1个训练周期的关联状态,组合为训练样本;所述第i+1个训练周期的关联状态是所述第i+1个训练周期的动作控制策略应用于所述目标虚拟角色后采集到的;将所述训练样本发送至服务器,以使所述服务器根据所述训练样本训练所述服务器中存储的所述控制策略模型;接收所述服务器发送的训练后的控制策略模型的模型参数,并根据接收到的模型参数对所述控制策略模型进行更新,以得到所述目标控制策略模型。7.如权利要求6所述的方法,其特征在于,所述第i个训练周期的关联状态包括:所述目标虚拟角色的第一状态,以及目标动作片段中参考虚拟角色的第二状态;所述第一状态包括所述目标虚拟角色在第i个训练周期的状态,和所述目标虚拟角色在历史训练周期的状态;所述第二状态包括所述参考虚拟角色在参考训练周期的状态;所述参考训练周期由所述第i个训练周期和设定训练周期数确定;所述状态包括位置信息、所述姿态信息以及关节转角。8.如权利要求6或7所述的方法,其特征在于,所述方法还包括:对所述第i+1个训练周期的动作控制策略应用于所述目标虚拟角色之后产生的状态进行采集,得到所述目标虚拟角色在第i+1个训练周期的关联状态;若在第i+1个训练周期内未接收到所述服务器发送的模型参数,则利用所述控制策略模型对所述第i+1个训练周期的关联状态进行处理,得到所述目标虚拟角色在第i+2个训练周期的动作控制策略。9.如权利要求6所述的方法,其特征在于,所述利用控制策略模型对所述第i个训练周期的关联状态进行处理,得到所述目标虚拟角色在第i+1个训练周期的动作控制策略,包括:根据所述目标虚拟角色在第i个训练周期的关联状态以及所述控制策略模型,确定所述目标虚拟角色的动作期望和动作方差;根据所述动作方差和所述动作期望,确定所述目标虚拟角色在第i+1个训练周期的动作控制策略分布;对所述在第i+1个训练周期的动作控制策略分布进行采样处理,得到所述目标虚拟角色在第i+1个训练周期的动作控制策略;其中,所述训练样本还包括策略采样概率,所述采样概率是对所述动作控制策略分布进行采样处理后生成的。10.如权利要求6所述的方法,其特征在于,所述根据接收到的模型参数对所述控制策略模型进行更新,以得到所述目标控制策略模型,包括:根据接收到的模型参数调整所述控制策略模型的模型参数,调整后的控制策略模型用于生成新的训练样本,所述新的训练样本用于继续调整所述控制策略模型的模型参数;
当调整后的控制策略模型满足模型收敛条件时,将所述调整后的控制策略模型作为所述目标控制策略模型。11.如权利要求7所述的方法,其特征在于,所述根据所述第i个训练周期的关联状态确定动作奖励,包括:对所述目标虚拟角色在第i个训练周期的状态和所述目标动作片段的参考虚拟角色在第i个训练周期的状态进行差分处理,得到差分信息;确定所述差分信息对应的奖励分量;所述奖励分量包括位置奖励分量、姿态奖励分量以及关节转角奖励分量;将所述位置奖励分量、所述姿态奖励分量以及所述关节转角奖励分量进行加权求和,得到所述目标虚拟角色的动作奖励。12.一种数据处理装置,其特征在于,包括:获取模块,用于获取针对目标虚拟角色的用户指令,所述用户指令包括目标动作类型;选取模块,用于从控制策略模型库中选取属于所述目标动作类型的目标控制策略模型;所述目标控制策略模型是根据属于所述目标动作类型的目标动作片段训练的控制策略模型;处理模块,用于利用所述目标控制策略模型,对所述目标虚拟角色在第t个控制周期的状态进行处理,得到所述目标虚拟角色在第t+1个控制周期的动作控制策略,所述动作控制策略用于表征所述目标虚拟角色执行的动作,t为大于等于1的整数;所述处理模块,还用于根据所述第t+1个控制周期的动作控制策略,生成所述目标虚拟角色在第t+1个控制周期的动作动画,以及所述目标虚拟角色在第t+1个控制周期的状态;输出模块,用于输出所述目标虚拟角色在所有控制周期的动作动画。13.一种计算机设备,其特征在于,包括:处理器、存储器以及网络接口;所述处理器与所述存储器、所述网络接口相连,其中,所述网络接口用于提供网络通信功能,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,以执行权利要求1至11任一项所述的数据处理方法。14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序当被处理器执行时,执行权利要求1至11任一项所述的数据处理方法。15.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序或计算机指令,所述计算机程序或计算机指令被处理器执行时实现如权利要求1至11中任一项所述的数据处理方法的步骤。
技术总结
本申请实施例公开了一种数据处理方法及相关产品,该方法包括:获取针对目标虚拟角色的包括目标动作类型的用户指令;从控制策略模型库中选取属于目标动作类型的目标控制策略模型;目标控制策略模型由属于目标动作类型的目标动作片段训练得到;利用目标控制策略模型对目标虚拟角色在第t个控制周期的状态进行处理,得到目标虚拟角色在第t+1个控制周期的动作控制策略,t为正整数;根据第t+1个控制周期的动作控制策略,生成目标虚拟角色在第t+1个控制周期的动作动画以及在第t+1个控制周期的状态;输出目标虚拟角色在所有控制周期的动作动画。通过本申请实施例,可自动化、智能化地生成动作动画,有效提高角色动画的制作效率和质量。量。量。
技术研发人员:李世迪
受保护的技术使用者:腾讯科技(深圳)有限公司
技术研发日:2022.01.11
技术公布日:2023/7/25
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/
上一篇:一种化妆台的制作方法 下一篇:定位方法、装置、电子设备及可移动设备与流程