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

虚拟角色生成方法以及装置

文献发布时间:2023-06-19 18:37:28


虚拟角色生成方法以及装置

技术领域

本说明书实施例涉及互联网技术领域,特别涉及虚拟角色生成方法。

背景技术

随着虚拟现实技术日趋成熟,人们开始探索并尝试在虚拟世界中举办演唱会,开会议、直播等。人们可以通过创建虚拟角色进入虚拟场景,通过控制虚拟角色的动作来与主播或其他观众进行互动,比如可以控制虚拟角色拍手、走动、点头等。然而,在大量观众通过创建虚拟角色进入虚拟场景中,大量虚拟角色和虚拟角色执行的动作的生成会对CPU、GPU的计算造成压力,增加计算资源。

发明内容

有鉴于此,本说明书实施例提供了一种虚拟角色生成方法。本说明书一个或者多个实施例同时涉及一种虚拟角色生成装置,另一种虚拟角色生成方法、另一种虚拟角色生成装置,一种计算设备,一种计算机可读存储介质以及一种计算机程序,以解决现有技术中存在的技术缺陷。

根据本说明书实施例的第一方面,提供了一种虚拟角色生成方法,包括:

响应于用户针对虚拟场景的操作请求,确定所述用户在所述虚拟场景中的第一虚拟角色、与所述第一虚拟角色关联的虚拟相机、以及所述虚拟场景中其他用户的第二虚拟角色;

从所述第一虚拟角色和/或所述第二虚拟角色中确定目标虚拟角色;

在确定所述目标虚拟角色和所述虚拟相机的距离小于第一预设距离阈值的情况下,渲染所述目标虚拟角色对应的三维虚拟角色模型,生成所述目标虚拟角色对应的三维虚拟角色;或者,

在确定所述目标虚拟角色和所述虚拟相机的距离大于等于所述第一预设距离阈值的情况下,渲染所述目标虚拟角色对应的二维虚拟角色模型,生成所述目标虚拟角色对应的二维虚拟角色。

根据本说明书实施例的第二方面,提供了一种虚拟角色生成装置,包括:

第一确定模块,被配置为响应于用户针对虚拟场景的登录请求,确定所述用户在所述虚拟场景中的第一虚拟角色、与所述第一虚拟角色关联的虚拟相机、以及所述虚拟场景中其他用户的第二虚拟角色;

第二确定模块,被配置为从所述第一虚拟角色和/或所述第二虚拟角色中确定目标虚拟角色;

渲染模块,被配置为在确定所述目标虚拟角色和所述虚拟相机的距离小于第一预设距离阈值的情况下,渲染所述目标虚拟角色对应的三维虚拟角色模型,生成所述目标虚拟角色对应的三维虚拟角色;或者,

渲染模块,被配置为在确定所述目标虚拟角色和所述虚拟相机的距离大于等于所述第一预设距离阈值的情况下,渲染所述目标虚拟角色对应的二维虚拟角色模型,生成所述目标虚拟角色对应的二维虚拟角色。

根据本说明书实施例的第三方面,提供了一种虚拟角色生成方法,包括:

接收至少两个用户通过各自的显示设备发起的、针对一个虚拟场景的登录请求,从所述至少两个用户中确定目标用户以及其他用户;

确定所述目标用户在所述虚拟场景中的第一虚拟角色、与所述第一虚拟角色关联的虚拟相机、以及所述虚拟场景中其他用户的第二虚拟角色;

从所述第一虚拟角色和/或所述第二虚拟角色中确定目标虚拟角色;

在确定所述目标虚拟角色和所述虚拟相机的距离小于第一预设距离阈值的情况下,渲染所述目标虚拟角色对应的三维虚拟角色模型,生成所述目标虚拟角色对应的三维虚拟角色;或者,

在确定所述目标虚拟角色和所述虚拟相机的距离大于等于所述第一预设距离阈值的情况下,渲染所述目标虚拟角色对应的二维虚拟角色模型,生成所述目标虚拟角色对应的二维虚拟角色;

将所述虚拟场景中的所述三维虚拟角色和/或所述二维虚拟角色,展示在所述目标用户的显示设备。

根据本说明书实施例的第四方面,提供了一种虚拟角色生成装置,包括:

接收模块,被配置为接收至少两个用户通过各自的显示设备发起的、针对一个虚拟场景的登录请求,从所述至少两个用户中确定目标用户以及其他用户;

第一确定模块,被配置为确定所述目标用户在所述虚拟场景中的第一虚拟角色、与所述第一虚拟角色关联的虚拟相机、以及所述虚拟场景中其他用户的第二虚拟角色;

第二确定模块,被配置为从所述第一虚拟角色和/或所述第二虚拟角色中确定目标虚拟角色;

渲染模块,被配置为在确定所述目标虚拟角色和所述虚拟相机的距离小于第一预设距离阈值的情况下,渲染所述目标虚拟角色对应的三维虚拟角色模型,生成所述目标虚拟角色对应的三维虚拟角色;或者,

渲染模块,被配置为在确定所述目标虚拟角色和所述虚拟相机的距离大于等于所述第一预设距离阈值的情况下,渲染所述目标虚拟角色对应的二维虚拟角色模型,生成所述目标虚拟角色对应的二维虚拟角色;

展示模块,被配置为将所述虚拟场景中的所述三维虚拟角色和/或所述二维虚拟角色,展示在所述目标用户的显示设备。

根据本说明书实施例的第五方面,提供了一种增强现实XR设备,包括:

存储器和处理器;

所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,该计算机可执行指令被处理器执行时实现上述虚拟角色生成方法的步骤。

根据本说明书实施例的第六方面,提供了一种计算设备,包括:

存储器和处理器;

所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,该计算机可执行指令被处理器执行时实现上述虚拟角色生成方法的步骤。

根据本说明书实施例的第七方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现上述虚拟角色生成方法的步骤。

根据本说明书实施例的第八方面,提供了一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行上述虚拟角色生成方法的步骤。

本说明书一个实施例提供了一种虚拟角色生成方法,响应于用户针对虚拟场景的登录请求,确定所述用户在所述虚拟场景中的第一虚拟角色、与所述第一虚拟角色关联的虚拟相机、以及所述虚拟场景中其他用户的第二虚拟角色;从所述第一虚拟角色和/或所述第二虚拟角色中确定目标虚拟角色;在确定所述目标虚拟角色和所述虚拟相机的距离小于第一预设距离阈值的情况下,渲染所述目标虚拟角色对应的三维虚拟角色模型,生成所述目标虚拟角色对应的三维虚拟角色;或者,在确定所述目标虚拟角色和所述虚拟相机的距离大于等于所述第一预设距离阈值的情况下,渲染所述目标虚拟角色对应的二维虚拟角色模型,生成所述目标虚拟角色对应的二维虚拟角色。

上述方法通过确定展示给用户的虚拟场景中的每个虚拟角色与该用户对应的虚拟相机之间的距离,距离小于第一预设距离阈值时,说明这个虚拟角色与用户对应的虚拟相机之间的距离较近,即该虚拟角色与用户针对虚拟场景的虚拟视角的距离较近,此时对这个虚拟角色渲染三维虚拟角色,由于三维虚拟角色的立体感强,能够使用户的观感较好,从而提升用户的体验。而对距离虚拟相机的距离大于等于第一预设距离阈值的虚拟角色渲染二维虚拟角色,由于二维虚拟角色相比于三维虚拟角色来说,包含的画面细节少,渲染二维虚拟角色能够减少CPU和GPU的计算资源,并且能够保证用户的体验。

附图说明

图1是本说明书一个实施例提供的一种虚拟角色生成方法的应用场景示意图;

图2是本说明书一个实施例提供的一种虚拟角色生成方法的流程图;

图3是本说明书一个实施例提供的一种虚拟角色生成方法的处理过程流程图;

图4是本说明书一个实施例提供的一种虚拟角色生成装置的结构示意图;

图5是本说明书一个实施例提供的另一种虚拟角色生成方法的流程图;

图6是本说明书一个实施例提供的另一种虚拟角色生成方法中多人同屏的示意图;

图7是本说明书一个实施例提供的另一种虚拟角色生成装置的结构示意图;

图8是本说明书一个实施例提供的一种计算设备的结构框图。

具体实施方式

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

在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

首先,对本说明书一个或多个实施例涉及的名词术语进行解释。

CPU:central processing unit,中央处理器,作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。

GPU:graphics processing unit,图形处理器又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上做图像和图形相关运算工作的微处理器。

VR:Virtual Reality,虚拟现实技术,又称虚拟实境或灵境技术,以计算机技术为主,利用并综合三维图形技术、多媒体技术、仿真技术、显示技术、伺服技术等多种高科技的最新发展成果,借助计算机等设备产生一个逼真的三维视觉、触觉、嗅觉等多种感官体验的虚拟世界,从而使处于虚拟世界中的人产生一种身临其境的感觉。

AR:Augmented Reality,增强现实技术,是一种将虚拟信息与真实世界巧妙融合的技术,广泛运用了多媒体、三维建模、实时跟踪及注册、智能交互、传感等多种技术手段,将计算机生成的文字、图像、三维模型、音乐、视频等虚拟信息模拟仿真后,应用到真实世界中,两种信息互为补充,从而实现对真实世界的“增强”。

蒙皮:皮肤网格与骨骼的绑定关系。

LOD:全称为Level Of Detais,多细节层次,一般越远的物体展示的细节越少。

DrawCall:CPU命令GPU进行一次渲染命令的调用。

烘焙:通过离线计算的方式,以纹理的形式保存需要实时计算的数据。

抠图:将背景去掉,只留图片主体内容。

在本说明书中,提供了一种虚拟角色生成方法,本说明书同时涉及一种虚拟角色生成装置,另一种虚拟角色生成方法,另一种虚拟角色生成装置,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。

参见图1,图1示出了本说明书一个实施例提供的一种虚拟角色生成方法的应用场景示意图。

图1包括客户端102和服务端104,其中,客户端102和服务端104通信连接,用户可以通过客户端102向服务端104发送登录请求,登录虚拟场景,客户端102比如可以是计算机、也可以是移动设备。服务端104可以用于执行上述虚拟角色生成方法,为登录虚拟场景的用户生成虚拟角色。

具体实施时,用户可以通过客户端102登录虚拟直播间,服务端104可以为用户生成虚拟角色,并根据虚拟直播间中的所有虚拟角色与用户对应的虚拟相机之间的距离确定是生成三维虚拟角色还是生成二维虚拟角色,对于在用户视野中位置不同的虚拟角色,生成不同的三维虚拟角色或二维虚拟角色,从而减少渲染的面片数量,进而减少计算压力。

如图1所示,用户1登录虚拟直播间之后,虚拟直播间中还包括虚拟角色2和虚拟角色3,在确定虚拟角色2和用户1对应的虚拟相机之间的距离小于第一预设距离阈值的情况下,即虚拟角色2位于用户1的视野近处,将虚拟角色2渲染成三维虚拟角色;在确定虚拟角色3和用户1对应的虚拟相机之间的距离大于等于第二预设距离阈值的情况下,即虚拟角色3位于用户1的视野远处,将虚拟角色3渲染成二维虚拟角色。并将三维虚拟角色2和二维虚拟角色3通过客户端102展示给用户。实现计算压力的缓解。

参见图2,图2示出了根据本说明书一个实施例提供的一种虚拟角色生成方法的流程图,具体包括以下步骤。

步骤202:响应于用户针对虚拟场景的操作请求,确定所述用户在所述虚拟场景中的第一虚拟角色、与所述第一虚拟角色关联的虚拟相机、以及所述虚拟场景中其他用户的第二虚拟角色。

具体的,本说明书一个实施例提供的虚拟角色生成方法可以应用于直播场景、线上演唱会场景以及线上会议场景等。通过该虚拟角色生成方法,可以为用户生成虚拟形象进入虚拟场景。可以理解的,在用户登录虚拟场景之后,虚拟场景中的其他用户的虚拟角色也会展示给该用户。

为了便于理解,本说明书实施例中均以该虚拟角色生成方法应用于直播场景为例进行详细介绍,但是不影响该虚拟角色生成方法应用于其他可实施场景的实现。

其中,虚拟场景可以理解为用户的显示设备中向用户展示的场景,比如当用户登录直播时,用户的显示设备向用户展示直播间内的虚拟场景,虚拟场景中可以包括主播的虚拟形象以及其他观众的虚拟形象。显示设备比如可以是用户的手机、计算机或者VR/AR穿戴设备。操作请求可以理解为用户针对虚拟场景的操作请求,比如可以是用户登录虚拟场景的登录请求等。虚拟角色可以理解为用户在虚拟场景中的虚拟形象,具体的,虚拟形象可以由用户选择,也可以随机生成,比如,虚拟角色可以是虚拟人的形象,也可以是虚拟玩偶的形象。那么,第一虚拟角色可以理解为该用户在虚拟场景中的虚拟形象,第二虚拟角色可以理解为在虚拟场景中的除该用户以外的其他用户的虚拟形象,可以理解的,第二虚拟角色的数量与其他用户的数量有关,比如当前有5个用户已经登录了虚拟场景,那么该虚拟场景中还包括这5个用户的5个虚拟形象。与第一虚拟角色关联的虚拟相机,也即是用户对应的虚拟相机,可以理解为该用户在虚拟场景中的虚拟视角。

第一虚拟角色和第二虚拟角色的外观和类型可以相同,也可以不同,具体的,可以根据用户的选择和需求确定虚拟角色的外观和类型。

基于此,在接收到用户针对虚拟场景的登录请求之后,可以确定用户在虚拟场景中的虚拟形象、用户在虚拟场景中的虚拟视角、以及虚拟场景中其他用户的虚拟形象。

举例而言,响应于用户1登录虚拟直播间的登录请求,确定用户1对应的第一虚拟角色1、以及与第一虚拟角色关联的虚拟相机;并确定当前虚拟直播间中的用户2、用户3和用户4分别对应的第二虚拟角色2、第二虚拟角色3和第二虚拟角色4。

步骤204:从所述第一虚拟角色和/或所述第二虚拟角色中确定目标虚拟角色。

其中,目标虚拟角色可以理解为第一虚拟角色和第二虚拟角色中的每一个虚拟角色,换言之,目标虚拟角色可以是第一虚拟角色,也可以是第二虚拟角色。

实际应用中,当用户登录虚拟场景之后,虚拟场景中可能只存在用户自己,此时,虚拟场景中只存在用户对应的第一虚拟角色,此时,也可以从第一虚拟角色中确定目标虚拟角色。

基于此,可以确定第一虚拟角色和第二虚拟角色中的每个虚拟角色,以对每个虚拟角色完成后续的渲染。

具体的,在确定目标虚拟角色时,可以根据虚拟角色的类型和外观进行确定,具体实现方式如下:

根据虚拟角色的类型,从所述第一虚拟角色和/或所述第二虚拟角色中确定类型相同的至少两个目标虚拟角色;

相应地,渲染所述目标虚拟角色对应的三维虚拟角色模型,包括:

对所述至少两个目标虚拟角色进行合批处理,渲染所述至少两个目标虚拟角色对应的三维虚拟角色模型。

其中,虚拟角色的类型可以理解为虚拟角色的外观,比如可以是虚拟人形象、虚拟玩偶形象或者是虚拟动物形象等。

基于此,可以对类型相同的目标虚拟角色进行合批处理并渲染。

沿用上例,从4个虚拟角色中,可以确定类型相同的虚拟角色1、2,并对虚拟角色1、2合批处理,一次性渲染虚拟角色1对应的三维虚拟角色模型和虚拟角色2对应的三维虚拟角色模型。

综上,通过对类型相同的虚拟角色进行合批处理,能够减少CPU和GPU的计算资源,进而减少CPU和GPU的计算压力。

步骤206:在确定所述目标虚拟角色和所述虚拟相机的距离小于第一预设距离阈值的情况下,渲染所述目标虚拟角色对应的三维虚拟角色模型,生成所述目标虚拟角色对应的三维虚拟角色。

具体的,在确定目标虚拟角色之后,可以确定目标虚拟角色与虚拟相机之间的距离,并根据该距离,确定生成三维虚拟角色或是生成二维虚拟角色。可以理解的是,三维虚拟角色的精度、真实度和细节度均高于二维虚拟角色,将目标虚拟角色渲染成三维虚拟角色能够提高画面的精美度和真实性,但是这样也会增加CPU和GPU的计算资源,对CPU和GPU的计算性能也是一个考验。

其中,第一预设距离阈值可以理解为预先设置的距离阈值。目标虚拟角色和虚拟相机的距离小于第一预设距离阈值,说明该目标虚拟角色与虚拟相机的距离较近,也即是说,在用户针对虚拟场景的视角中,该目标虚拟角色是在用户的视野近处的。比如用户1登录虚拟直播间之后,虚拟直播间中的用户2对应的虚拟角色2在用户的视野近处。三维虚拟角色模型可以理解为渲染之前的三维模型,其可以作为模型渲染的框架,三维虚拟角色可以理解为对三维虚拟角色模型渲染之后得到的三维虚拟角色。

需要说明的是,用户对应的第一虚拟角色和虚拟相机之间的距离可以是固定的,比如用户对应的第一虚拟角色在虚拟场景中移动时,虚拟相机也会随之移动,那么在距离小于第一预设距离阈值的情况下,用户对应的第一虚拟角色都会渲染成三维虚拟角色,以保证用户的体验。或者,与第一虚拟角色关联的虚拟相机的位置可以是固定的,那么当第一虚拟角色在虚拟场景中移动时,第一虚拟角色和虚拟相机之间的距离也会发生改变,此时也会根据该距离确定渲染第一虚拟角色为三维虚拟角色或二维虚拟角色。

基于此,可以在确定目标虚拟角色和虚拟相机之间的距离小于第一预设距离阈值的情况下,说明该目标虚拟角色位于用户的视野近处,此时则渲染该目标虚拟角色对应的三维虚拟角色模型,生成三维虚拟角色。

可以理解的是,用户登录虚拟场景之后,虚拟场景中包含的其他用户的虚拟角色也会展示给该用户,那么此时,需要确定的是虚拟场景中的所有虚拟角色与该用户对应的虚拟相机之间的距离,是为了确定虚拟场景中的所有虚拟角色处于用户视野的位置,对近处的虚拟角色进行三维渲染,而对远处的角色进行二维渲染。

沿用上例,用户1进入虚拟直播间之后,虚拟直播间中的用户2、用户3和用户4分别对应的第二虚拟角色2、第二虚拟角色3和第二虚拟角色4都会在用户1的视野中,即会在用户1的虚拟相机的视野中,此时,可以确定每个虚拟角色与该虚拟相机之间的距离。确定用户1自身对应的第一虚拟角色1与虚拟相机之间的距离为a,第一预设距离阈值为x,a小于x的情况下说明第一虚拟角色1在用户1的视野近处,则将第一虚拟角色1渲染为三维虚拟角色。确定用户2对应的第二虚拟角色2与虚拟相机之间的距离为b,b小于x的情况下说明第二虚拟角色2在用户1的视野近处,则将第二虚拟角色2渲染为三维虚拟角色。

此外,在渲染生成三维虚拟角色模型时,可以根据创建的材质文件,确定三维虚拟角色模型的材质。

实际应用中,可以预先通过三维模型制作工具制作三维虚拟角色模型,具体实现方式如下:

根据三维模型制作工具,创建所述目标虚拟角色对应的三维虚拟角色模型,其中,所述三维虚拟角色模型包括至少三个面片。

其中,面片可以理解为组成三维虚拟角色模型的部分,组成三维虚拟角色模型的面片数量越多,说明该三维虚拟角色模型包含的细节越多,模型的精度越高。

具体的,可以提前预设虚拟角色的类型,根据每种类型的虚拟角色,预先创建三维虚拟角色模型。那么,在确定目标虚拟角色之后,可以根据目标虚拟角色的类型直接对三维虚拟角色模型进行创建。

比如,可以提前对虚拟人类型、虚拟动物类型和虚拟玩偶类型的虚拟角色,创建虚拟人类型的三维虚拟角色模型、虚拟动物类型的三维虚拟角色模型和虚拟玩偶类型的三维虚拟角色模型。用户1登陆之后选择了虚拟人类型的虚拟角色,那么在对该虚拟角色进行渲染时,可以直接对预先创建的虚拟人类型的三维虚拟角色模型进行渲染。

具体的,所述渲染所述目标虚拟角色对应的三维虚拟角色模型,生成所述目标虚拟角色对应的三维虚拟角色,包括:

创建初始预制体,并根据所述初始预制体,获取所述目标虚拟角色对应的三维虚拟角色模型、所述三维虚拟角色模型对应的模型动作数据、以及所述模型动作数据和控制指令的对应关系,其中,所述控制指令为所述用户针对所述目标虚拟角色发出;

根据所述目标虚拟角色对应的三维虚拟角色模型、所述三维虚拟角色模型对应的模型动作数据、以及所述模型动作数据和控制指令的对应关系,生成所述目标虚拟角色对应的三维虚拟角色。

其中,初始预制体可以理解为开发引擎中的空白框架。初始预制体中可以挂载脚本,用于读取数据。

所述模型动作数据通过下述步骤获得:

根据所述三维模型制作工具,创建所述目标虚拟角色对应的初始动作数据;

根据所述初始动作数据和所述三维虚拟角色模型,生成所述三维虚拟角色模型对应的模型动作数据。

具体的,初始动作数据可以理解为单个动作对应的动作数据,即三维虚拟角色模型执行单个动作时,三维虚拟角色模型的骨骼的位姿矩阵数据,其是对于单个动作来说在相对坐标下的矩阵位姿,比如可以是鼓掌动作对应的动作数据,或者可以是点头动作对应的动作数据。骨骼的位姿矩阵数据可以理解为子骨骼相对于父骨骼的位姿矩阵,也即是说子骨骼相对于父骨骼坐标的变换,其中,父骨骼可以用于控制子骨骼,比如父骨骼为手腕处的骨骼,那么子骨骼即为手的骨骼,通过控制手腕处的骨骼可以实现控制手的骨骼。模型动作数据可以理解为将单个动作对应的动作数据整合至三维虚拟角色模型之后的动作数据,其是单个动作在世界坐标下相对于三维虚拟角色模型下的矩阵位姿,比如可以是三维虚拟角色模型执行鼓掌动作对应的动作数据,或者可以是三维虚拟角色模型执行点头动作对应的动作数据。

控制指令可以理解为用户针对目标虚拟角色发出的控制该目标虚拟角色执行相应动作的指令,其可以是用户发送的弹幕携带的。比如用户发送“点头”弹幕,那么“点头”即为用户控制目标虚拟角色的控制指令。

基于此,可以根据利用三维模型制作工具创建的初始动作数据和三维虚拟角色模型,生成三维虚拟角色模型对应的模型动作数据。并创建初始预制体,根据初始预制体中挂载的脚本读取三维虚拟角色模型、模型动作数据、以及模型动作数据和控制指令之间的对应关系,从而渲染三维虚拟角色模型,得到三维虚拟角色。

实际应用中,可以将模型动作数据存储为一个资源文件,将模型动作数据和控制指令的对应关系存储为一个资源文件,挂载在初始预制体中的脚本可以直接读取上述资源文件,以实现三维虚拟角色模型的渲染。

综上,通过将单个动作对应的初始动作数据离线计算,并将其整合至三维虚拟角色模型中,能够缓解CPU和GPU的计算压力。

具体实施时,可以利用模型烘焙方法实现单个动作对应的初始动作数据和三维虚拟角色模型的整合,具体实现方式如下:

利用模型烘焙方法,在所述三维虚拟角色模型执行所述初始动作数据的情况下,采集所述三维虚拟角色模型的至少三个面片的顶点对应的位置数据;

根据所述位置数据,生成所述三维虚拟角色模型对应的模型动作数据。

其中,至少三个面片的顶点可以理解为每个面片的顶点,那么至少三个面片的顶点对应的位置数据可以理解为每个面片的顶点对应的位置数据。比如三维虚拟角色模型由至少三个三角形面片组成,那么每个三角形面片的三个点即为三角形面片的顶点。顶点对应的位置数据可以理解为三维虚拟角色模型的骨骼相对于世界坐标的位姿矩阵数据,即子骨骼相对于世界坐标的变换。顶点对应的位置数据可以通过骨骼的位姿矩阵数据和顶点相乘获得。

具体的,三维虚拟角色模型包括皮肤网格和骨骼,一个皮肤网格可以包含多个面片,而皮肤网格和骨骼之间的绑定关系为蒙皮,那么可以根据皮肤网格和骨骼之间的绑定关系(即蒙皮),确定骨骼对应的面片,再根据采集的该骨骼的位姿矩阵数据和与该骨骼对应的面片顶点,获得面片的顶点对应的位置数据,即可实现三维虚拟角色模型和初始动作数据的整合。

综上,通过模型烘焙方法生成三维虚拟角色模型对应的模型动作数据,实现了动作数据的离线计算,减少计算资源的消耗。

进一步地,单个动作对应的初始动作数据可能包括至少两帧初始动作数据;

相应地,所述在所述三维虚拟角色模型执行所述初始动作数据的情况下,采集所述三维虚拟角色模型的至少三个面片的顶点对应的位置数据,包括:

在所述三维虚拟角色模型执行每帧初始动作数据的情况下,采集所述三维虚拟角色模型的至少三个面片的顶点对应的位置数据。

举例而言,鼓掌动作对应的初始动作数据包括100帧初始动作数据,在将该鼓掌动作对应的初始动作数据整合至三维虚拟角色模型时,在三维虚拟角色模型执行该鼓掌动作的第1帧时,可以采集该三维虚拟角色模型的骨骼的位姿矩阵数据(即三维虚拟角色模型的子骨骼相对于父骨骼坐标的变换),并根据该骨骼的位姿矩阵数据和该骨骼对应的面片顶点相乘,获得该顶点对应的位置数据(即该顶点对应的子骨骼相对于世界坐标的变换),在三维虚拟角色模型执行该鼓掌动作的第2帧时,根据前述执行第一帧时同样的步骤获得顶点的位置数据,以此类推,直至三维虚拟角色模型执行到该鼓掌动作的第100帧,即最后1帧,将获得的顶点的所有的位置数据存储至动作数据资源文件。

此外,渲染生成的三维虚拟角色还可以包括信息面板和弹幕面板,信息面板可以用于展示用户的信息,比如可以展示用户的名字,弹幕面板可以用于展示用户发送的弹幕,比如用户发送弹幕“鼓掌”,同时判断该弹幕是否携带控制指令,若携带,则读取存储有模型动作数据的文件,控制三维虚拟角色执行该动作。具体实现方式如下:

根据所述用户针对所述三维虚拟角色的目标控制指令、以及所述模型动作数据和控制指令之间的对应关系,确定所述目标控制指令对应的目标动作数据;

控制所述三维虚拟角色执行所述目标动作数据。

其中,用户针对三维虚拟角色的目标控制指令,可以理解为任何用户针对其自身对应的三维虚拟角色的目标控制指令。比如说,在用户1的视野中,虚拟场景中还包含用户2对应的三维虚拟角色,此时用户1对应的三维虚拟角色和用户2对应的三维虚拟角色都在用户1的视野近处,即用户1对应的三维虚拟角色与虚拟相机的距离、和用户2对应的三维虚拟角色与虚拟相机的距离都小于第一预设距离阈值,所以此时用户1对应的虚拟角色和用户2对应的虚拟角色都是三维虚拟角色。那么此处的用户针对三维虚拟角色的目标控制指令,可以是用户1针对用户1对应的三维虚拟角色的目标控制指令,也可以是用户2针对用户2对应的三维虚拟角色的目标控制指令。可以理解的,用户2对应的三维虚拟角色执行动作时,在用户1的视野中也可以看到。

沿用上例,第一虚拟角色1已经被渲染成三维虚拟角色,用户1针对第一虚拟角色1发送了弹幕“点头”,根据弹幕中携带的控制指令“点头”、以及模型动作数据和控制指令之间的对应关系,确定控制指令“点头”对应的目标动作数据,并使第一虚拟角色1执行该“点头”对应的目标动作数据,以使第一虚拟角色1执行“点头”动作。

可以理解的,在执行目标动作数据时,从目标动作数据的第1帧执行到最后1帧,从而完成该动作。

综上,通过根据用户的控制指令控制三维虚拟角色执行目标动作,实现用户与其他用户的交互,增强用户体验。

进一步地,在控制所述三维虚拟角色执行所述目标动作数据之后,若三维虚拟角色在执行动作的时候移动,移动至用户的视野远处,此时可以停止执行该动作,具体实现方式如下:

在确定所述三维虚拟角色移动,且当前移动位置与所述虚拟相机的距离大于等于第一预设距离阈值的情况下,将所述三维虚拟角色切换至所述二维虚拟角色;

停止执行所述目标动作数据,并记录所述目标动作数据的停止信息;

在将所述二维虚拟角色切换至所述三维虚拟角色的情况下,根据所述停止信息,控制所述三维虚拟角色继续执行所述目标动作数据。

其中,当前移动位置可以理解为三维虚拟角色移动之后所在的位置。目标动作数据的停止信息可以理解为目标动作数据执行的停止位置,比如目标动作数据在执行到第20帧的时候停止执行,那么这第20帧即为目标动作数据执行的停止位置。

具体的,在渲染生成三维虚拟角色之后,说明三维虚拟角色与虚拟相机之间的距离小于第一预设距离阈值,即说明该三维虚拟角色在用户视野的近处,在接收用户针对该三维虚拟角色的控制指令之后,可以控制该三维虚拟角色执行控制指令对应的目标动作数据,以使该三维虚拟角色执行动作,若此时三维虚拟角色开始移动,移动后所在的位置与虚拟相机之间的距离大于等于第一预设距离阈值,此时说明三维虚拟角色从用户视野的近处移动至了用户视野的远处,此时可以将三维虚拟角色切换至二维虚拟角色,并且使三维虚拟角色停止执行前述目标动作数据,并记录该目标动作数据的停止位置。在将二维虚拟角色切换至三维虚拟角色的情况下,再使该三维虚拟角色在停止位置处继续执行该目标动作数据。

其中,可以在确定所述二维虚拟角色移动、且当前移动位置与所述虚拟相机的距离小于第一预设距离阈值的情况下,将所述二维虚拟角色切换至所述三维虚拟角色。

沿用上例,第一虚拟角色1执行的点头动作对应的目标动作数据包括100帧动作数据,在执行到第20帧动作数据时,第一虚拟角色1移动后的位置与虚拟相机之间的距离大于第一预设距离阈值,此时说明第一虚拟角色1从用户1的视野近处移动至视野远处,此时将第一虚拟角色1从三维虚拟角色切换至二维虚拟角色,并从第20帧停止执行点头动作对应的目标动作数据,并记录该停止信息20帧。在第一虚拟角色1从二维虚拟角色切换至三维虚拟角色的情况下,可以使三维虚拟角色继续从第21帧执行点头动作对应的目标动作数据。

综上,通过记录目标动作数据执行的停止信息,实现了在支持从三维虚拟模型到二维虚拟模型的切换的基础上,不会打断目标动作数据的执行,使得切换过程平滑自然。

实际应用中,除了三维虚拟角色和二维虚拟角色之间的切换,还可以设置多个精度、细节不同的三维虚拟角色模型,在预设的距离范围内渲染,以实现在虚拟角色逐渐从用户视野近处移动至视野远处的过程中,通过不同精度和细节之间的三维虚拟角色的切换、到最后切换至二维虚拟角色,实现CPU计算压力的缓解,具体实现方式如下:

所述三维虚拟角色模型包括至少两个子三维虚拟角色模型,其中,每个子三维虚拟角色模型的面片数量部分不相同,且所述每个子三维虚拟角色模型对应不同的距离范围;

相应地,所述在确定所述目标虚拟角色和所述虚拟相机的距离小于第一预设距离阈值的情况下,渲染所述目标虚拟角色对应的三维虚拟角色模型,包括:

在确定所述目标虚拟角色和所述虚拟相机的距离小于第一预设距离阈值的情况下,确定所述目标虚拟角色和所述虚拟相机的距离所在的距离范围,并确定所述距离范围对应的目标子三维虚拟角色模型;

渲染所述目标虚拟角色对应的目标子三维虚拟角色模型。

其中,面片数量部分不相同,可以理解为每个子三维虚拟角色模型的面片数量均不相同,也可以理解为每个子三维虚拟角色模型中,包含面片数量相同的子三维虚拟角色模型、和面片数量不同的子三维虚拟角色模型。每个子三维虚拟角色模型的面片数量均不相同,说明模型的精度和细节也不相同,面片数量越多,精度越高、细节越完整丰富,面片数量越少,精度越低、细节越少。

举例而言,可以创建面片数量为1000的高精度子三维虚拟角色模型、面片数量为500的中精度子三维虚拟角色模型和面片数量为100的低精度子三维虚拟角色模型,第一预设距离阈值设置为100,高精度子三维虚拟角色模型对应的距离范围为1-30,中精度子三维虚拟角色模型对应的距离范围为30-60,低精度子三维虚拟角色模型对应的距离范围为60-100。随着虚拟角色移动至用户视野远处,那么虚拟角色和虚拟相机之间的距离也会逐渐增大,在虚拟角色移动后的位置与虚拟相机之间的距离为20的情况下,渲染高精度子三维虚拟角色模型;在虚拟角色移动后的位置与虚拟相机之间的距离为50的情况下,将渲染高精度子三维虚拟角色模型生成的高精度三维虚拟角色切换至渲染中精度子三维虚拟角色模型生成的中精度三维虚拟角色。

综上,通过随着移动距离的改变,切换不同精度的三维虚拟角色,实现用户视野中的虚拟角色的平滑切换,提升用户体验,并且能够减少CPU和GPU的计算压力。

实际应用中,还可以利用视锥体剔除方法,不渲染用户视野中看不见的虚拟角色,仅渲染用户视野中的虚拟角色,具体实现方式如下:

在根据所述目标虚拟角色的包围单元和所述虚拟相机之间的线段,确定所述目标虚拟角色未被遮挡的情况下,渲染所述目标虚拟角色对应的三维虚拟角色模型。

其中,目标虚拟角色的包围单元,可以理解为包围于目标虚拟角色之外的矩形框。

基于此,可以选取位于矩形框左上位置和右下位置的两个角点,从这两个角点处发射一条从角点到虚拟相机中心点的线段,根据线段是否碰撞到其他物体,判断虚拟角色是否被遮挡,在确定虚拟角色未被遮挡的情况下,渲染三维虚拟角色模型。

综上,通过不渲染用户视野中看不见的虚拟角色,减少CPU和GPU的计算压力。

步骤208:在确定所述目标虚拟角色和所述虚拟相机的距离大于等于所述第一预设距离阈值的情况下,渲染所述目标虚拟角色对应的二维虚拟角色模型,生成所述目标虚拟角色对应的二维虚拟角色。

具体的,在根据目标虚拟角色和虚拟相机的距离确定该距离大于等于第一预设距离阈值的情况下,说明该目标虚拟角色位于用户视野远处,可以渲染成二维虚拟角色。

沿用上例,用户1进入虚拟直播间之后,虚拟直播间中的用户2、用户3和用户4分别对应的第二虚拟角色2、第二虚拟角色3和第二虚拟角色4都会在用户1的视野中,即会在用户1的虚拟相机的视野中,此时,可以确定每个虚拟角色与该虚拟相机之间的距离。确定用户3自身对应的第二虚拟角色3与虚拟相机之间的距离为c,第一预设距离阈值为x,c大于等于x的情况下说明第二虚拟角色3在用户1的视野远处,则将第二虚拟角色3渲染为二维虚拟角色。

具体的,在渲染二维虚拟角色模型之前,还包括:

根据所述目标虚拟角色对应的三维虚拟角色模型,生成二维虚拟角色模型。

相应地,所述渲染所述目标虚拟角色对应的二维虚拟角色模型,生成所述目标虚拟角色对应的二维虚拟角色,包括:

对所述目标虚拟角色对应的三维虚拟角色模型进行抠图处理,获得所述三维虚拟角色模型对应的抠图图像;

根据所述二维虚拟角色模型和所述抠图图像,生成所述目标虚拟角色对应的二维虚拟角色。

其中,二维虚拟角色模型可以理解为薄双面面片,其是与三维虚拟角色模型等高的二维面片。薄双面面片可以理解为厚度达到预设厚度阈值的面片,比如预设厚度阈值为1毫米时,薄双面面片即为厚度为1毫米的面片。

基于此,可以根据三维虚拟角色模型,创建与该三维虚拟角色模型等高的薄双面面片,再对三维虚拟角色模型进行抠图处理,即去除该三维虚拟角色模型的背景,获得抠图图像。将抠图图像贴合与薄双面面片,从而生成二维虚拟角色。

综上,通过生成二维虚拟角色,并在虚拟角色移动至用户视野远处的情况下渲染生成二维虚拟角色,实现了当虚拟角色在用户视野远处时,向用户展示一个与三维虚拟角色外观相同的二维虚拟角色,远看与三维虚拟角色一致,不会影响用户体验,并且能够降低渲染的面片数量,减少同屏渲染的压力。

具体实施时,在对所述目标虚拟角色对应的三维虚拟角色模型进行抠图处理,获得所述三维虚拟角色模型对应的抠图图像,包括:

根据所述虚拟相机获取所述三维虚拟角色模型对应的深度图像和色彩图像;

确定所述深度图像中满足预设像素值的深度像素值,并根据所述深度像素值确定所述色彩图像中与所述深度像素值对应的目标像素值;

根据所述目标像素值,对所述色彩图像进行像素值处理,获得抠图图像。

其中,深度图像可以理解为单通道图像,即灰度图像,其中像素值为1的部分可以用于表示图像中与虚拟相机距离最远的部分,即可以理解为是背景。色彩图像可以理解为RGB图像。深度图像和色彩图像可以是大小相同的两张图片。满足预设像素值的深度像素值即为深度图像中像素值为1的深度像素值。对色彩图像进行像素值处理,可以理解为将色彩图像中与深度像素值对应的目标像素值置为0,即将目标像素值对应的部分进行透明处理,换言之,也可以理解为在色彩图像中新增透明度通道,目标像素值置为0即可理解为将透明度通道中的值置为0。

基于此,可以利用虚拟相机拍摄三维虚拟角色模型的深度图像和色彩图像,并确定深度图像中像素值为1的深度像素值,确定色彩图像中与该深度像素值对应的目标像素值,并将色彩图像中的目标像素值置为0。

综上,通过对三维虚拟角色模型进行抠图,获得抠图图像,为后续生成二维虚拟角色提供基础。

实际应用中,在生成三维虚拟角色和/或二维虚拟角色之后,还可以将所述虚拟场景中的所述三维虚拟角色和/或所述二维虚拟角色,展示在所述用户的显示设备。

综上所述,上述方法通过确定展示给用户的虚拟场景中的每个虚拟角色与该用户对应的虚拟相机之间的距离,距离小于第一预设距离阈值时,说明这个虚拟角色与用户对应的虚拟相机之间的距离较近,即该虚拟角色与用户针对虚拟场景的虚拟视角的距离较近,此时对这个虚拟角色渲染三维虚拟角色,而对距离虚拟相机较远的虚拟角色渲染二维虚拟角色,也即是说,根据虚拟角色与虚拟相机之间的距离确定哪些虚拟角色被渲染成三维虚拟角色,哪些虚拟角色被渲染成二维虚拟角色,而不需要将虚拟场景中的所有虚拟角色都渲染成三维虚拟角色,从而减少CPU和GPU的计算资源,并且能够保证用户的体验。

下述结合附图3,以本说明书提供的虚拟角色生成方法在虚拟演唱会的应用为例,对所述虚拟角色生成方法进行进一步说明。其中,图3示出了本说明书一个实施例提供的一种虚拟角色生成方法的处理过程流程图,具体包括以下步骤。

步骤302:根据三维模型制作工具,创建每种类型的虚拟角色对应的三维虚拟角色模型、三维虚拟角色模型对应的二维虚拟角色模型、以及单个动作对应的初始动作数据。

具体的,可以在三维模型制作工具中,创建虚拟人类型的虚拟角色对应的三维虚拟角色模型、虚拟动物类型的虚拟角色对应的三维虚拟角色模型以及虚拟玩偶类型的虚拟角色对应的三维虚拟角色模型,以及与每个三维虚拟角色模型等高的二维虚拟角色模型,二维虚拟角色模型可以理解为薄双面面片。并且,创建单个动作对应的初始动作数据,比如鼓掌动作、点头动作等。

步骤304:响应于用户针对虚拟场景的登录请求,确定所述用户在所述虚拟场景中的第一虚拟角色、与所述第一虚拟角色关联的虚拟相机、以及所述虚拟场景中其他用户的第二虚拟角色。

具体的,响应于用户1针对虚拟演唱会的登录请求,根据用户的选择确定用户在虚拟场景中的虚拟角色1的类型为虚拟人类型、与虚拟角色1关联的虚拟相机,以及已经进入虚拟演唱会中的用户2对应的虚拟人类型的虚拟角色2、用户3对应的虚拟动物类型的虚拟角色3。

步骤306:在确定每个虚拟角色和所述虚拟相机的距离小于第一预设距离阈值的情况下,渲染所述目标虚拟角色对应的三维虚拟角色模型,生成所述目标虚拟角色对应的三维虚拟角色。

具体的,在确定虚拟角色1和虚拟相机的距离小于第一预设距离阈值的情况下,可以在开发引擎中创建初始预制体,并根据所述初始预制体中挂载的脚本,获取虚拟人类型的三维虚拟角色模型、三维虚拟角色模型对应的模型动作数据、以及模型动作数据和控制指令的对应关系,并根据虚拟人类型的三维虚拟角色模型、三维虚拟角色模型对应的模型动作数据、以及模型动作数据和控制指令的对应关系,渲染生成虚拟人类型的三维虚拟角色。

其中,模型动作数据可以根据三维虚拟角色模型和单个动作对应的初始动作数据整合获得,具体的,可以利用模型烘焙方法,在所述三维虚拟角色模型执行每一帧初始动作数据的情况下,采集所述三维虚拟角色模型的至少三个面片的顶点对应的位置数据;根据所述位置数据,生成所述三维虚拟角色模型对应的模型动作数据。

并且,若确定了虚拟角色1和虚拟相机的距离、虚拟角色2和虚拟相机的距离都小于第一预设距离阈值,并且虚拟角色1和虚拟角色2的类型均为虚拟人类型,则可以对虚拟角色1和虚拟角色2进行合批渲染,一次性获得虚拟角色1对应的三维虚拟角色和虚拟角色2对应的三维虚拟角色。

步骤308:在确定所述目标虚拟角色和所述虚拟相机的距离大于等于所述第一预设距离阈值的情况下,渲染所述目标虚拟角色对应的二维虚拟角色模型,生成所述目标虚拟角色对应的二维虚拟角色。

具体的,在确定虚拟角色3和虚拟相机的距离大于等于第一预设距离阈值的情况下,说明虚拟角色3在用户1的视野远处,将虚拟角色3渲染成二维虚拟角色模型,生成二维虚拟角色。

在将虚拟角色3渲染成二维虚拟角色模型时,可以根据虚拟相机拍摄虚拟角色3的虚拟动物类型对应的三维虚拟角色模型,获取所述三维虚拟角色模型对应的灰度图像和色彩图像;确定所述灰度图像中满足像素值为1的灰度像素值,并根据所述灰度像素值确定所述色彩图像中与所述灰度像素值对应的目标像素值;并将色彩图像中的目标像素值置为0,获得抠图图像。将抠图图像贴合至预先创建的二维虚拟角色模型,从而生成二维虚拟角色。

步骤310:将所述虚拟场景中的所述三维虚拟角色和/或所述二维虚拟角色,展示在所述用户的显示设备。

将虚拟演唱会中的虚拟角色1、虚拟角色2和虚拟角色3,均展示在用户1的显示设备中。

步骤312:根据所述用户针对所述三维虚拟角色的目标控制指令、以及所述模型动作数据和控制指令之间的对应关系,确定所述目标控制指令对应的目标动作数据,控制所述三维虚拟角色执行所述目标动作数据。

接收用户1对虚拟角色1的弹幕“点头”,该弹幕携带有控制指令“点头”,根据模型动作数据和控制指令之间的对应关系,确定控制指令“点头”对应的动作,并控制虚拟角色1从模型动作数据的第1帧执行该“点头”动作。

步骤314:在确定所述三维虚拟角色移动,且当前移动位置与所述虚拟相机的距离大于等于第一预设距离阈值的情况下,将所述三维虚拟角色切换至所述二维虚拟角色。

在虚拟角色1移动至用户1视野远处,即虚拟角色1与用户1对应的虚拟相机之间的距离大于等于第一预设距离阈值的情况下,将三维虚拟角色切换至二维虚拟角色。

步骤316:停止执行所述目标动作数据,并记录所述目标动作数据的停止信息。

停止执行该“点头”动作,并记录该动作在第20帧停止的停止信息。

步骤318:在将所述二维虚拟角色切换至所述三维虚拟角色的情况下,根据所述停止信息,控制所述三维虚拟角色继续执行所述目标动作数据。

在虚拟角色1继续移动至用户1视野近处,即虚拟角色1与用户1对应的虚拟相机之间的距离小于第一预设距离阈值的情况下,将二维虚拟角色切换至三维虚拟角色,并根据停止信息从第21帧继续执行“点头”动作。

综上所述,上述方法通过确定展示给用户的虚拟场景中的每个虚拟角色与该用户对应的虚拟相机之间的距离,距离小于第一预设距离阈值时,说明这个虚拟角色与用户对应的虚拟相机之间的距离较近,即该虚拟角色与用户针对虚拟场景的虚拟视角的距离较近,此时对这个虚拟角色渲染三维虚拟角色,而对距离虚拟相机较远的虚拟角色渲染二维虚拟角色,也即是说,根据虚拟角色与虚拟相机之间的距离确定哪些虚拟角色被渲染成三维虚拟角色,哪些虚拟角色被渲染成二维虚拟角色,而不需要将虚拟场景中的所有虚拟角色都渲染成三维虚拟角色,从而减少CPU和GPU的计算资源,并且能够保证用户的体验。

与上述方法实施例相对应,本说明书还提供了虚拟角色生成装置实施例,图4示出了本说明书一个实施例提供的一种虚拟角色生成装置的结构示意图。如图4所示,该装置包括:

第一确定模块402,被配置为响应于用户针对虚拟场景的操作请求,确定所述用户在所述虚拟场景中的第一虚拟角色、与所述第一虚拟角色关联的虚拟相机、以及所述虚拟场景中其他用户的第二虚拟角色;

第二确定模块404,被配置为从所述第一虚拟角色和/或所述第二虚拟角色中确定目标虚拟角色;

渲染模块406,被配置为在确定所述目标虚拟角色和所述虚拟相机的距离小于第一预设距离阈值的情况下,渲染所述目标虚拟角色对应的三维虚拟角色模型,生成所述目标虚拟角色对应的三维虚拟角色;或者,

所述渲染模块406,被配置为在确定所述目标虚拟角色和所述虚拟相机的距离大于等于所述第一预设距离阈值的情况下,渲染所述目标虚拟角色对应的二维虚拟角色模型,生成所述目标虚拟角色对应的二维虚拟角色。

一个可选的实施例中,所述装置还包括创建模块,被配置为:

根据三维模型制作工具,创建所述目标虚拟角色对应的三维虚拟角色模型,其中,所述三维虚拟角色模型包括至少三个面片。

一个可选的实施例中,所述渲染模块406,进一步被配置为:

创建初始预制体,并根据所述初始预制体,获取所述目标虚拟角色对应的三维虚拟角色模型、所述三维虚拟角色模型对应的模型动作数据、以及所述模型动作数据和控制指令的对应关系,其中,所述控制指令为所述用户针对所述目标虚拟角色发出;

根据所述目标虚拟角色对应的三维虚拟角色模型、所述三维虚拟角色模型对应的模型动作数据、以及所述模型动作数据和控制指令的对应关系,生成所述目标虚拟角色对应的三维虚拟角色。

一个可选的实施例中,所述渲染模块406,进一步被配置为:

根据所述三维模型制作工具,创建所述目标虚拟角色对应的初始动作数据;

根据所述初始动作数据和所述三维虚拟角色模型,生成所述三维虚拟角色模型对应的模型动作数据。

一个可选的实施例中,所述渲染模块406,进一步被配置为:

利用模型烘焙方法,在所述三维虚拟角色模型执行所述初始动作数据的情况下,采集所述三维虚拟角色模型的至少三个面片的顶点对应的位置数据;

根据所述位置数据,生成所述三维虚拟角色模型对应的模型动作数据。

一个可选的实施例中,所述初始动作数据包括至少两帧初始动作数据;所述渲染模块406,进一步被配置为:

在所述三维虚拟角色模型执行每帧初始动作数据的情况下,采集所述三维虚拟角色模型的至少三个面片的顶点对应的位置数据。

一个可选的实施例中,所述创建模块,进一步被配置为:

根据所述目标虚拟角色对应的三维虚拟角色模型,生成二维虚拟角色模型。

一个可选的实施例中,所述渲染模块406,进一步被配置为:

对所述目标虚拟角色对应的三维虚拟角色模型进行抠图处理,获得所述三维虚拟角色模型对应的抠图图像;

根据所述二维虚拟角色模型和所述抠图图像,生成所述目标虚拟角色对应的二维虚拟角色。

一个可选的实施例中,所述渲染模块406,进一步被配置为:

根据所述虚拟相机获取所述三维虚拟角色模型对应的深度图像和色彩图像;

确定所述深度图像中满足预设像素值的深度像素值,并根据所述深度像素值确定所述色彩图像中与所述深度像素值对应的目标像素值;

根据所述目标像素值,对所述色彩图像进行像素值处理,获得抠图图像。

一个可选的实施例中,所述装置还包括控制模块,被配置为:

根据所述用户针对所述三维虚拟角色的目标控制指令、以及所述模型动作数据和控制指令之间的对应关系,确定所述目标控制指令对应的目标动作数据;

控制所述三维虚拟角色执行所述目标动作数据。

一个可选的实施例中,所述控制模块,进一步被配置为:

在确定所述三维虚拟角色移动,且当前移动位置与所述虚拟相机的距离大于等于第一预设距离阈值的情况下,将所述三维虚拟角色切换至所述二维虚拟角色;

停止执行所述目标动作数据,并记录所述目标动作数据的停止信息;

在将所述二维虚拟角色切换至所述三维虚拟角色的情况下,根据所述停止信息,控制所述三维虚拟角色继续执行所述目标动作数据。

一个可选的实施例中,所述三维虚拟角色模型包括至少两个子三维虚拟角色模型,其中,每个子三维虚拟角色模型的面片数量部分不相同,且所述每个子三维虚拟角色模型对应不同的距离范围;所述渲染模块406,进一步被配置为:

在确定所述目标虚拟角色和所述虚拟相机的距离小于第一预设距离阈值的情况下,确定所述目标虚拟角色和所述虚拟相机的距离所在的距离范围,并确定所述距离范围对应的目标子三维虚拟角色模型;

渲染所述目标虚拟角色对应的目标子三维虚拟角色模型。

一个可选的实施例中,所述渲染模块406,进一步被配置为:

在根据所述目标虚拟角色的包围单元和所述虚拟相机之间的线段,确定所述目标虚拟角色未被遮挡的情况下,渲染所述目标虚拟角色对应的三维虚拟角色模型。

一个可选的实施例中,所述装置还包括展示模块,被配置为:

将所述虚拟场景中的所述三维虚拟角色和/或所述二维虚拟角色,展示在所述用户的显示设备。

综上所述,上述装置通过确定展示给用户的虚拟场景中的每个虚拟角色与该用户对应的虚拟相机之间的距离,距离小于第一预设距离阈值时,说明这个虚拟角色与用户对应的虚拟相机之间的距离较近,即该虚拟角色与用户针对虚拟场景的虚拟视角的距离较近,此时对这个虚拟角色渲染三维虚拟角色,而对距离虚拟相机较远的虚拟角色渲染二维虚拟角色,也即是说,根据虚拟角色与虚拟相机之间的距离确定哪些虚拟角色被渲染成三维虚拟角色,哪些虚拟角色被渲染成二维虚拟角色,而不需要将虚拟场景中的所有虚拟角色都渲染成三维虚拟角色,从而减少CPU和GPU的计算资源,并且能够保证用户的体验。

上述为本实施例的一种虚拟角色生成装置的示意性方案。需要说明的是,该虚拟角色生成装置的技术方案与上述的虚拟角色生成方法的技术方案属于同一构思,虚拟角色生成装置的技术方案未详细描述的细节内容,均可以参见上述虚拟角色生成方法的技术方案的描述。

参见图5,图5示出了根据本说明书一个实施例提供的另一种虚拟角色生成方法的流程图,具体包括以下步骤。

步骤502:接收至少两个用户通过各自的显示设备发起的、针对一个虚拟场景的登录请求,从所述至少两个用户中确定目标用户以及其他用户。

步骤504:确定所述目标用户在所述虚拟场景中的第一虚拟角色、与所述第一虚拟角色关联的虚拟相机、以及所述虚拟场景中其他用户的第二虚拟角色。

步骤506:从所述第一虚拟角色和/或所述第二虚拟角色中确定目标虚拟角色。

步骤508:在确定所述目标虚拟角色和所述虚拟相机的距离小于第一预设距离阈值的情况下,渲染所述目标虚拟角色对应的三维虚拟角色模型,生成所述目标虚拟角色对应的三维虚拟角色。

步骤510:在确定所述目标虚拟角色和所述虚拟相机的距离大于等于所述第一预设距离阈值的情况下,渲染所述目标虚拟角色对应的二维虚拟角色模型,生成所述目标虚拟角色对应的二维虚拟角色。

步骤512:将所述虚拟场景中的所述三维虚拟角色和/或所述二维虚拟角色,展示在所述目标用户的显示设备。

参见图6,图6示出了本说明书一个实施例提供的另一种虚拟角色生成方法中多人同屏的示意图,如图6所示,在接收用户登陆虚拟场景的登录请求之后,执行上述虚拟角色生成方法,为用户渲染虚拟场景中的所有虚拟角色,以实现将所有虚拟角色以三维虚拟角色和/或二维虚拟角色同屏展示给用户。

综上所述,上述方法通过确定展示给用户的虚拟场景中的每个虚拟角色与该用户对应的虚拟相机之间的距离,距离小于第一预设距离阈值时,说明这个虚拟角色与用户对应的虚拟相机之间的距离较近,即该虚拟角色与用户针对虚拟场景的虚拟视角的距离较近,此时对这个虚拟角色渲染三维虚拟角色,而对距离虚拟相机较远的虚拟角色渲染二维虚拟角色,也即是说,根据虚拟角色与虚拟相机之间的距离确定哪些虚拟角色被渲染成三维虚拟角色,哪些虚拟角色被渲染成二维虚拟角色,而不需要将虚拟场景中的所有虚拟角色都渲染成三维虚拟角色,从而减少CPU和GPU的计算资源,并且能够保证用户的体验。

需要说明的是,该另一种虚拟角色生成方法的技术方案与上述的一种虚拟角色生成方法的技术方案属于同一构思,该另一种虚拟角色生成方法的技术方案未详细描述的细节内容,均可以参见上述一种虚拟角色生成方法的技术方案的描述。

与上述方法实施例相对应,本说明书还提供了虚拟角色生成装置实施例,图7示出了本说明书一个实施例提供的一种虚拟角色生成装置的结构示意图。如图7所示,该装置包括:

接收模块702,被配置为接收至少两个用户通过各自的显示设备发起的、针对一个虚拟场景的登录请求,从所述至少两个用户中确定目标用户以及其他用户;

第一确定模块704,被配置为确定所述目标用户在所述虚拟场景中的第一虚拟角色、与所述第一虚拟角色关联的虚拟相机、以及所述虚拟场景中其他用户的第二虚拟角色;

第二确定模块706,被配置为从所述第一虚拟角色和/或所述第二虚拟角色中确定目标虚拟角色;

渲染模块708,被配置为在确定所述目标虚拟角色和所述虚拟相机的距离小于第一预设距离阈值的情况下,渲染所述目标虚拟角色对应的三维虚拟角色模型,生成所述目标虚拟角色对应的三维虚拟角色;或者,

渲染模块708,被配置为在确定所述目标虚拟角色和所述虚拟相机的距离大于等于所述第一预设距离阈值的情况下,渲染所述目标虚拟角色对应的二维虚拟角色模型,生成所述目标虚拟角色对应的二维虚拟角色;

展示模块710,被配置为将所述虚拟场景中的所述三维虚拟角色和/或所述二维虚拟角色,展示在所述目标用户的显示设备。

综上所述,上述装置通过确定展示给用户的虚拟场景中的每个虚拟角色与该用户对应的虚拟相机之间的距离,距离小于第一预设距离阈值时,说明这个虚拟角色与用户对应的虚拟相机之间的距离较近,即该虚拟角色与用户针对虚拟场景的虚拟视角的距离较近,此时对这个虚拟角色渲染三维虚拟角色,而对距离虚拟相机较远的虚拟角色渲染二维虚拟角色,也即是说,根据虚拟角色与虚拟相机之间的距离确定哪些虚拟角色被渲染成三维虚拟角色,哪些虚拟角色被渲染成二维虚拟角色,而不需要将虚拟场景中的所有虚拟角色都渲染成三维虚拟角色,从而减少CPU和GPU的计算资源,并且能够保证用户的体验。

上述为本实施例的一种虚拟角色生成装置的示意性方案。需要说明的是,该虚拟角色生成装置的技术方案与上述的虚拟角色生成方法的技术方案属于同一构思,虚拟角色生成装置的技术方案未详细描述的细节内容,均可以参见上述虚拟角色生成方法的技术方案的描述。

图8示出了根据本说明书一个实施例提供的一种计算设备800的结构框图。该计算设备800的部件包括但不限于存储器810和处理器820。处理器820与存储器810通过总线830相连接,数据库850用于保存数据。

计算设备800还包括接入设备840,接入设备840使得计算设备800能够经由一个或多个网络860通信。这些网络的示例包括公用交换电话网(PSTN,Public SwitchedTelephone Network)、局域网(LAN,Local Area Network)、广域网(WAN,Wide AreaNetwork)、个域网(PAN,Personal Area Network)或诸如因特网的通信网络的组合。接入设备840可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC,networkinterface controller))中的一个或多个,诸如IEEE802.11无线局域网(WLAN,WirelessLocal Area Network)无线接口、全球微波互联接入(Wi-MAX,WorldwideInteroperability for Microwave Access)接口、以太网接口、通用串行总线(USB,Universal Serial Bus)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC,Near FieldCommunication)接口,等等。

在本申请的一个实施例中,计算设备800的上述部件以及图8中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图8所示的计算设备结构框图仅仅是出于示例的目的,而不是对本申请范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。

计算设备800可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或个人计算机(PC,Personal Computer)的静止计算设备。计算设备800还可以是移动式或静止式的服务器。

其中,处理器820用于执行如下计算机可执行指令,该计算机可执行指令被处理器执行时实现上述虚拟角色生成方法的步骤。

上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的虚拟角色生成方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述虚拟角色生成方法的技术方案的描述。

本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现上述虚拟角色生成方法的步骤。

上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的虚拟角色生成方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述虚拟角色生成方法的技术方案的描述。

本说明书一实施例还提供一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行上述虚拟角色生成方法的步骤。

上述为本实施例的一种计算机程序的示意性方案。需要说明的是,该计算机程序的技术方案与上述的虚拟角色生成方法的技术方案属于同一构思,计算机程序的技术方案未详细描述的细节内容,均可以参见上述虚拟角色生成方法的技术方案的描述。

上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书实施例并不受所描述的动作顺序的限制,因为依据本说明书实施例,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书实施例所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。

以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书实施例的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书实施例的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。

技术分类

06120115637600