动画生成方法、动作控制器的训练方法、装置及设备与流程
未命名
10-28
阅读:135
评论:0

1.本技术涉及计算机技术领域,特别涉及一种动画生成方法、动作控制器的训练方法、装置及设备。
背景技术:
2.在游戏中经常会出现虚拟角色因受击倒地,且在倒地后支撑起身的场景。玩家希望在这个倒地-起身的场景中看到虚拟角色的动作要兼具流畅性与多样性。因此如何生成高质量的起身动画是本领域的研究重点。
3.目前,通常是先在资源库中储存三段固定的动画:走跑动画、上起身动画以及下起身动画。常规状态下,虚拟角色处于正常走跑状态,于是就简单地循环播放一段走跑动画。当确定虚拟角色将会受击倒地时,通过ragdoll系统物理模拟出虚拟角色的倒地动画;当确定虚拟角色倒在地上时,根据虚拟角色的躯体朝向,将虚拟角色当前的姿态平滑过渡到上起身动画或者下起身动画的首帧,随后播放相应的动画片段完成起身动作,接着继续循环播放走跑动画。
4.但是,上述技术方案中,对何时开启ragdoll系统的判断,不仅工作量大,而且并不准确。例如虚拟角色将受到车辆的撞击,需要在碰撞发生之前作出判断,并将动画切换到ragdoll系统。若切换地太晚,由于此时的虚拟角色正处于播放走跑动画的模式,不具有物理模拟特性,导致即使碰撞之后,虚拟角色也不会产生反应,反而是车子会被弹飞。这样的表现当然是不能接受的。若切换地太早,由于ragdoll系统中角色关节本身不产生力矩,就会导致还未发生碰撞时虚拟角色自己就浑身瘫软开始倒地了。因此,上述判断机制需要开发者去编写、微调每一个判别条件与判定时机,工作量大,且不准确,从而导致动画的效果差。
技术实现要素:
5.本技术实施例提供了一种动画生成方法、动作控制器的训练方法、装置及设备,能够实时生成下一帧画面中虚拟角色的姿态,提高了姿态变换的准确性和真实性,也即是使得起身动画的效果更加准确、真实。所述技术方案如下。
6.一方面,提供了一种动画生成方法,所述方法包括:获取虚拟角色在第一画面中的目标信息和第一姿态,所述目标信息包括对象对所述虚拟角色的操作和所述虚拟角色的运动状态,所述运动状态为起身状态的多个起身进度和走跑状态中的一种;在所述虚拟角色处于起身状态的情况下,通过动作控制器,对所述目标信息和所述第一姿态进行处理,得到所述虚拟角色的动作信息,所述动作控制器用于确定所述虚拟角色的后续动作;基于所述动作信息和所述第一姿态,对所述虚拟角色的起身动作进行模拟,得到所述虚拟角色的第二姿态,所述第二姿态用于表示所述虚拟角色在第二画面中的姿态,所述第二画面为所述第一画面的下一帧画面;在所述第二画面中显示所述虚拟角色的第二姿态,以呈现所述虚拟角色的起身动画。
7.另一方面,提供了一种动作控制器的训练方法,所述方法包括:基于动作控制器,获取虚拟角色的多个训练样本,每个训练样本包括所述虚拟角色在对应的画面中的样本目标信息、样本姿态和样本动作信息,所述样本目标信息包括对象对所述虚拟角色的操作和所述虚拟角色的运动状态,所述样本动作信息由所述动作控制器基于所述样本目标信息和样本姿态确定;对于任一训练样本,获取所述训练样本的目标训练样本,所述目标训练样本对应的画面为所述训练样本对应的画面的下一帧,所述目标训练样本中的样本姿态基于所述训练样本中的样本姿态和样本动作信息进行模拟得到;将所述训练样本和所述目标训练样本,输入到判别网络中,得到第一损失,所述第一损失用于表示所述判别网络识别姿态变化基于所述动作控制器生成的误差,所述姿态变化指的是所述虚拟角色由所述训练样本的姿态到所述目标训练样本的姿态的变化;基于所述第一损失,对所述动作控制器进行训练。
8.另一方面,提供了一种动画生成装置,所述装置包括:获取模块,用于获取虚拟角色在第一画面中的目标信息和第一姿态,所述目标信息包括对象对所述虚拟角色的操作和所述虚拟角色的运动状态,所述运动状态为起身状态的多个起身进度和走跑状态中的一种;处理模块,用于在所述虚拟角色处于起身状态的情况下,通过动作控制器,对所述目标信息和所述第一姿态进行处理,得到所述虚拟角色的动作信息,所述动作控制器用于确定所述虚拟角色的后续动作;模拟模块,用于基于所述动作信息和所述第一姿态,对所述虚拟角色的起身动作进行模拟,得到所述虚拟角色的第二姿态,所述第二姿态用于表示所述虚拟角色在第二画面中的姿态,所述第二画面为所述第一画面的下一帧画面;显示模块,用于在所述第二画面中显示所述虚拟角色的第二姿态,以呈现所述虚拟角色的起身动画。
9.在一些实施例中,所述获取模块,包括:获取单元,用于响应于所述对象针对所述虚拟角色的操作,获取所述虚拟角色的期望移动方向和期望移动速率,所述期望移动方向和所述期望移动速率用于反映所述对象所期望的所述虚拟角色后续的移动情况;第一确定单元,用于基于所述起身动画的期望时长和所述第一画面,确定所述第一画面中所述虚拟角色的运动状态;第二确定单元,用于确定所述虚拟角色在所述第一画面中的所述目标信息。
10.在一些实施例中,所述第一确定单元,用于基于所述起身动画的期望时长,确定完成所述起身动画对应的帧数;基于所述帧数和所述虚拟角色的起身进度的初始值,确定所述起身动画中每一帧画面对应的单位进度值,所述初始值用于所述起身动画的第一帧画面中所述虚拟角色的起身状态,所述单位进度值用于表示每显示一帧所述起身动画中的画面所更新的起身进度的大小;基于所述初始值、所述单位进度值和所述第一画面在所述起身动画中的时序,确定所述第一画面中所述虚拟角色的运动状态。
11.在一些实施例中,所述获取模块,用于获取所述虚拟角色身上多个可转动关节的角度值,所述多个可转动关节的角度值用于反映所述多个可转动关节的姿态;基于所述多个可转动关节的角度值、所述虚拟角色的骨盆的位置向量以及所述骨盆的姿态向量,确定所述虚拟角色的第一姿态。
12.在一些实施例中,所述处理模块,包括:拼接单元,用于通过所述动作控制器,对所述第一姿态的特征向量和所述目标信息的特征向量进行拼接,得到角色特征向量;第三确定单元,用于基于所述动作控制器和所述角色特征向量,确定所述虚拟角色的动作信息。
13.在一些实施例中,所述第三确定单元,用于通过所述动作控制器,对所述角色特征
向量进行处理,得到初始动作信息;以所述初始动作信息为均值,以预设值为标准差,进行高斯分布采样,得到所述动作信息。
14.在一些实施例中,所述装置还包括:判断模块,用于在所述虚拟角色处于走跑状态的情况下,基于所述虚拟角色的骨盆的位置和角度,判断所述虚拟角色是否符合平衡条件;在所述虚拟角色不符合平衡条件的情况下,将所述虚拟角色的运动状态由走跑状态更新为起身状态;在所述虚拟角色符合平衡条件的情况下,保持所述虚拟角色的运动状态为走跑状态不变。
15.另一方面,提供了一种动作控制器的训练装置,所述装置包括:第一获取模块,用于基于动作控制器,获取虚拟角色的多个训练样本,每个训练样本包括所述虚拟角色在对应的画面中的样本目标信息、样本姿态和样本动作信息,所述样本目标信息包括对象对所述虚拟角色的操作和所述虚拟角色的运动状态,所述样本动作信息由所述动作控制器基于所述样本目标信息和样本姿态确定;第二获取模块,用于对于任一训练样本,获取所述训练样本的目标训练样本,所述目标训练样本对应的画面为所述训练样本对应的画面的下一帧,所述目标训练样本中的样本姿态基于所述训练样本中的样本姿态和样本动作信息进行模拟得到;第一处理模块,用于将所述训练样本和所述目标训练样本,输入到判别网络中,得到第一损失,所述第一损失用于表示所述判别网络识别姿态变化基于所述动作控制器生成的误差,所述姿态变化指的是所述虚拟角色由所述训练样本的姿态到所述目标训练样本的姿态的变化;第一训练模块,用于基于所述第一损失,对所述动作控制器进行训练。
16.在一些实施例中,所述多个训练样本来自于多局游戏;基于动作控制器,获取所述虚拟角色的多个训练样本的过程,包括:对于任一局游戏,从四个参考动画中随机抽取一帧画面,所述四个参考动画包括行走动画、跑步动画、上起身动画和下起身动画;以所述画面中所述虚拟角色的姿态为当前局游戏的初始姿态,通过所述动作控制器进行多次处理以及多次模拟,得到所述当前局游戏的多个画面中所述虚拟角色的样本目标信息、样本姿态和样本动作信息;将所述当前局游戏的多个画面中所述虚拟角色的样本目标信息、样本姿态和样本动作信息,作为所述当前局游戏对应的多个训练样本。
17.在一些实施例中,基于动作控制器,获取所述虚拟角色的多个训练样本的过程,还包括:在所述虚拟角色不符合平衡条件的情况下,停止所述当前局游戏,得到当前局游戏的目标画面,所述目标画面为所述当前局游戏的最后一帧画面;从所述四个参考动画和所述目标画面中随机抽取一帧画面,以所述画面中所述虚拟角色的姿态为下一局游戏的初始姿态,再次通过所述动作控制器进行多次处理以及多次模拟,得到所述下一局游戏的多个画面中所述虚拟角色的样本目标信息、样本姿态和样本动作信息;将所述下一局游戏的多个画面中所述虚拟角色的样本目标信息、样本姿态和样本动作信息,作为所述下一局游戏对应的多个训练样本。
18.在一些实施例中,所述第一训练模块,包括:调整单元,用于通过所述第一损失,调整所述判别网络的参数;处理单元,用于将所述训练样本和所述目标训练样本,输入到调整参数后的所述判别网络中,得到判别结果;确定单元,用于基于所述判别结果,确定所述训练样本的奖励值,所述奖励值用于表示所述通过所述动作控制器来控制所述虚拟角色的姿态变化的真实度;训练单元,用于基于所述训练样本的奖励值,对所述动作控制器进行训练。
19.在一些实施例中,所述装置还包括:第二处理模块,用于将所述训练样本和所述目标训练样本分别输入到价值网络中,得到所述训练样本的价值和所述目标训练样本的价值,所述价值用于表示对应的训练样本的质量;所述训练单元,用于基于所述训练样本的奖励值、所述训练样本的价值和所述目标训练样本的价值,对所述动作控制器进行训练。
20.在一些实施例中,所述训练单元,用于基于所述训练样本的奖励值、所述训练样本的价值和所述目标训练样本的价值,确定所述训练样本的优势值,所述优势值用于表示所述训练样本对训练所述动作控制器的贡献度;基于所述多个训练样本和所述多个训练样本的优势值,确定第二损失,所述第二损失用于表示所述动作控制器确定所述虚拟角色的后续动作的误差;基于所述第二损失,对所述动作控制器进行训练。
21.在一些实施例中,所述装置还包括:第二训练模块,用于基于所述多个训练样本的优势值,确定第三损失;通过所述第三损失,对所述价值网络进行训练。
22.另一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器用于存储至少一段计算机程序,所述至少一段计算机程序由所述处理器加载并执行以实现本技术实施例中的动画生成方法或者动作控制器的训练方法。
23.另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一段计算机程序,所述至少一段计算机程序由处理器加载并执行以实现如本技术实施例中动画生成方法或者动作控制器的训练方法。
24.另一方面,提供了一种计算机程序产品,包括计算机程序,该计算机程序存储在计算机可读存储介质中,计算机设备的处理器从计算机可读存储介质读取该计算机程序,处理器执行该计算机程序,使得该计算机设备执行上述各个方面或者各个方面的各种可选实现方式中提供的动画生成方法或者动作控制器的训练方法。
25.本技术实施例提供了一种动画生成方法,将虚拟角色在当前画面中的姿态、对象针对虚拟角色的操作以及虚拟角色的运动状态作为输入,输入到一个动作控制器中进行处理,使得动作控制器在虚拟角色的当前的姿态和运动状态基础上,施加对象的操作的影响,从而更加准确地计算出虚拟角色的动作信息,符合对象的意图;然后,通过虚拟角色的动作信息和第一姿态,对虚拟角色的起身动作进行模拟,使得虚拟角色的姿态变换能够符合运动规律,也即是使得虚拟角色的姿态变换更加真实;并且虚拟角色的姿态能够按照当前的动作信息的指引来变换,实时生成下一帧画面中虚拟角色的姿态,提高了姿态变换的准确性和真实性,也即是使得起身动画的效果更加准确、真实。
附图说明
26.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
27.图1是根据本技术实施例提供的一种动画生成方法的实施环境示意图。
28.图2是根据本技术实施例提供的一种动画生成方法的流程图。
29.图3是根据本技术实施例提供的另一种动画生成方法的流程图。
30.图4是根据本技术实施例提供的一种运动状态的确定方法的流程图。
31.图5根据本技术实施例提供的一种虚拟角色的模型示意图。
32.图6是根据本技术实施例提供的一种起身动画的生成示意图。
33.图7是根据本技术实施例提供的一种动作控制器的训练方法的流程图。
34.图8是根据本技术实施例提供的另一种动作控制器的训练方法的流程图。
35.图9是根据本技术实施例提供的一种动作控制器的训练方法。
36.图10是根据本技术实施例提供的一种动画生成装置的框图。
37.图11是根据本技术实施例提供的另一种动画生成装置的框图。
38.图12是根据本技术实施例提供的一种动作控制器的训练装置的框图。
39.图13是根据本技术实施例提供的另一种动作控制器的训练装置的框图。
40.图14是根据本技术实施例提供的一种终端的结构框图。
41.图15是根据本技术实施例提供的一种服务器的结构示意图。
具体实施方式
42.为使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施方式作进一步地详细描述。
43.本技术中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”、“第n”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。
44.本技术中术语“至少一个”是指一个或多个,“多个”的含义是指两个或两个以上。
45.需要说明的是,本技术所涉及的信息(包括但不限于用户设备信息、用户个人信息等)、数据(包括但不限于用于分析的数据、存储的数据、展示的数据等)以及信号,均为经用户授权或者经过各方充分授权的,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。例如,本技术中涉及到的姿态和目标信息都是在充分授权的情况下获取的。
46.本技术实施例提供的动画生成方法和动作控制器的训练方法,能够由计算机设备执行。在一些实施例中,该计算机设备为终端或服务器。下面首先以计算机设备为终端为例,介绍一下本技术实施例提供的动画生成方法的实施环境,图1是根据本技术实施例提供的一种动画生成方法的实施环境示意图。参见图1,该实施环境包括终端101和服务器102。终端101和服务器102能够通过有线或无线通信方式进行直接或间接地连接,本技术在此不做限制。
47.在一些实施例中,终端101是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表、智能语音交互设备、智能家电、车载终端等,但并不局限于此。终端101安装和运行有支持虚拟场景的应用程序。该应用程序可以是第一人称射击游戏(first-person shooting game,fps)、第三人称射击游戏、多人在线战术竞技游戏(multiplayer online battle arena games,moba)、虚拟现实应用程序、三维地图程序或者多人枪战类生存游戏中的任意一种。示意性的,终端101是用户使用的终端,用户使用终端101操作位于虚拟场景中的虚拟角色进行活动,该活动包括但不限于:调整身体姿态、爬行、步行、奔跑、骑行、跳跃、驾驶、拾取、射击、攻击、投掷中的至少一种。示意性的,该虚拟角色是虚拟人物,比如仿真人物角色或动漫人物角色。在虚拟角色倒地的情况下,终端101可以根据用户针对虚拟角
色的操作和虚拟角色在虚拟环境中受到的影响,通过动作控制器对虚拟角色的起身动作进行模拟,形成起身动画。
48.本领域技术人员可以知晓,上述终端的数量可以更多或更少。比如上述终端可以仅为一个,或者上述终端为几十个或几百个,或者更多数量。本技术实施例对终端的数量和设备类型不加以限定。
49.在一些实施例中,服务器102是独立的物理服务器,也能够是多个物理服务器构成的服务器集群或者分布式系统,还能够是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、cdn(content delivery network,内容分发网络)、大数据和人工智能平台等基础云计算服务的云服务器。服务器102用于为支持虚拟场景的应用程序提供后台服务。在一些实施例中,服务器102承担主要计算工作,终端101承担次要计算工作;或者,服务器102承担次要计算工作,终端101承担主要计算工作;或者,服务器102和终端101二者之间采用分布式计算架构进行协同计算。
50.在一些实施例中,服务器102还可以对动作控制器进行训练,以使终端101通过动作控制器模拟出的动作更加真实。相应地,服务器102可以采用本技术实施例提供的动作控制器的训练方法,对动作控制器进行训练。在训练之后,服务器102可以将动作控制器的参数下发到终端101,以使终端101根据训练后的动作控制器来生成虚拟角色的起身动画。也即是,动作控制器的训练方法的实施环境与动画生成方法的实施环境相同,在此不再赘述。
51.图2是根据本技术实施例提供的一种动画生成方法的流程图,参见图2,在本技术实施例中以由终端执行为例进行说明。该方法包括以下步骤。
52.201、终端获取虚拟角色在第一画面中的目标信息和第一姿态,目标信息包括对象对虚拟角色的操作和虚拟角色的运动状态,运动状态为起身状态的多个起身进度和走跑状态中的一种。
53.在本技术实施例中,终端显示第一画面。第一画面中显示有处于第一姿态的虚拟角色。本技术实施例对第一姿态的具体形式不进行限制。对象指的是操控终端的用户。对象可以通过操控终端对虚拟角色实施操作,以控制虚拟角色进行活动。其中,“活动”可以是行走、跑步或者起身等,本技术实施例对此不进行限制。终端获取第一画面中对象针对虚拟角色的操作、虚拟角色的运动状态以及虚拟角色的第一姿态。然后,终端基于对象针对虚拟角色的操作和虚拟角色的运动状态,确定虚拟角色的目标信息。其中,起身状态的多个起身进度指的是虚拟角色由倒地到站立的起身过程中的进程,也即是起身动画的显示进度。
54.202、在虚拟角色处于起身状态的情况下,终端通过动作控制器,对目标信息和第一姿态进行处理,得到虚拟角色的动作信息,动作控制器用于确定虚拟角色的后续动作。
55.在本技术实施例中,在虚拟角色处于起身状态的任一进度的情况下,终端能够将目标信息和虚拟角色的第一姿态作为输入信息,输入到动作控制器中进行处理,以确定虚拟角色的后续动作。动作控制器可以是一个神经网络,本技术实施例对动作控制器的结构不进行限制。终端通过动作控制器输出虚拟角色的动作信息。动作信息用于表示对象的操作对虚拟角色施加的内力矩,也即是,动作信息能够反映对象针对虚拟角色的后续动作的影响。
56.203、终端基于动作信息和第一姿态,对虚拟角色的起身动作进行模拟,得到虚拟角色的第二姿态,第二姿态用于表示虚拟角色在第二画面中的姿态,第二画面为第一画面
的下一帧画面。
57.在本技术实施例中,终端根据动作信息和第一姿态,采用物理领域中的动力学知识,对虚拟角色的起身动作进行模拟。也即是,终端基于物理领域中的动力学知识,对虚拟角色的动作信息和第一姿态进行计算,确定虚拟角色的后续动作的动作轨迹。然后,终端可以基于第一姿态和后续动作的动作轨迹,确定虚拟角色的第二姿态。第二姿态即为虚拟角色在当前的第一画面的下一帧画面中的姿态。
58.204、终端在第二画面中显示虚拟角色的第二姿态,以呈现虚拟角色的起身动画。
59.在本技术实施例中,在确定虚拟角色在下一帧画面的姿态之后,终端显示第二画面。第二画面中显示有处于第二姿态的虚拟角色。也即是,随着第一画面切换为第二画面,虚拟角色由第一姿态转换为第二姿态。相应地,虚拟角色的姿态转换过程构成虚拟角色的起身动画。
60.本技术实施例提供的方案,将虚拟角色在当前画面中的姿态、对象针对虚拟角色的操作以及虚拟角色的运动状态作为输入,输入到一个动作控制器中进行处理,使得动作控制器在虚拟角色的当前的姿态和运动状态基础上,施加对象的操作的影响,从而更加准确地计算出虚拟角色的动作信息,符合对象的意图;然后,通过虚拟角色的动作信息和第一姿态,对虚拟角色的起身动作进行模拟,使得虚拟角色的姿态变换能够符合运动规律,也即是使得虚拟角色的姿态变换更加真实;并且虚拟角色的姿态能够按照当前的动作信息的指引来变换,实时生成下一帧画面中虚拟角色的姿态,提高了姿态变换的准确性和真实性,也即是使得起身动画的效果更加准确、真实。
61.图3是根据本技术实施例提供的另一种动画生成方法的流程图,参见图3,在本技术实施例中以由终端执行为例进行说明。该动画生成方法包括以下步骤。
62.301、终端获取虚拟角色在第一画面中的目标信息,目标信息包括对象对虚拟角色的操作和虚拟角色的运动状态,运动状态为起身状态的多个起身进度和走跑状态中的一种。
63.在本技术实施例中,终端在第一画面中显示虚拟角色。虚拟角色可以是具有双足的角色,本技术实施例对此不进行限制。在第一画面中,虚拟角色可以处于走跑状态或者起身状态,本技术实施例对此不进行限制。走跑状态具体可以划分为行走状态和跑步状态。起身状态可以划分为多个起身进度。起身进度指的是虚拟角色由倒地到起身的过程中所显示的起身动画的进度。终端获取第一画面中对象针对虚拟角色的操作和虚拟角色的运动状态。然后,终端基于对象针对虚拟角色的操作和虚拟角色的运动状态,确定虚拟角色的目标信息。
64.在一些实施例中,响应于对象针对虚拟角色的操作,终端获取虚拟角色的期望移动方向和期望移动速率。然后,终端基于起身动画的期望时长和第一画面,确定第一画面中虚拟角色的运动状态。然后,终端基于期望移动方向、期望移动速率和运动状态,确定虚拟角色在第一画面中的目标信息。其中,期望移动方向和期望移动速率用于反映对象所期望的虚拟角色后续的移动情况。本技术实施例对期望移动方向和期望移动速率均不进行限制。
65.可选地,目标信息可以是一个向量,本技术实施例对目标信息的形式不进行限制。目标信息g可以是一个4维向量。其中,目标信息g的前两维用于表示虚拟角色的期望移动方
向,由一个xy平面上的单位向量的两个维度组成。目标信息g的第三个维度用于表示虚拟角色的期望移动速率,例如期望移动速率=260cm/s。目标信息g的最后一个维度用于表示虚拟角色的运动状态。该运动状态也可以称为相位(phase)。
66.其中,终端可以预先为多种运动状态设置不同的数值来表示;相应地,在虚拟角色的起身过程中,终端按照顺序依次替换运动状态对应的数值,以实现更新运动状态的目的。或者,终端还可以预先设置起身状态的初始值和走跑状态的初始值,根据起身动画的帧数,将虚拟角色的运动状态对应的数值由起身状态的初始值逐步更新到走跑状态的初始值,以实现起身动画中运动状态的更新。本技术实施例对运动状态的确定方式不进行限制。
67.可选地,终端可以根据起身动画的帧数,来确定虚拟角色的运动状态。相应地,终端基于起身动画的期望时长和第一画面,确定第一画面中虚拟角色的运动状态的过程包括:终端基于起身动画的期望时长,确定完成起身动画对应的帧数。然后,终端基于帧数和虚拟角色的起身进度的初始值,确定起身动画中每一帧画面对应的单位进度值。然后,终端基于初始值、单位进度值和第一画面在起身动画中的时序,确定第一画面中虚拟角色的运动状态。其中,初始值用于起身动画的第一帧画面中虚拟角色的起身状态。单位进度值用于表示每显示一帧起身动画中的画面所更新的起身进度的大小。
68.在上述实施例中,终端根据起身动画的期望时长和动画的渲染帧率之间的比值,确定完成起身动画对应的帧数。终端根据预先设置的起身进度的初始值和走跑状态的初始值,确定起身进度与走跑状态之间的差值。差值用于表示虚拟角色由初始的起身进度恢复到走跑状态所需的过程。然后,终端可以根据差值与帧数之间的比值,确定起身动画中每一帧画面对应的单位进度值。终端可以根据第一画面在起身动画中的时序,确定第一画面对应的目标值。目标值用于表示第一画面(当前画面)与起身动画中的首个画面(起身进度的初始值对应的画面)之间间隔的画面的数量。也即是,目标值用于表示第一画面在起身动画中的位置。然后,终端将起身进度的初始值减去单位进度值与目标值的乘积,得到第一画面中虚拟角色的运动状态所对应的数值。也即是,第一画面中虚拟角色的运动状态=起身进度的初始值-单位进度值*目标值。或者,终端还可以记录每一个画面中虚拟角色的运动状态。相应地,终端可以将第一画面的前一帧画面中虚拟角色的运动状态对应的数值减去单位进度值,从而确定第一画面中虚拟角色的运动状态。本技术实施例对走跑状态的初始值和起身进度的初始值不进行限制。随着虚拟角色起身,虚拟角色的运动状态对应的数值由起身进度的初始值逐渐变为走跑状态的初始值。
69.例如,图4是根据本技术实施例提供的一种运动状态的确定方法的流程图。参见图4,当虚拟角色处于正常的走跑状态时,终端确定虚拟角色的运动状态对应的数值始终等于0。此时,0即为走跑状态的初始值。在虚拟角色处于走跑状态的情况下,对于每一帧画面,终端都会调用平衡条件的判定,以确定当前画面中虚拟角色是否出符合平衡条件。当虚拟角色受到较强烈冲击时,例如被虚拟车辆撞击,在真实的情况下虚拟角色将不能保持平衡,也即是虚拟角色的平衡条件将被打破。此时,终端确定虚拟角色处于起身状态。也即是,终端将虚拟角色的运动状态由走跑状态直接转换为起身状态。相应地,终端将运动状态对应的数值从0变成1。此时,1即为起身状态的初始值。若起身动画期望时长3秒钟,动画的渲染速率采用的是每秒钟30帧的帧率,因此起身动画所需的帧数为90帧。当虚拟角色处于起身状态时,每一帧画面对应的起身进度将减少=1/90。这样,在90帧过后运动状态将重新变成0
(走跑状态)。此时,终端可以再次调用平衡条件的判定,若虚拟角色符合平衡条件,则终端将虚拟角色的运动状态恢复为走跑状态;若虚拟角色不符合平衡条件,则终端再次进入起身状态,令运动状态对应的数值为1继续尝试起身。
70.其中,本技术实施例对平衡条件的判定方式不进行限制。可选地,在虚拟角色处于走跑状态的情况下,终端基于虚拟角色的骨盆的位置和角度,判断虚拟角色是否符合平衡条件。然后,在虚拟角色不符合平衡条件的情况下,终端将虚拟角色的运动状态由走跑状态更新为起身状态。在虚拟角色符合平衡条件的情况下,终端保持虚拟角色的运动状态为走跑状态不变。
71.例如,若虚拟角色的骨盆(pelvis)的高度大于50cm,且骨盆的roll角度小于45
°
,且骨盆的pitch角度小于60
°
等三个条件,则终端确定虚拟角色满足平衡条件。其中,roll角度指的是虚拟角色的骨盆在左/右方向上倾斜的角度。pitch角度指的是虚拟角色的骨盆在前/后方向上倾斜的角度。若虚拟角色的骨盆不满足上述三个条件中的任一条件,则终端确定虚拟角色不满足平衡条件。
72.302、终端获取虚拟角色在第一画面中的第一姿态。
73.在本技术实施例中,终端获取虚拟角色身上多个可转动关节的角度值。多个可转动关节的角度值用于反映多个可转动关节的姿态。然后,终端基于多个可转动关节的角度值、虚拟角色的骨盆的位置向量以及骨盆的姿态向量,确定虚拟角色的第一姿态。其中,每当终端模拟出虚拟角色的动作时,终端会记录虚拟角色的基础位置(component)在世界坐标系中的位移与姿态的四元数、虚拟角色的骨盆相对于基础位置的位移与姿态的四元数、所有参与模拟的可转动关节相对于基础位置的姿态的四元数。本技术实施例中关节也可以称为骨骼。基础位置用于反映虚拟角色在虚拟场景中的位置。基础位置可以是虚拟角色的某一脚掌的位置,也可以是虚拟角色的两个脚掌(双足)的中心位置,本技术实施例对此不进行限制。
74.例如,图5根据本技术实施例提供的一种虚拟角色的模型示意图。参见图5,虚拟角色具有双足。虚拟角色的基础位置(component)位于虚拟角色的骨盆(pelvis)的正下方,且虚拟角色的基础位置处于虚拟角色的双足所在的平面上。终端可以根据虚拟角色的基础位置在世界坐标系中的位移与姿态的四元数、虚拟角色的骨盆相对于基础位置的位移与姿态的四元数、所有参与模拟的可转动关节相对于基础位置的姿态的四元数,计算出所有参与动力学模拟的可转动关节相对于其父关节的旋转。
75.本技术实施例对多个可转动关节的数量和位置不进行限制。例如,除了骨盆以外,虚拟角色还可以有18个可转动关节,具体请参见表1。每个可转动关节可转动的自由度为1维或3维。因此由表1可知,18个可转动关节共可产生40个自由度。终端可以根据18组表示关节相对于基础位置的姿态旋转的四元数,确定40个角度值。然后,终端使用40个角度值,再加上虚拟角色的骨盆在世界坐标系中的3维位置向量以及6维forward-up向量表示的姿态向量,总共49维向量,就构成虚拟角色当前的第一姿态的特征向量s。
76.表1关节名称父关节自由度可转动方向spine_01pelvis3zyxspine_02spine_013zyx
upperarm_lspine_023zyxlowerarm_lupperarm_l1zhand_llowerarm_l3zyxupperarm_rspine_023zyxlowerarm_rupperarm_r1zhand_rlowerarm_r3zyxneckspine_021zheadneck3zyxthigh_lpelvis3zyxcalf_lthigh_l1zfoot_lcalf_l3zyxtoe_lfoot_l1zthigh_rpelvis3zyxcalf_rthigh_r1zfoot_rcalf_r3zyxtoe_rfoot_r1z需要说明的是,本技术实施例对步骤301和步骤302的执行时机不进行限制。终端可以同时执行步骤301和步骤302,也即是,终端同时获取虚拟角色在第一画面中的目标信息和第一姿态。或者,终端可以先执行步骤301再执行步骤302,也即是,终端先获取虚拟角色在第一画面中的目标信息,再获取虚拟角色的第一姿态。或者,终端可以先执行步骤302再执行步骤301,也即是,终端先获取虚拟角色在第一画面中的第一姿态,再获取虚拟角色的目标信息。
77.303、在虚拟角色处于起身状态的情况下,终端通过动作控制器,对目标信息和第一姿态进行处理,得到虚拟角色的动作信息,动作控制器用于确定虚拟角色的后续动作。
78.在本技术实施例中,动作信息用于表示对象的操作对虚拟角色施加的内力矩。当虚拟角色处于起身状态时,终端将虚拟对象的目标信息和第一姿态输入到动作控制器中,通过动作控制器对目标信息和第一姿态进行处理,得到虚拟角色的动作信息。动作信息可以是一个40维向量。终端的物理引擎可以根据动作信息所反映的内力矩,结合虚拟环境给予虚拟角色的外力与外力矩,模拟出虚拟角色下一帧的姿态。其中,动作控制器可以是一个三层的多层感知机(multi-layer perceptron,mlp)神经网络,本技术实施例对此不进行限制。动作控制器也可以称为策略网络,用于确定虚拟角色的后续动作。
79.在一些实施例中,终端通过动作控制器,对第一姿态的特征向量和目标信息的特征向量进行拼接,得到角色特征向量。然后,终端基于动作控制器和角色特征向量,确定虚拟角色的动作信息。其中,角色特征向量的维度等于第一姿态的特征向量的维度加上目标信息的特征向量的维度。相应地,角色特征向量的维度=49+4=53维。本技术实施例提供的方案,通过将第一姿态的特征向量和目标信息的特征向量进行拼接,使得拼接得到的角色特征向量能够更加准确地反映虚拟角色的当前状态以及对象针对虚拟角色的当前状态的影响,从而更加准确地计算出虚拟角色的动作信息,符合对象的意图,利于后续更加准确地模拟出下一帧画面中虚拟角色的姿态,从而使得起身动画的效果更加准确、真实。
80.其中,终端基于动作控制器和角色特征向量,确定虚拟角色的动作信息的过程包括:终端通过动作控制器,对角色特征向量进行处理,得到初始动作信息。然后,终端以初始动作信息为均值,以预设值为标准差,进行高斯分布采样,得到动作信息。本技术实施例对预设值不进行限制。本技术实施例提供的方案,在通过动作控制器计算出初始动作信息后,针对初始动作信息进行高斯分布采样,使得最终确定的动作信息具有随机性,从而使得下一帧画面中虚拟角色的姿态更加丰富多样;并且,通过以初始动作信息为均值进行采样,使得采样得到的初始信息与动作控制器生成的初始动作信息之间不会有太大差距,也即是在提高姿态的多样性的基础上,使得下一帧画面中虚拟角色的姿态不会与动作控制器所控制姿态有太大差距,保障了虚拟角色的姿态变化的合理性。
81.在一些实施例中,终端可以通过下述公式一,来计算虚拟角色的初始动作信息。
82.公式一:。
83.其中,用于表示第一姿态的特征向量;用于表示目标信息的特征向量;用于表示角色特征向量;用于表示初始动作信息,是一个40维的向量;矩阵、、和偏置向量、、用于表示动作控制器的网络参数。
84.在一些实施例中,服务器可以通过下述公式二,来计算虚拟角色的动作信息。
85.公式二:。
86.其中,用于表示虚拟角色的动作信息;用于表示初始动作信息;用于表示标准差;用于表示高斯分布采样。
87.304、终端基于动作信息和第一姿态,对虚拟角色的起身动作进行模拟,得到虚拟角色的第二姿态,第二姿态用于表示虚拟角色在第二画面中的姿态,第二画面为第一画面的下一帧画面。
88.在本技术实施例中,终端根据动作信息和第一姿态,对虚拟角色的起身动作进行动力学模拟。本技术中动力学模拟也可以称为物理模拟。也即是,终端采用动力学知识,对虚拟角色的动作信息和第一姿态进行计算,得到虚拟角色的后续动作的动作轨迹。然后,终端可以基于第一姿态和后续动作的动作轨迹,确定虚拟角色的第二姿态。
89.在一些实施例中,终端还可以根据虚拟环境对虚拟角色施加的环境冲击,确定虚拟角色受到的外力矩。然后,终端结合虚拟环境对虚拟角色的外力矩和对象针对虚拟角色的内力矩(动作信息),对第一姿态进行调整,得到虚拟角色的第二姿态。本技术实施例提供的方案,不仅考虑了对象针对虚拟角色的影响,也考虑了虚拟环境中的因素对虚拟角色的影响,使得虚拟角色的姿态变化更加准确、真实,也即是使得起身动画的效果更加准确、真实。
90.例如,图6是根据本技术实施例提供的一种起身动画的生成示意图。参见图6,响应于对象针对虚拟角色的操作,终端获取虚拟角色在第一画面中的目标信息。目标信息包括对象对虚拟角色的操作和虚拟角色的运动状态。终端获取虚拟角色在第一画面中的第一姿态。然后,终端将虚拟对象的目标信息和第一姿态输入到动作控制器中,通过动作控制器对目标信息和第一姿态进行处理,得到虚拟角色的动作信息。然后,终端结合虚拟环境对虚拟角色的外力矩,根据动作信息和第一姿态,对虚拟角色的起身动作进行动力学模拟。动力学模拟包括正向动力学与数值积分。然后,终端得到虚拟角色的第二姿态。
91.305、终端在第二画面中显示虚拟角色的第二姿态,以呈现虚拟角色的起身动画。
92.在本技术实施例中,在确定虚拟角色的第二姿态之后,终端渲染并显示第二画面。第二画面中显示有处于第二姿态的虚拟角色。也即是,随着第一画面切换为第二画面,虚拟角色由第一姿态转换为第二姿态。相应地,虚拟角色的姿态转换过程构成虚拟角色的起身动画。
93.本技术实施例提供的方案,将虚拟角色在当前画面中的姿态、对象针对虚拟角色的操作以及虚拟角色的运动状态作为输入,输入到一个动作控制器中进行处理,使得动作控制器在虚拟角色的当前的姿态和运动状态基础上,施加对象的操作的影响,从而更加准确地计算出虚拟角色的动作信息,符合对象的意图;然后,通过虚拟角色的动作信息和第一姿态,对虚拟角色的起身动作进行模拟,使得虚拟角色的姿态变换能够符合运动规律,也即是使得虚拟角色的姿态变换更加真实;并且虚拟角色的姿态能够按照当前的动作信息的指引来变换,实时生成下一帧画面中虚拟角色的姿态,提高了姿态变换的准确性和真实性,也即是使得起身动画的效果更加准确、真实。
94.图7是根据本技术实施例提供的一种动作控制器的训练方法的流程图,参见图7,在本技术实施例中以由服务器执行为例进行说明。该动作控制器的训练方法包括以下步骤。
95.701、服务器基于动作控制器,获取虚拟角色的多个训练样本,每个训练样本包括虚拟角色在对应的画面中的样本目标信息、样本姿态和样本动作信息,样本目标信息包括对象对虚拟角色的操作和虚拟角色的运动状态,样本动作信息由动作控制器基于样本目标信息和样本姿态确定。
96.在本技术实施例中,服务器可以从终端获取多个训练样本。多个训练样本基于终端的动作控制器生成。多个训练样本的生成过程可以与步骤301-步骤305的执行过程的原理相同,在此不再赘述。本技术实施例对多个训练样本的数量不进行限制。服务器可以通过多个训练样本训练动作控制器。
97.702、对于任一训练样本,服务器获取训练样本的目标训练样本,目标训练样本对应的画面为训练样本对应的画面的下一帧,目标训练样本中的样本姿态基于训练样本中的样本姿态和样本动作信息进行模拟得到。
98.在本技术实施例中,对于任一训练样本,服务器从多个训练样本中获取训练样本对应的画面的下一帧画面所对应的训练样本,作为该训练样本的目标训练样本。目标训练样本中的样本姿态基于训练样本中的样本姿态和样本动作信息通过动作生成器进行模拟得到。
99.703、服务器将训练样本和目标训练样本,输入到判别网络中,得到第一损失,第一损失用于表示判别网络识别姿态变化基于动作控制器生成的误差,姿态变化指的是虚拟角色由训练样本的姿态到目标训练样本的姿态的变化。
100.在本技术实施例中,对于任一训练样本,服务器将该训练样本和该训练样本的目标训练样本,输入到判别网络中。然后,服务器通过判别网络,判别输入的两个训练样本之间的姿态变化是否由动作控制器生成。服务器可以根据多个训练样本和多个训练样本各自的目标训练样本,计算第一损失。
101.704、服务器基于第一损失,对动作控制器进行训练。
102.在本技术实施例中,服务器可以以最小化第一损失为目标,调整动作控制器的参数。然后,服务器可以将训练后的动作控制器的参数发送给终端。然后,终端更新本地的动作控制器的参数。或者,服务器可以将训练后的动作控制器直接发送给终端,以使终端更新动作控制器。
103.本技术实施例提供的方案,对于任一画面对应的训练样本,通过在虚拟角色在画面中的样本姿态和样本动作信息基础上,通过动作控制器施加对象的操作的影响,能够更加准确地计算出虚拟角色的样本动作信息,从而得到质量更好的训练样本;然后,针对于两两相邻的画面对应的训练样本,通过判别网络进行判别,判别两两相邻的画面中虚拟角色的姿态变化是否由动作生成器生成,从而得到的第一损失能够准确地反映动作控制器产生的姿态变化的真实性;然后通过第一损失对动作控制器进行训练,使得基于动作控制器产生的姿态变化越来越准确、真实,提升了动作控制器的性能。
104.图8是根据本技术实施例提供的另一种动作控制器的训练方法的流程图,参见图8,在本技术实施例中以由服务器执行为例进行说明。该动作控制器的训练方法包括以下步骤。
105.801、服务器基于动作控制器,获取虚拟角色的多个训练样本,每个训练样本包括虚拟角色在对应的画面中的样本目标信息、样本姿态和样本动作信息,样本目标信息包括对象对虚拟角色的操作和虚拟角色的运动状态,样本动作信息由动作控制器基于样本目标信息和样本姿态确定。
106.在本技术实施例中,服务器可以从终端获取多个训练样本。多个训练样本基于动作控制器生成。多个训练样本的生成过程可以与步骤301-步骤305的执行过程的原理相同,在此不再赘述。本技术实施例对多个训练样本的数量不进行限制。可选地,每一轮训练的所用的训练样本的数量可以为4096个。多个训练样本可以来自于多局游戏,也可以来自于同一局游戏的不同虚拟场景,本技术实施例对此不进行限制。
107.在一些实施例中,多个训练样本来自于多局游戏。相应地,终端基于动作控制器,获取虚拟角色的多个训练样本的过程包括:对于任一局游戏,终端从四个参考动画中随机抽取一帧画面。四个参考动画包括行走动画、跑步动画、上起身动画和下起身动画。四个参考动画中的画面用于表示真实情况下虚拟角色在对应状态下的姿态变化。终端以该画面中虚拟角色的姿态为当前局游戏的初始姿态,通过动作控制器进行多次处理以及多次模拟,得到当前局游戏的多个画面中虚拟角色的样本目标信息、样本姿态和样本动作信息。然后,终端将当前局游戏的多个画面中虚拟角色的样本目标信息、样本姿态和样本动作信息,作为当前局游戏对应的多个训练样本。然后,服务器可以直接从终端获取多个训练样本。本技术实施例提供的方案,通过从四个参考动画中随机抽取一帧画面,以该画面中虚拟角色的姿态为当前局游戏的初始姿态,丰富了每一局游戏的初始姿态;在此基础上,从多局游戏中获取多个训练样本,由于虚拟角色在每一局游戏中的行动轨迹一般是不同的,相应地,虚拟角色在每一局游戏中从初始姿态所产生的姿态变化也会存在差异,丰富了训练过程中所使用的虚拟角色的姿态,利于提升动作控制器的性能,使得训练后的动作控制器能够生成丰富多样的动作。
108.例如,在任一局游戏开始前,终端可以先从预先获取的四个参考动画中随机抽取一个参考动画。每个参考动画有25%的概率被抽中。然后,终端再从该参考动画随机抽取一
帧画面,以这一帧画面中虚拟角色的姿态作为这一局游戏中虚拟角色的初始姿态。然后,终端从初始姿态开始,通过动作生成器进行处理和模拟,从而得到虚拟角色在该局游戏中的姿态变化。其中,如果抽取到的是行走动画或者跑步动画,则终端确定虚拟角色的运动状态对应的数值(phase)为0。如果抽取到的是上起身动画和下起身动画,则终端确定虚拟角色的运动状态对应的数值由剩余的动画时间决定。例如,上起身动画为3秒,终端抽取了第1.2秒的时刻的姿态作为初始化姿态,则此时上起身动画剩余部分为1.8秒,那么虚拟角色的运动状态对应的数值为1.8/3=0.6。上起身动画指的是起身动画开始时虚拟角色是脸朝上躺在地上,然后弯腰双手向后撑地起身。下起身动画指的是起身动画开始时虚拟角色是脸朝下趴在地上,然后双手向前支撑地面起身。
109.在一些实施例中,在虚拟角色不符合平衡条件的情况下,终端停止当前局游戏,得到当前局游戏的目标画面。目标画面为当前局游戏的最后一帧画面。然后,从四个参考动画和目标画面中随机抽取一帧画面,以画面中虚拟角色的姿态为下一局游戏的初始姿态,再次通过动作控制器进行多次处理以及多次模拟,得到下一局游戏的多个画面中虚拟角色的样本目标信息、样本姿态和样本动作信息。然后,终端将下一局游戏的多个画面中虚拟角色的样本目标信息、样本姿态和样本动作信息,作为下一局游戏对应的多个训练样本。由于刚开始训练时动作控制器的性能低,如果在虚拟角色不符合平衡条件的情况下,来模拟虚拟角色的起身动画,则虚拟角色摔倒后只会在地上折腾蠕动,无法收集到对于正常走跑训练有用的训练样本。本技术实施例提供的方案,在虚拟角色不符合平衡条件的情况下,结束当前局游戏,也即是停止从当前局游戏中继续获取训练样本,然后重启下局游戏,来收集训练样本,使得训练样本的质量更高,利于后续提升动作控制器的性能。
110.例如,每一局游戏被终止后,若所收集的训练样本的数量还未达到要求(例如4096帧),则终端可以开启下一局游戏,继续收集训练样本。此时,终端会保存上一局游戏最后一帧画面中的虚拟角色的姿态。然后,终端进行一次随机采样,使得终端有20%的概率以上述保存的姿态来为下一局游戏进行角色姿态进行初始化,同时令虚拟角色的运动状态对应的数值为1。然后,终端通过动作生成器进行处理和模拟,从而得到虚拟角色在下一局游戏中的姿态变化。下一局游戏至少会进行3秒。其中,终端有80%的概率会按照原先的方式对下一局游戏进行姿态初始化,也即是从四个参考动画中进行随机抽取。由于有了这样的轨迹终止与姿态初始化机制,才使得深度强化学习算法训练中能够考虑到虚拟角色从走跑到摔倒后可能出现的多种多样的姿态,而不仅仅是如同参考动画中那样的倒地姿态,并通过模拟探索到无论从何种姿态起始都能够平滑地过渡到最终起身的动画生成效果。
111.在一些实施例中,若姿态初始化时抽取的是上起身动画或者下起身动画,则在动画剩余部分时间内(例如上述的1.8秒),终端将不会进行平衡条件的判定,也不会终止对局。等到这个时间走完之后,针对于后续每一帧画面中的虚拟角色,终端都会进行平衡条件判定。若虚拟角色被判定为不平衡,终端也会终止这局游戏并进入下一局游戏。
112.802、对于任一训练样本,获取训练样本的目标训练样本,目标训练样本对应的画面为训练样本对应的画面的下一帧,目标训练样本中的样本姿态基于训练样本中的样本姿态和样本动作信息进行模拟得到。
113.在本技术实施例中,对于任一训练样本,服务器从多个训练样本中获取训练样本对应的画面的下一帧画面所对应的训练样本,作为该训练样本的目标训练样本。目标训练
样本中的样本姿态基于训练样本中的样本姿态和样本动作信息通过动作控制器进行模拟得到。
114.803、服务器将训练样本和目标训练样本,输入到判别网络中,得到第一损失,第一损失用于表示判别网络识别姿态变化基于动作控制器生成的误差,姿态变化指的是虚拟角色由训练样本的姿态到目标训练样本的姿态的变化。
115.在本技术实施例中,对于任一训练样本,服务器可以将该训练样本和该训练样本的目标训练样本,同时输入到判别网络中。然后,服务器通过判别网络,判别输入的训练样本和该训练样本的目标训练样本之间的姿态变化是否由动作控制器生成。然后,服务器根据多个训练样本的判别结果,计算第一损失。
116.在一些实施例中,服务器可以通过下述公式三,计算训练样本的判别结果。
117.公式三:。
118.其中,用于表示训练样本中样本姿态的特征向量;用于表示目标训练样本中样本姿态的特征向量;用于表示拼接后的样本姿态的特征向量,维度为49
×
2=98维;矩阵、、和偏置向量、、用于表示判别网络的网络参数;用于表示训练样本的判别结果,是一个维度仅为1的向量。
119.在一些实施例中,除了基于动作控制器生成的多个训练样本训练外,服务器还可以从上述四个参考动画中获取多个参考样本,来用于训练动作控制器。多个参考样本用于反映真实情况下虚拟角色的姿态变化。相应地,服务器可以通过下述公式四,计算第一损失。
120.公式四:。
121.其中,用于表示动作控制器;用于表示虚拟角色的姿态变化是由终端通过动作控制器模拟出来的;用于表示四个参考动画;用于表示虚拟角色的姿态变化是由服务器直接从固定的四个参考动画中提取出来的;用于表示训练样本的判别结果;用于表示第一损失,也即是判别网络d的损失。判别网络d的作用是鉴别这样的一项姿态变化是基于终端的动作控制器模拟出来的,还是来自于真实情况下的姿态变化的数据集。如果是基于终端的动作控制器模拟出来的,训练过程中希望判别网络的输出-1;如果是来自于真实情况下的姿态变化的数据集,训练过程中希望判别器输出1。
122.804、服务器通过第一损失,调整判别网络的参数。
123.在本技术实施例中,服务器可以以最小化第一损失为目标,调整判别网络的参数,以使判别网络能够更加准确地判别训练样本中的样本姿态是否由动作控制器模拟出来。当后续动作控制器最终被训练得很好的时候,动作控制器可以控制终端中的虚拟角色做出与参考动画中非常相似的动作,此时动作控制器产生的姿态变化就能够迷惑判别网络,使判别网络的输出从-1慢慢向1靠拢。
124.805、服务器将训练样本和目标训练样本,输入到调整参数后的判别网络中,得到判别结果。
125.在本技术实施例中,服务器通过参数调整后的判别网络,再次对训练样本和目标
训练样本进行判别,得到训练样本的判别结果。服务器计算判别结果的原理与步骤703中计算判别结果的原理相同,在此不再赘述。
126.806、服务器基于判别结果,确定训练样本的奖励值,奖励值用于表示通过动作控制器来控制虚拟角色的姿态变化的真实度。
127.在本技术实施例中,服务器通过为训练样本的判别结果,设置奖励值,以激励动作控制器控制的姿态变化越来越真实。具体地,当终端通过动作控制器模拟出的姿态变化与参考动画中真实的姿态变化越相近,服务器确定的奖励值越高;当终端通过动作控制器模拟出的姿态变化与参考动画中真实的姿态变化越相远,服务器确定的奖励值越低。也即是,奖励值与动作控制器模拟的姿态变化的真实度正相关。
128.在一些实施例中,服务器可以通过下述公式五,计算训练样本的奖励值。
129.公式五:。
130.其中,用于表示训练样本的奖励值;用于表示训练样本的判别结果;用于表示训练样本中样本姿态的特征向量;用于表示目标训练样本中样本姿态的特征向量。
131.807、服务器基于训练样本的奖励值,对动作控制器进行训练。
132.在本技术实施例中,服务器能够将训练样本和目标训练样本分别输入到价值网络中,得到训练样本的价值和目标训练样本的价值。价值用于表示对应的训练样本的质量。然后,服务器基于训练样本的奖励值,对动作控制器进行训练的过程包括:服务器基于训练样本的奖励值、训练样本的价值和目标训练样本的价值,对动作控制器进行训练。
133.在一些实施例中,服务器可以通过下述公式六,计算训练样本的价值。
134.公式六:。
135.其中,用于表示训练样本中样本姿态的特征向量;用于表示训练样本的价值,是一个维度仅为1的量;矩阵、、和偏置向量、、用于表示判别网络的网络参数。
136.可选地,服务器基于训练样本的奖励值、训练样本的价值和目标训练样本的价值,对动作控制器进行训练的过程包括:服务器基于训练样本的奖励值、训练样本的价值和目标训练样本的价值,确定训练样本的优势值。优势值用于表示训练样本对训练动作控制器的贡献度。然后,服务器基于多个训练样本和多个训练样本的优势值,确定第二损失。第二损失用于表示动作控制器确定虚拟角色的后续动作的误差。服务器基于第二损失,对动作控制器进行训练。
137.在一些实施例中,服务器可以通过下述公式七,计算训练样本的优势值。
138.公式七:。
139.其中,用于表示训练样本的优势值;用于表示训练样本的奖励值;用于表示训练样本中样本姿态的特征向量;用于表示训练样本的价值;用于表示目标训练样本中样本姿态的特征向量;用于表示目标训练样本的价值。
140.在一些实施例中,服务器可以通过下述公式八,计算第二损失。
141.公式八:。
142.其中,用于表示动作控制器;用于表示第二损失,也即是动作控制器的损失;
用于表示训练样本的优势值;用于表示训练样本的样本动作信息;用于表示训练样本的初始动作信息;用于表示训练样本的样本姿态;用于表示训练样本的样本目标信息。
143.在一些实施例中,服务器还能够基于多个训练样本的优势值,确定第三损失。然后,服务器通过第三损失,对价值网络进行训练。服务器可以通过下述公式九,计算第三损失。
144.公式九:。
145.其中,用于表示价值网络;用于表示第三损失,也即为价值网络的损失;用于表示训练样本的奖励值;用于表示训练样本中样本姿态的特征向量;用于表示训练样本的价值;用于表示目标训练样本中样本姿态的特征向量;用于表示目标训练样本的价值。
146.为了更加清楚地描述本技术实施例提供的动作控制器的训练方法,下面结合附图进一步描述。图9是根据本技术实施例提供的一种动作控制器的训练方法。参见图9,服务器对动作控制器π、价值网络v和判别网络d的参数进行初始化。然后,服务器将动作控制器π的参数下发到终端。终端基于动作控制器π的参数,模拟虚拟角色的姿态,得到训练样本。服务器从终端获取训练样本。在训练样本的数量足够的情况下,服务器根据多个训练样本,调整判别网络d的参数。然后,服务器计算训练样本的奖励值和优势值。然后,服务器根据训练样本的奖励值和优势值,计算动作控制器π的损失和价值网络v的损失,从而调整动作控制器π和价值网络v的参数。然后,服务器将动作控制器π的参数发到终端,以基于动作控制器π生成的起身动画的效果是否达标。在起身动画的效果达标的情况下,终端存储动作控制器π的参数。反之,终端继续为服务器提供训练样本。
147.本技术实施例提供的方案,对于任一画面对应的训练样本,通过在虚拟角色在画面中的样本姿态和样本动作信息基础上,通过动作控制器施加对象的操作的影响,能够更加准确地计算出虚拟角色的样本动作信息,从而得到质量更好的训练样本;然后,针对于两两相邻的画面对应的训练样本,通过判别网络进行判别,判别两两相邻的画面中虚拟角色的姿态变化是否由动作生成器生成,从而得到的第一损失能够准确地反映动作控制器产生的姿态变化的真实性;然后通过第一损失对动作控制器进行训练,使得基于动作控制器产生的姿态变化越来越准确、真实,提升了动作控制器的性能。
148.图10是根据本技术实施例提供的一种动画生成装置的框图。该动画生成装置用于执行上述动画生成方法执行时的步骤,参见图10,该装置包括:获取模块1001、处理模块1002、模拟模块1003以及显示模块1004。
149.获取模块1001,用于获取虚拟角色在第一画面中的目标信息和第一姿态,目标信息包括对象对虚拟角色的操作和虚拟角色的运动状态,运动状态为起身状态的多个起身进度和走跑状态中的一种。
150.处理模块1002,用于在虚拟角色处于起身状态的情况下,通过动作控制器,对目标信息和第一姿态进行处理,得到虚拟角色的动作信息,动作控制器用于确定虚拟角色的后续动作,动作信息用于表示对象的操作对虚拟角色施加的内力矩。
151.模拟模块1003,用于基于动作信息和第一姿态,对虚拟角色的起身动作进行模拟,
得到虚拟角色的第二姿态,第二姿态用于表示虚拟角色在第二画面中的姿态,第二画面为第一画面的下一帧画面。
152.显示模块1004,用于在第二画面中显示虚拟角色的第二姿态,以呈现虚拟角色的起身动画。
153.在一些实施例中,图11是根据本技术实施例提供的另一种动画生成装置的框图。参见图11,获取模块1001,包括:获取单元10011、第一确定单元10012和第二确定单元10013。
154.获取单元10011,用于响应于对象针对虚拟角色的操作,获取虚拟角色的期望移动方向和期望移动速率,期望移动方向和期望移动速率用于反映对象所期望的虚拟角色后续的移动情况。
155.第一确定单元10012,用于基于起身动画的期望时长和第一画面,确定第一画面中虚拟角色的运动状态。
156.第二确定单元10013,用于确定虚拟角色在第一画面中的目标信息。
157.在一些实施例中,继续参见图11,第一确定单元10012,用于基于起身动画的期望时长,确定完成起身动画对应的帧数;基于帧数和虚拟角色的起身进度的初始值,确定起身动画中每一帧画面对应的单位进度值,初始值用于起身动画的第一帧画面中虚拟角色的起身状态,单位进度值用于表示每显示一帧起身动画中的画面所更新的起身进度的大小;基于初始值、单位进度值和第一画面在起身动画中的时序,确定第一画面中虚拟角色的运动状态。
158.在一些实施例中,继续参见图11,获取模块1001,用于获取虚拟角色身上多个可转动关节的角度值,多个可转动关节的角度值用于反映多个可转动关节的姿态;基于多个可转动关节的角度值、虚拟角色的骨盆的位置向量以及骨盆的姿态向量,确定虚拟角色的第一姿态。
159.在一些实施例中,继续参见图11,处理模块1002,包括:拼接单元10021和第三确定单元10022。
160.拼接单元10021,用于通过动作控制器,对第一姿态的特征向量和目标信息的特征向量进行拼接,得到角色特征向量。
161.第三确定单元10022,用于基于动作控制器和角色特征向量,确定虚拟角色的动作信息。
162.在一些实施例中,继续参见图11,第三确定单元10022,用于通过动作控制器,对角色特征向量进行处理,得到初始动作信息;以初始动作信息为均值,以预设值为标准差,进行高斯分布采样,得到动作信息。
163.在一些实施例中,继续参见图11,装置还包括:判断模块1005,用于在虚拟角色处于走跑状态的情况下,基于虚拟角色的骨盆的位置和角度,判断虚拟角色是否符合平衡条件;在虚拟角色不符合平衡条件的情况下,将虚拟角色的运动状态由走跑状态更新为起身状态;在虚拟角色符合平衡条件的情况下,保持虚拟角色的运动状态为走跑状态不变。
164.本技术实施例提供了一种动画生成装置,将虚拟角色在当前画面中的姿态、对象针对虚拟角色的操作以及虚拟角色的运动状态作为输入,输入到一个动作控制器中进行处理,使得动作控制器在虚拟角色的当前的姿态和运动状态基础上,施加对象的操作的影响,
从而更加准确地计算出虚拟角色的动作信息,符合对象的意图;然后,通过虚拟角色的动作信息和第一姿态,对虚拟角色的起身动作进行模拟,使得虚拟角色的姿态变换能够符合运动规律,也即是使得虚拟角色的姿态变换更加真实;并且虚拟角色的姿态能够按照当前的动作信息的指引来变换,实时生成下一帧画面中虚拟角色的姿态,提高了姿态变换的准确性和真实性,也即是使得起身动画的效果更加准确、真实。
165.需要说明的是,上述实施例提供的动画生成装置在运行应用程序时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的动画生成装置与动画生成方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
166.图12是根据本技术实施例提供的一种动作控制器的训练装置的框图。该动作控制器的训练装置用于执行上述动作控制器的训练方法执行时的步骤,参见图12,该装置包括:第一获取模块1201、第二获取模块1202、第一处理模块1203以及第一训练模块1204。
167.第一获取模块1201,用于基于动作控制器,获取虚拟角色的多个训练样本,每个训练样本包括虚拟角色在对应的画面中的样本目标信息、样本姿态和样本动作信息,样本目标信息包括对象对虚拟角色的操作和虚拟角色的运动状态,样本动作信息由动作控制器基于样本目标信息和样本姿态确定。
168.第二获取模块1202,用于对于任一训练样本,获取训练样本的目标训练样本,目标训练样本对应的画面为训练样本对应的画面的下一帧,目标训练样本中的样本姿态基于训练样本中的样本姿态和样本动作信息进行模拟得到。
169.第一处理模块1203,用于将训练样本和目标训练样本,输入到判别网络中,得到第一损失,第一损失用于表示判别网络识别姿态变化基于动作控制器生成的误差,姿态变化指的是虚拟角色由训练样本的姿态到目标训练样本的姿态的变化。
170.第一训练模块1204,用于基于第一损失,对动作控制器进行训练。
171.在一些实施例中,多个训练样本来自于多局游戏;基于动作控制器,获取虚拟角色的多个训练样本的过程,包括:对于任一局游戏,从四个参考动画中随机抽取一帧画面,四个参考动画包括行走动画、跑步动画、上起身动画和下起身动画;以画面中虚拟角色的姿态为当前局游戏的初始姿态,通过动作控制器进行多次处理以及多次模拟,得到当前局游戏的多个画面中虚拟角色的样本目标信息、样本姿态和样本动作信息;将当前局游戏的多个画面中虚拟角色的样本目标信息、样本姿态和样本动作信息,作为当前局游戏对应的多个训练样本。
172.在一些实施例中,基于动作控制器,获取虚拟角色的多个训练样本的过程,还包括:在虚拟角色不符合平衡条件的情况下,停止当前局游戏,得到当前局游戏的目标画面,目标画面为当前局游戏的最后一帧画面;从四个参考动画和目标画面中随机抽取一帧画面,以画面中虚拟角色的姿态为下一局游戏的初始姿态,再次通过动作控制器进行多次处理以及多次模拟,得到下一局游戏的多个画面中虚拟角色的样本目标信息、样本姿态和样本动作信息;将下一局游戏的多个画面中虚拟角色的样本目标信息、样本姿态和样本动作信息,作为下一局游戏对应的多个训练样本。
173.在一些实施例中,图13是根据本技术实施例提供的另一种动作控制器的训练装置
audio layer iii,动态影像专家压缩标准音频层面3)、mp4(moving picture experts group audio layer iv,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端1400还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
186.通常,终端1400包括有:处理器1401和存储器1402。
187.处理器1401可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1401可以采用dsp(digital signal processing,数字信号处理)、fpga(field-programmable gate array,现场可编程门阵列)、pla(programmable logic array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1401也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu(central processing unit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1401可以集成有gpu(graphics processing unit,图像处理器),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1401还可以包括ai(artificial intelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。
188.存储器1402可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1402还可包括高速随机存取存储器以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1402中的非暂态的计算机可读存储介质用于存储至少一个计算机程序,该至少一个计算机程序用于被处理器1401所执行以实现本技术中方法实施例提供的动画生成方法或者动作控制器的训练方法。
189.在一些实施例中,终端1400还可选包括有:外围设备接口1403和至少一个外围设备。处理器1401、存储器1402和外围设备接口1403之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口1403相连。具体地,外围设备包括:射频电路1404、显示屏1405、摄像头组件1406、音频电路1407和电源1408中的至少一种。
190.外围设备接口1403可被用于将i/o(input /output,输入/输出)相关的至少一个外围设备连接到处理器1401和存储器1402。在一些实施例中,处理器1401、存储器1402和外围设备接口1403被集成在同一芯片或电路板上;在一些其他实施例中,处理器1401、存储器1402和外围设备接口1403中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
191.射频电路1404用于接收和发射rf(radio frequency,射频)信号,也称电磁信号。射频电路1404通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1404将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。在一些实施例中,射频电路1404包括:天线系统、rf收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路1404可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:万维网、城域网、内联网、各代移动通信网络(2g、3g、4g及5g)、无线局域网和/或wifi(wireless fidelity,无线保真)网络。在一些实施例中,射频电路1404还可以包括nfc(near field communication,近距离无线通信)有关的电路,本技术对此不加以限定。
192.显示屏1405用于显示ui(user interface,用户界面)。该ui可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1405是触摸显示屏时,显示屏1405还具有采集在
显示屏1405的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1401进行处理。此时,显示屏1405还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1405可以为一个,设置在终端1400的前面板;在另一些实施例中,显示屏1405可以为至少两个,分别设置在终端1400的不同表面或呈折叠设计;在另一些实施例中,显示屏1405可以是柔性显示屏,设置在终端1400的弯曲表面上或折叠面上。甚至,显示屏1405还可以设置成非矩形的不规则图形,也即异形屏。显示屏1405可以采用lcd(liquid crystal display,液晶显示屏)、oled(organic light-emitting diode,有机发光二极管)等材质制备。
193.摄像头组件1406用于采集图像或视频。在一些实施例中,摄像头组件1406包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及vr(virtual reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1406还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
194.音频电路1407可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1401进行处理,或者输入至射频电路1404以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端1400的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1401或射频电路1404的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1407还可以包括耳机插孔。
195.电源1408用于为终端1400中的各个组件进行供电。电源1408可以是交流电、直流电、一次性电池或可充电电池。当电源1408包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。
196.在一些实施例中,终端1400还包括有一个或多个传感器1409。该一个或多个传感器1409包括但不限于:加速度传感器1410、陀螺仪传感器1411、压力传感器1412、光学传感器1413以及接近传感器1414。
197.加速度传感器1410可以检测以终端1400建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器1410可以用于检测重力加速度在三个坐标轴上的分量。处理器1401可以根据加速度传感器1410采集的重力加速度信号,控制显示屏1405以横向视图或纵向视图进行用户界面的显示。加速度传感器1410还可以用于游戏或者用户的运动数据的采集。
198.陀螺仪传感器1411可以检测终端1400的机体方向及转动角度,陀螺仪传感器1411可以与加速度传感器1410协同采集用户对终端1400的3d动作。处理器1401根据陀螺仪传感器1411采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变ui)、拍
摄时的图像稳定、游戏控制以及惯性导航。
199.压力传感器1412可以设置在终端1400的侧边框和/或显示屏1405的下层。当压力传感器1412设置在终端1400的侧边框时,可以检测用户对终端1400的握持信号,由处理器1401根据压力传感器1412采集的握持信号进行左右手识别或快捷操作。当压力传感器1412设置在显示屏1405的下层时,由处理器1401根据用户对显示屏1405的压力操作,实现对ui界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
200.光学传感器1413用于采集环境光强度。在一个实施例中,处理器1401可以根据光学传感器1413采集的环境光强度,控制显示屏1405的显示亮度。具体地,当环境光强度较高时,调高显示屏1405的显示亮度;当环境光强度较低时,调低显示屏1405的显示亮度。在另一个实施例中,处理器1401还可以根据光学传感器1413采集的环境光强度,动态调整摄像头组件1406的拍摄参数。
201.接近传感器1414,也称距离传感器,通常设置在终端1400的前面板。接近传感器1414用于采集用户与终端1400的正面之间的距离。在一个实施例中,当接近传感器1414检测到用户与终端1400的正面之间的距离逐渐变小时,由处理器1401控制显示屏1405从亮屏状态切换为息屏状态;当接近传感器1414检测到用户与终端1400的正面之间的距离逐渐变大时,由处理器1401控制显示屏1405从息屏状态切换为亮屏状态。
202.本领域技术人员可以理解,图14中示出的结构并不构成对终端1400的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
203.图15是根据本技术实施例提供的一种服务器的结构示意图,该服务器1500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,cpu)1501和一个或一个以上的存储器1502,其中,该存储器1502中存储有至少一条计算机程序,该至少一条计算机程序由该处理器1501加载并执行以实现上述各个方法实施例提供的动画生成方法或者动作控制器的训练方法。当然,该服务器还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器还可以包括其他用于实现设备功能的部件,在此不做赘述。
204.本技术实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有至少一段计算机程序,该至少一段计算机程序由终端的处理器加载并执行以实现上述实施例的动画生成方法或者动作控制器的训练方法中终端所执行的操作。例如,所述计算机可读存储介质可以是只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、光盘只读存储器(compact disc read-only memory,cd-rom)、磁带、软盘和光数据存储设备等。
205.本技术实施例还提供了一种计算机程序产品,包括计算机程序,该计算机程序存储在计算机可读存储介质中。终端的处理器从计算机可读存储介质读取该计算机程序,处理器执行该计算机程序,使得该终端执行上述各种可选实现方式中提供的动画生成方法或者动作控制器的训练方法。
206.本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
207.以上所述仅为本技术的可选实施例,并不用以限制本技术,凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
技术特征:
1.一种动画生成方法,其特征在于,所述方法包括:获取虚拟角色在第一画面中的目标信息和第一姿态,所述目标信息包括对象对所述虚拟角色的操作和所述虚拟角色的运动状态,所述运动状态为起身状态的多个起身进度和走跑状态中的一种;在所述虚拟角色处于起身状态的情况下,通过动作控制器,对所述目标信息和所述第一姿态进行处理,得到所述虚拟角色的动作信息,所述动作控制器用于确定所述虚拟角色的后续动作;基于所述动作信息和所述第一姿态,对所述虚拟角色的起身动作进行模拟,得到所述虚拟角色的第二姿态,所述第二姿态用于表示所述虚拟角色在第二画面中的姿态,所述第二画面为所述第一画面的下一帧画面;在所述第二画面中显示所述虚拟角色的第二姿态,以呈现所述虚拟角色的起身动画。2.根据权利要求1所述的方法,其特征在于,获取虚拟角色在第一画面中的目标信息的过程,包括:响应于所述对象针对所述虚拟角色的操作,获取所述虚拟角色的期望移动方向和期望移动速率,所述期望移动方向和所述期望移动速率用于反映所述对象所期望的所述虚拟角色后续的移动情况;基于所述起身动画的期望时长和所述第一画面,确定所述第一画面中所述虚拟角色的运动状态;基于所述期望移动方向、所述期望移动速率和所述运动状态,确定所述虚拟角色在所述第一画面中的所述目标信息。3.根据权利要求2所述的方法,其特征在于,所述基于所述起身动画的期望时长和所述第一画面,确定所述第一画面中所述虚拟角色的运动状态,包括:基于所述起身动画的期望时长,确定完成所述起身动画对应的帧数;基于所述帧数和所述虚拟角色的起身进度的初始值,确定所述起身动画中每一帧画面对应的单位进度值,所述初始值用于所述起身动画的第一帧画面中所述虚拟角色的起身状态,所述单位进度值用于表示每显示一帧所述起身动画中的画面所更新的起身进度的大小;基于所述初始值、所述单位进度值和所述第一画面在所述起身动画中的时序,确定所述第一画面中所述虚拟角色的运动状态。4.根据权利要求1所述的方法,其特征在于,获取虚拟角色在第一画面中的第一姿态的过程,包括:获取所述虚拟角色身上多个可转动关节的角度值,所述多个可转动关节的角度值用于反映所述多个可转动关节的姿态;基于所述多个可转动关节的角度值、所述虚拟角色的骨盆的位置向量以及所述骨盆的姿态向量,确定所述虚拟角色的第一姿态。5.根据权利要求1所述的方法,其特征在于,所述在所述虚拟角色处于起身状态的情况下,通过动作控制器,对所述目标信息和所述第一姿态进行处理,得到所述虚拟角色的动作信息,包括:通过所述动作控制器,对所述第一姿态的特征向量和所述目标信息的特征向量进行拼
接,得到角色特征向量;基于所述动作控制器和所述角色特征向量,确定所述虚拟角色的动作信息。6.根据权利要求5所述的方法,其特征在于,所述基于所述动作控制器和所述角色特征向量,确定所述虚拟角色的动作信息,包括:通过所述动作控制器,对所述角色特征向量进行处理,得到初始动作信息;以所述初始动作信息为均值,以预设值为标准差,进行高斯分布采样,得到所述动作信息。7.根据权利要求1所述的方法,其特征在于,所述方法还包括:在所述虚拟角色处于走跑状态的情况下,基于所述虚拟角色的骨盆的位置和角度,判断所述虚拟角色是否符合平衡条件;在所述虚拟角色不符合平衡条件的情况下,将所述虚拟角色的运动状态由走跑状态更新为起身状态;在所述虚拟角色符合平衡条件的情况下,保持所述虚拟角色的运动状态为走跑状态不变。8.一种动作控制器的训练方法,其特征在于,所述方法包括:基于动作控制器,获取虚拟角色的多个训练样本,每个训练样本包括所述虚拟角色在对应的画面中的样本目标信息、样本姿态和样本动作信息,所述样本目标信息包括对象对所述虚拟角色的操作和所述虚拟角色的运动状态,所述样本动作信息由所述动作控制器基于所述样本目标信息和样本姿态确定;对于任一训练样本,获取所述训练样本的目标训练样本,所述目标训练样本对应的画面为所述训练样本对应的画面的下一帧,所述目标训练样本中的样本姿态基于所述训练样本中的样本姿态和样本动作信息进行模拟得到;将所述训练样本和所述目标训练样本,输入到判别网络中,得到第一损失,所述第一损失用于表示所述判别网络识别姿态变化基于所述动作控制器生成的误差,所述姿态变化指的是所述虚拟角色由所述训练样本的姿态到所述目标训练样本的姿态的变化;基于所述第一损失,对所述动作控制器进行训练。9.根据权利要求8所述的方法,其特征在于,所述多个训练样本来自于多局游戏;基于动作控制器,获取所述虚拟角色的多个训练样本的过程,包括:对于任一局游戏,从四个参考动画中随机抽取一帧画面,所述四个参考动画包括行走动画、跑步动画、上起身动画和下起身动画;以所述画面中所述虚拟角色的姿态为当前局游戏的初始姿态,通过所述动作控制器进行多次处理以及多次模拟,得到所述当前局游戏的多个画面中所述虚拟角色的样本目标信息、样本姿态和样本动作信息;将所述当前局游戏的多个画面中所述虚拟角色的样本目标信息、样本姿态和样本动作信息,作为所述当前局游戏对应的多个训练样本。10.根据权利要求9所述的方法,其特征在于,所述方法还包括:在所述虚拟角色不符合平衡条件的情况下,停止所述当前局游戏,得到当前局游戏的目标画面,所述目标画面为所述当前局游戏的最后一帧画面;从所述四个参考动画和所述目标画面中随机抽取一帧画面,以所述画面中所述虚拟角
色的姿态为下一局游戏的初始姿态,再次通过所述动作控制器进行多次处理以及多次模拟,得到所述下一局游戏的多个画面中所述虚拟角色的样本目标信息、样本姿态和样本动作信息;将所述下一局游戏的多个画面中所述虚拟角色的样本目标信息、样本姿态和样本动作信息,作为所述下一局游戏对应的多个训练样本。11.根据权利要求8所述的方法,其特征在于,所述基于所述第一损失,对所述动作控制器进行训练,包括:通过所述第一损失,调整所述判别网络的参数;将所述训练样本和所述目标训练样本,输入到调整参数后的所述判别网络中,得到判别结果;基于所述判别结果,确定所述训练样本的奖励值,所述奖励值用于表示所述通过所述动作控制器来控制所述虚拟角色的姿态变化的真实度;基于所述训练样本的奖励值,对所述动作控制器进行训练。12.根据权利要求11所述的方法,其特征在于,所述方法还包括:将所述训练样本和所述目标训练样本分别输入到价值网络中,得到所述训练样本的价值和所述目标训练样本的价值,所述价值用于表示对应的训练样本的质量;所述基于所述训练样本的奖励值,对所述动作控制器进行训练,包括:基于所述训练样本的奖励值、所述训练样本的价值和所述目标训练样本的价值,对所述动作控制器进行训练。13.根据权利要求12所述的方法,其特征在于,所述基于所述训练样本的奖励值、所述训练样本的价值和所述目标训练样本的价值,对所述动作控制器进行训练,包括:基于所述训练样本的奖励值、所述训练样本的价值和所述目标训练样本的价值,确定所述训练样本的优势值,所述优势值用于表示所述训练样本对训练所述动作控制器的贡献度;基于所述多个训练样本和所述多个训练样本的优势值,确定第二损失,所述第二损失用于表示所述动作控制器确定所述虚拟角色的后续动作的误差;基于所述第二损失,对所述动作控制器进行训练。14.根据权利要求13所述的方法,其特征在于,所述方法还包括:基于所述多个训练样本的优势值,确定第三损失;通过所述第三损失,对所述价值网络进行训练。15.一种动画生成装置,其特征在于,所述装置包括:获取模块,用于获取虚拟角色在第一画面中的目标信息和第一姿态,所述目标信息包括对象对所述虚拟角色的操作和所述虚拟角色的运动状态,所述运动状态为起身状态的多个起身进度和走跑状态中的一种;处理模块,用于在所述虚拟角色处于起身状态的情况下,通过动作控制器,对所述目标信息和所述第一姿态进行处理,得到所述虚拟角色的动作信息,所述动作控制器用于确定所述虚拟角色的后续动作;模拟模块,用于基于所述动作信息和所述第一姿态,对所述虚拟角色的起身动作进行模拟,得到所述虚拟角色的第二姿态,所述第二姿态用于表示所述虚拟角色在第二画面中
的姿态,所述第二画面为所述第一画面的下一帧画面;显示模块,用于在所述第二画面中显示所述虚拟角色的第二姿态,以呈现所述虚拟角色的起身动画。16.一种动作控制器的训练装置,其特征在于,所述装置包括:第一获取模块,用于基于动作控制器,获取虚拟角色的多个训练样本,每个训练样本包括所述虚拟角色在对应的画面中的样本目标信息、样本姿态和样本动作信息,所述样本目标信息包括对象对所述虚拟角色的操作和所述虚拟角色的运动状态,所述样本动作信息由所述动作控制器基于所述样本目标信息和样本姿态确定;第二获取模块,用于对于任一训练样本,获取所述训练样本的目标训练样本,所述目标训练样本对应的画面为所述训练样本对应的画面的下一帧,所述目标训练样本中的样本姿态基于所述训练样本中的样本姿态和样本动作信息进行模拟得到;第一处理模块,用于将所述训练样本和所述目标训练样本,输入到判别网络中,得到第一损失,所述第一损失用于表示所述判别网络识别姿态变化基于所述动作控制器生成的误差,所述姿态变化指的是所述虚拟角色由所述训练样本的姿态到所述目标训练样本的姿态的变化;第一训练模块,用于基于所述第一损失,对所述动作控制器进行训练。17.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器用于存储至少一段计算机程序,所述至少一段计算机程序由所述处理器加载并执行权利要求1至7任一项权利要求所述的动画生成方法;或者,所述至少一段计算机程序由所述处理器加载并执行权利要求8至14任一项权利要求所述的动作控制器的训练方法。18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储至少一段计算机程序,所述至少一段计算机程序用于执行权利要求1至7任一项权利要求所述的动画生成方法;或者,所述至少一段计算机程序用于执行权利要求8至14任一项权利要求所述的动作控制器的训练方法。
技术总结
本申请提供了一种动画生成方法、动作控制器的训练方法、装置及设备,属于计算机技术领域。所述方法包括:获取虚拟角色在第一画面中的目标信息和第一姿态;在所述虚拟角色处于起身状态的情况下,通过动作控制器,对所述目标信息和所述第一姿态进行处理,得到所述虚拟角色的动作信息;基于所述动作信息和所述第一姿态,对所述虚拟角色的起身动作进行模拟,得到所述虚拟角色的第二姿态;在所述第二画面中显示所述虚拟角色的第二姿态,以呈现所述虚拟角色的起身动画。上述技术方法能够实时生成下一帧画面中虚拟角色的姿态,提高了姿态变换的准确性和真实性,也即是使得起身动画的效果更加准确、真实。真实。真实。
技术研发人员:李世迪
受保护的技术使用者:腾讯科技(深圳)有限公司
技术研发日:2023.09.04
技术公布日:2023/10/15
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/