一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

角色的渲染方法和装置、电子设备和存储介质与流程

2021-08-31 17:41:00 来源:中国专利 TAG:互联网 电子设备 渲染 装置 角色
角色的渲染方法和装置、电子设备和存储介质与流程

本申请涉及互联网领域,尤其涉及一种角色的渲染方法和装置、电子设备和存储介质。



背景技术:

目前,对于如ue4(unrealengine4,一种游戏开发引擎)等虚幻引擎,为了在ui(userinterface,用户界面)界面上渲染出单独的角色(例如,在ui上显示人物半身像),可以把角色模型放置在场景中,通过单独的相机拍摄所要渲染的角色,得到只有该角色的图像,从而可以在ui界面上渲染出单独的角色。

然而,上述角色渲染方式,角色的光影效果会受到场景中的光照、阴影等的影响。由此可见,相关技术中的角色渲染方式,存在由于易受所在场景中的光照、阴影等的影响导致的角色渲染质量差的问题。



技术实现要素:

本申请提供了一种角色的渲染方法和装置、电子设备和存储介质,以至少解决相关技术中的角色渲染方式存在由于易受所在场景中的光照、阴影等的影响导致的角色渲染质量差的问题。

根据本申请实施例的一个方面,提供了一种角色的渲染方法,包括:获取第一目标场景,其中,所述第一目标场景为待渲染到目标用户界面上的主场景;通过目标视口获取第二目标场景,其中,所述第二目标场景是通过所述目标视口加载的单独关卡,所述第二目标场景中放置有目标虚拟角色;在所述目标用户界面上渲染所述第一目标场景的同时,在所述目标用户界面上渲染所述目标视口中的所述第二目标场景,以在所述目标用户界面上渲染出所述目标虚拟角色。

可选地,在所述目标用户界面上渲染所述目标视口中的所述第二目标场景之前,所述方法还包括:按照目标参考角色的第一角色属性,实时调整所述目标虚拟角色的第二角色属性,其中,所述目标参考角色为所述第一目标场景中与所述目标虚拟角色匹配的虚拟角色。

可选地,通过所述目标视口获取所述第二目标场景包括:获取第一场景参数和第二场景参数,其中,所述第一场景参数用于指示所述目标视口的目标视口大小,所述第二场景参数用于指示与所述第二目标场景对应的目标场景地图包;在所述目标视口中通过加载所述第二场景参数所指示的所述目标场景地图包创建所述第二目标场景,其中,所述目标视口的视口大小为所述第一场景参数所指示的所述目标视口大小。

可选地,在所述目标视口中通过加载所述第二场景参数所指示的所述目标场景地图包创建所述第二目标场景包括:在所述目标视口中加载所述第二场景参数所指示的所述目标场景地图包,其中,所述目标场景地图包中不包含大气雾组件;对所述目标场景地图包执行复制操作,得到所述第二目标场景,其中,所述第二目标场景是基于所述目标场景地图包的副本创建的。

可选地,所述目标视口的天空球被配置为在运行的过程中处于隐藏状态;在所述目标用户界面上渲染所述目标视口中的所述第二目标场景包括:在对所述目标视口进行后处理操作的过程中,通过目标通道复制所述目标视口在色调映射操作之前的阿尔法通道,其中,所述后处理操作包括所述色调映射操作;对后处理后的所述目标视口执行快速近似抗锯齿处理,得到抗锯齿处理后的所述目标视口,其中,后处理后的所述目标视口的阿尔法通道为所述目标通道;通过目标场景捕捉组件对抗锯齿处理后的所述目标视口进行场景捕捉,其中,所述目标场景捕捉组件用于捕捉透明背景的场景;控制将所述目标场景捕捉组件捕捉到的所述第二目标场景在所述目标用户界面上进行显示。

可选地,在通过所述目标视口获取所述第二目标场景之前,所述方法还包括:获取与所述目标视口对应的初始视口的第一配置信息,其中,所述第一配置信息用于指示以下至少之一:关闭或者减少与所述初始视口内的场景对应的级联阴影贴图,不创建所述初始视口内的场景的粒子系统,在所述初始视口内不创建物理场景;按照所述第一配置信息对所述初始视口进行配置,得到所述目标视口。

可选地,所述目标视口包含多个目标视图,每个所述目标视图对应于至少一个所述目标用户界面,不同的所述目标视图对应于不同的视图参数;在所述目标用户界面上渲染所述目标视口中的所述第二目标场景包括:使用目标场景渲染器按照各个所述目标视图的视图参数将所述第二目标场景渲染到与每个所述目标视图对应的所述目标用户界面。

根据本申请实施例的另一个方面,还提供了一种角色的渲染装置,包括:第一获取单元,用于获取第一目标场景,其中,所述第一目标场景为待渲染到目标用户界面上的主场景;第二获取单元,用于通过目标视口获取第二目标场景,其中,所述第二目标场景是通过所述目标视口加载的单独关卡,所述第二目标场景中放置有目标虚拟角色;渲染单元,用于在所述目标用户界面上渲染所述第一目标场景的同时,在所述目标用户界面上渲染所述目标视口中的所述第二目标场景,以在所述目标用户界面上渲染出所述目标虚拟角色。

可选地,所述装置还包括:调整单元,用于在所述目标用户界面上渲染所述目标视口中的所述第二目标场景之前,按照目标参考角色的第一角色属性,实时调整所述目标虚拟角色的第二角色属性,其中,所述目标参考角色为所述第一目标场景中与所述目标虚拟角色匹配的虚拟角色。

可选地,所述第二获取单元包括:获取模块,用于获取第一场景参数和第二场景参数,其中,所述第一场景参数用于指示所述目标视口的目标视口大小,所述第二场景参数用于指示与所述第二目标场景对应的目标场景地图包;加载模块,用于在所述目标视口中通过加载所述第二场景参数所指示的所述目标场景地图包创建所述第二目标场景,其中,所述目标视口的视口大小为所述第一场景参数所指示的所述目标视口大小。

可选地,所述加载模块包括:加载子模块,用于在所述目标视口中加载所述第二场景参数所指示的所述目标场景地图包,其中,所述目标场景地图包中不包含大气雾组件;复制子模块,用于对所述目标场景地图包执行复制操作,得到所述第二目标场景,其中,所述第二目标场景是基于所述目标场景地图包的副本创建的。

可选地,所述目标视口的天空球被配置为在运行的过程中处于隐藏状态;渲染单元包括:复制模块,用于在在对所述目标视口进行后处理操作的过程中,通过目标通道复制所述目标视口在色调映射操作之前的阿尔法通道,其中,所述后处理操作包括所述色调映射操作;执行模块,用于对后处理后的所述目标视口执行快速近似抗锯齿处理,得到抗锯齿处理后的所述目标视口,其中,后处理后的所述目标视口的阿尔法通道为所述目标通道;捕捉模块,用于通过目标场景捕捉组件对抗锯齿处理后的所述目标视口进行场景捕捉,其中,所述目标场景捕捉组件用于捕捉透明背景的场景;控制模块,用于控制将所述目标场景捕捉组件捕捉到的所述第二目标场景在所述目标用户界面上进行显示。

可选地,所述装置还包括:第三获取单元,用于在所述目标视口获取所述第二目标场景之前,获取与所述目标视口对应的初始视口的第一配置信息,其中,所述第一配置信息用于指示以下至少之一:关闭或者减少与所述初始视口内的场景对应的级联阴影贴图,不创建所述初始视口内的场景的粒子系统,在所述初始视口内不创建物理场景;配置单元,用于按照所述第一配置信息对所述初始视口进行配置,得到所述目标视口。

可选地,所述目标视口包含多个目标视图,每个所述目标视图对应于至少一个所述目标用户界面,不同的所述目标视图对应于不同的视图参数;所述渲染单元包括:渲染模块,用于使用目标场景渲染器按照各个所述目标视图的视图参数将所述第二目标场景渲染到与每个所述目标视图对应的所述目标用户界面。

根据本申请实施例的又一个方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器、通信接口和存储器通过通信总线完成相互间的通信;其中,存储器,用于存储计算机程序;处理器,用于通过运行所述存储器上所存储的所述计算机程序来执行上述任一实施例中的方法步骤。

根据本申请实施例的又一个方面,还提供了一种计算机可读的存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一实施例中的方法步骤。

在本申请实施例中,采用为单独渲染的虚拟角色设置独立于主场景的场景的方式,通过获取第一目标场景,其中,第一目标场景为待渲染到目标用户界面上的主场景;通过目标视口获取第二目标场景,其中,第二目标场景是通过目标视口加载的单独关卡,第二目标场景中放置有目标虚拟角色;在目标用户界面上渲染第一目标场景的同时,在目标用户界面上渲染目标视口中的第二目标场景,以在目标用户界面上渲染出目标虚拟角色,由于通过视口控件加载一个独立于主场景的关卡,该关卡可以作为一个独立的场景,目标虚拟角色(即,待渲染的虚拟角色)放置在该独立的场景中,从而可以避免角色的光影效果受到主场景中的光照、阴影等的影响,达到了提高角色的渲染质量的技术效果,进而解决了相关技术中的角色渲染方式存在由于易受所在场景中的光照、阴影等的影响导致的角色渲染质量差的问题。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是根据本申请实施例的一种可选的角色的渲染方法的硬件环境的示意图;

图2是根据本申请实施例的一种可选的角色的渲染方法的流程示意图;

图3是根据本申请实施例的一种可选的角色的渲染方法的示意图;

图4是根据本申请实施例的另一种可选的角色的渲染方法的示意图;

图5是根据本申请实施例的又一种可选的角色的渲染方法的示意图;

图6是根据本申请实施例的另一种可选的角色的渲染方法的流程示意图;

图7是根据本申请实施例的又一种可选的角色的渲染方法的示意图;

图8是根据本申请实施例的一种可选的角色的渲染装置的结构框图;

图9是根据本申请实施例的一种可选的电子设备的结构框图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。

需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

根据本申请实施例的一个方面,提供了一种角色的渲染方法。可选地,在本实施例中,上述角色的渲染方法可以应用于如图1所示的由终端102和服务器104所构成的硬件环境中。如图1所示,服务器104通过网络与终端102进行连接,可用于为终端或终端上安装的客户端提供服务(如游戏服务、应用服务等),可在服务器上或独立于服务器设置数据库,用于为服务器104提供数据存储服务。

上述网络可以包括但不限于以下至少之一:有线网络,无线网络。上述有线网络可以包括但不限于以下至少之一:广域网,城域网,局域网,上述无线网络可以包括但不限于以下至少之一:wifi(wirelessfidelity,无线保真),蓝牙。终端102可以并不限定于为pc、手机、平板电脑等。

本申请实施例的角色的渲染方法可以由服务器104来执行,也可以由终端102来执行,还可以是由服务器104和终端102共同执行。其中,终端102执行本申请实施例的角色的渲染方法也可以是由安装在其上的客户端来执行。

以由服务器104来执行本实施例中的角色的渲染方法为例,图2是根据本申请实施例的一种可选的角色的渲染方法的流程示意图,如图2所示,该方法的流程可以包括以下步骤:

步骤s202,获取第一目标场景,其中,第一目标场景为待渲染到目标用户界面上的主场景。

本实施例中的角色的渲染方法可以应用于在虚拟场景中渲染单独的虚拟角色的场景,该虚拟场景可以游戏场景,或者,其他需要在一个场景中渲染单独对象的场景。上述游戏场景可以基于如ue4等游戏引擎所创建的游戏场景,对应地,虚拟角色可以是一个或多个玩家角色。本实施例中以基于ue4的游戏场景为例进行说明。对于基于其他引擎的游戏场景或者其他的虚拟场景,在不矛盾的情况下,本实施例中的角色的渲染方法同样使用。

上述游戏场景可以是目标游戏的游戏场景(例如,三维游戏场景)。目标游戏可以是ar(augmentedreality,增强现实)游戏,也可以是vr(virtualreality,虚拟现实)游戏,或者其他类型的游戏;可以是单人游戏,也可以是多人游戏;可以是对战游戏,例如,mmo(massivemultiplayeronline,大型多人在线)游戏,也可以是非对战游戏;可以是端游,也可以是手游。本实施例中对于目标游戏的游戏类型不作限定。

目标用户(目标玩家,对应于目标对象)的终端设备上可以运行有目标客户端,该目标客户端可以是目标游戏的游戏应用的客户端。该目标客户端可以与目标服务器进行通信连接,上述目标服务器为目标游戏的后台服务器。目标用户可以使用帐号和密码、动态密码、关联应用(第三方应用)登录等方式登录到目标客户端,并通过操作目标客户端进入到目标游戏的游戏场景。

目标游戏可以具有一个或多个游戏场景,该目标用户所操作的虚拟角色当前所处的游戏场景为第一目标场景。在进行场景渲染时,目标服务器可以获取第一目标场景,其是待渲染到目标用户界面(userinterface)上的主场景。该目标用户界面可以是目标客户端的用户界面。获取第一目标场景的方式可以有多种,例如,根据场景标识从保存的游戏场景中加载第一目标场景,又例如,可以获取已加载的第一目标场景的场景数据,本实施例中对此不作限定。

步骤s204,通过目标视口获取第二目标场景,其中,第二目标场景是通过目标视口加载的单独关卡,第二目标场景中放置有目标虚拟角色。

为了在ui界面中显示单独场景,又不让场景内的物体受到主场景灯光等的影响,可以把单独场景放在主场景中很远的地方,用一个scenecapturecomponent(也称scenecapture,即,场景捕捉组件、或者说场景捕捉器)捕获场景显示到ui界面上。上述功能可以通过uviewport(即,视口)这个类来实现。uviewport可以是使用控件蓝图添加的,且可以用于加载指定的场景。

可选地,在本实施例中,在进行场景编辑时,可以在目标控件蓝图中添加目标视口,目标视口可以用于加载第二目标场景,该第二目标场景可以用于放置目标虚拟角色。通过该目标视口,目标服务器可以获取到第二目标场景。第二目标场景与第一目标场景独立,第二目标场景可以是第一目标场景的一个小场景,两者具有不同的world(即,世界),或者说,第二目标场景是通过目标控件(即,目标视口)加载的单独level(即,关卡)。

需要说明的是,动态创建的actor(可以放置在level中的实体对象,相当于组件的容器)要注意选择正确的world,在主场景的world中创建的actor挂到小场景world中的actor上不会显示出来。

目标虚拟角色可以是与目标客户端对应的虚拟角色,也就是,目标用户通过目标客户端所操作的虚拟角色,也可以是其他需要单独显示的虚拟角色,例如,npc(non-playercharacter,非玩家角色)、其他用户通过其客户端所控制的虚拟角色等。可选地,在本实施例中,该目标虚拟角色可以是3d(3dimensions,三维)角色,该目标虚拟角色的数量可以为一个或多个。

步骤s206,在目标用户界面上渲染第一目标场景的同时,在目标用户界面上渲染目标视口中的第二目标场景,以在目标用户界面上渲染出目标虚拟角色。

目标服务器可以控制在目标用户界面上渲染出第一目标场景,场景渲染到ui上的方式可以参考相关技术,本实施例中在此不作赘述。

在目标用户界面上渲染第一目标场景的同时,目标服务器可以控制在目标用户界面上渲染目标视口中的第二目标场景,从而在目标用户界面上渲染出目标虚拟角色。该目标视口可以具有一定视口大小以及显示位置,也就是,在目标用户界面的特定位置上显示的、具有一定视口大小的视口,其可以对应于目标用户界面上的目标窗口。

对于用户的终端设备侧,目标客户端的用户界面为目标用户界面,在目标用户界面上可以显示有第一目标场景,在该第一目标场景的一定区域(例如,目标窗口)内,可以显示有第二目标场景,在该第二目标场景中可以显示有目标虚拟角色(例如,目标虚拟角色的半身像)。第二目标场景内的光影效果与第一目标场景内的光影效果独立,如图3所示。

通过上述步骤s202至步骤s206,获取第一目标场景,其中,第一目标场景为待渲染到目标用户界面上的主场景;通过目标视口获取第二目标场景,其中,第二目标场景是通过目标视口加载的单独关卡,第二目标场景中放置有目标虚拟角色;在目标用户界面上渲染第一目标场景的同时,在目标用户界面上渲染目标视口中的第二目标场景,以在目标用户界面上渲染出目标虚拟角色,解决了相关技术中的角色渲染方式存在由于易受所在场景中的光照、阴影等的影响导致的角色渲染质量差的问题,提高了角色的渲染质量。

作为一种可选的实施例,在目标用户界面上渲染目标视口中的第二目标场景之前,上述方法还包括:

s11,按照目标参考角色的第一角色属性,实时调整目标虚拟角色的第二角色属性,其中,目标参考角色为第一目标场景中与目标虚拟角色匹配的虚拟角色。

目标虚拟角色可以与第一目标场景中的任意角色均不相同,也可以与第一目标场景中的某一或者某一些角色对应,例如,第一目标场景中与目标虚拟角色匹配的虚拟角色为目标参考角色。

目标虚拟角色的姿态等信息可以与目标参考角色可以是独立的,也可以是关联的。可选地,在本实施例中,可以按照目标参考角色的角色属性调整目标虚拟角色的角色属性,上述角色属性可以包括但不限于:姿态属性。

目标服务器可以实时获取目标参考角色的角色属性(即,第一角色属性),并按照目标参考角色的角色属性实时调整目标虚拟角色的角色属性(即,第二角色属性)。

通过本实施例,通过主场景的虚拟角色的角色属性实时调整单独场景中对应的虚拟角色的角色属性,可以丰富单独场景显示的信息,提高用户的视觉体验。

作为一种可选的实施例,通过目标视口获取第二目标场景包括:

s21,获取第一场景参数和第二场景参数,其中,第一场景参数用于指示目标视口的目标视口大小,第二场景参数用于指示与第二目标场景对应的目标场景地图包;

s22,在目标视口中通过加载第二场景参数所指示的目标场景地图包创建第二目标场景,其中,目标视口的视口大小为第一场景参数所指示的目标视口大小。

为了简化场景的配置操作,可以通过预先配置单独场景的场景参数来加载一个level(对应于第二目标场景)。上述场景参数可以包括但不限于:用于指示目标视口的目标视口大小的第一场景参数,用于指示与第二目标场景对应的目标场景地图包的第二场景参数,还可以包括:用于指示目标视口的目标视口位置的第三场景参数。

在进行第二目标场景编辑时,添加一个单独场景需手动添加各种actor、加载资源、设置各种参数等,为方便直接加载一个level,从而简化场景的添加操作,在进行场景编辑时,目标编辑设备可以首先在fpreviewscene(即,预览场景)的构造函数中加载指定的level,然后修改previewworld(预览世界),可以包括步骤如下:

步骤1,给sautorefreshviewport(即,自动刷新视口)增加两个参数,分别为:viewportsize(视口大小,第一场景参数的一种示例)和mappackagename(地图包名称,第二场景参数的一种示例),用来设置视口的大小和需要加载的地图名字,然后在construct函数(即,构造函数)中加载指定的地图;

步骤2,派生一sautorefreshviewport的子类,该子类的构造函数中不会调用fpreviewscene原来的构造函数来创建world,而是在父类的construct函数中通过加载一个地图来创建world;

步骤3,派生一uviewport的子类,重写rebuildwidget(重建小部件)方法,设置viewportsize和mappackagename参数;

步骤4,重载fpreviewscene的构造函数,加载指定的地图;

步骤5,增加一个loadworldfrommap(从地图加载世界)函数,加载地图package(包);

步骤6,创建uperfectviewport(一种视口)对象,将takewidget(取小部件)返回的swidget(小部件)添加到gameviewport(游戏视口)中,uviewport还有个spawn(即,产生)函数,可以动态创建所需的actor,注意spawn函数必须在takewidget之后调用,在此之前world尚未创建。

对于ue4,可使用控件蓝图添加上述uviewport:把uviewport前面uclass(experimental)中的experimental去掉,即可在控件面板中将uviewport添加到蓝图中;初始化viewportlocation(即,视口位置)和viewportrotation(视口旋转);创建控件蓝图并初始化,编辑器中显示的控件蓝图可以如图4所示。

通过上述步骤,可以使用viewportsize和mappackagename这两个参数来加载打包好的地图,从而创建出所需的world,即,第二目标场景的world。上述仅为编辑第二目标场景的一种示例,对于其他的引擎以及其他的编辑方式,在不矛盾的情况下,同样适用于编辑第二目标场景。

对于目标视口,按照第一场景参数和第二场景参数,目标服务器可以在目标视口中通过加载第二场景参数所指示的目标场景地图包来创建第二目标场景(或者说,第二目标场景的world),这里,目标视口的视口大小为第一场景参数所指示的目标视口大小。可选地,目标视口的视口位置可以为第三场景参数所指示的目标视口位置。

通过本实施例,通过指示视口大小的场景参数和指示场景地图包的场景参数来创建小场景,可以提高场景创建的便捷性。

作为一种可选的实施例,在目标视口中通过加载第二场景参数所指示的目标场景地图创建第二目标场景包括:

s31,在目标视口中加载第二场景参数所指示的目标场景地图包,其中,目标场景地图包中不包含大气雾组件;

s32,对目标场景地图包执行复制操作,得到第二目标场景,其中,第二目标场景为目标场景地图包的副本。

pie(playineditor,编辑器中运行)和打包之后world的初始化流程不一样的。在package未卸载过的情况下,每次加载地图得到的world是同一个。为了让每个previewscene对应的world可以动态创建不同的物体且互不干扰,可以将加载的world复制一个。在打包之后,大气雾组件在复制时会出现序列化报错,所以,使用上述方式需要删除地图中的大气雾。

为了得到第二目标场景,目标服务器可以在目标视口中加载第二场景参数所指示的目标场景地图包,加载的目标场景地图包中不包含大气雾组件,以避免在复制时大气雾组件出现序列化错误。

然后,目标服务器可以对目标场景地图包执行复制操作,从而可以基于复制到的目标场景地图包得到第二目标场景,也就是说,第二目标场景是基于目标场景地图包的副本创建的。

例如,对于ue4,为了删除地图中的大气雾组件,在目标视口编辑时,可以设置viewfamily.engineshowflags.atmosphere=false。

需要说明的是,对于ue4,如果不勾选bduplicateworld,每次加载同一个map(即,地图)得到的world就是同一个。如果在这个world中动态创建了物体,需要自己在适当的时机手动销毁,否则下次ui关闭再打开还会看到之前创建的物体。在编辑器中地图的图标是已修改状态,此时打开这个地图会提示是否需要保存,选择否,然后再打开一次就不会显示地图已修改的星号了。当然,也可以在ui关闭时手动销毁这个world:

previewworld->cleanupworld()

previewworld->markobjectspendingkill();

这样,下次打开ui时会得到一个新的原始的world。上述方式会导致每次打开ui都会重新加载初始化world,对性能有一些影响。

通过本实施例,通过在打包时删除地图中的大气雾,并将加载的场景地图包复制一个副本,可以提高地图加载的正确性。

作为一种可选的实施例,目标视口的天空球被配置为在目标视口运行的过程中隐藏,从而将目标视口配置为透明背景。可以使用scenecapture方便地实现uviewport透明背景。在编辑uviewport时,可以勾选天空球的actorhiddeningame选项,将天空球配置为在游戏的过程中隐藏。在编辑uviewport时,还可以设置viewfamily.engineshowflags.atmosphere=false。

可选地,可以设置sviewport的benableblending为true,bpremultipliedalpha为false,在onpaint函数中设置draweffects=es1atedraweffect::invertalpha;将sviewport的benablegammacorrection设为false;在fumgviewportclient::draw函数中添加一定代码,来修复由于texturestreaming没有更新导致角色贴图模糊的问题。

此外,r.defaultbackbufferpixelformat默认为4(即,a2b10g10r10),导致alpha精度不足,可以修改为0(b8g8r8a8)或者3(f1oatrgba),可以在项目设置中设置framebufferpixelformat为8bitrgba或者floatrgba。

可选地,在本实施例中,在目标用户界面上渲染目标视口中的第二目标场景包括:

s41,在对目标视口进行后处理操作的过程中,通过目标通道复制目标视口在色调映射操作之前的阿尔法通道,其中,后处理操作包括色调映射操作;

s42,对后处理后的目标视口执行快速近似抗锯齿处理,得到抗锯齿处理后的目标视口,其中,后处理后的目标视口的阿尔法通道包含目标通道;

s43,通过目标场景捕捉组件对抗锯齿处理后的目标视口进行场景捕捉,其中,目标场景捕捉组件用于捕捉透明背景的场景;

s44,控制将目标场景捕捉组件从目标视口中捕捉到的第二目标场景在目标用户界面上进行显示。

考虑到scenecapture不支持后处理,也就无法支持例如separatetranslucency(即,单独半透明)、fxaa(fastapproximateanti-aliasing,快速近似抗锯齿)、tonemapping(色调映射)等效果,而uviewport支持后处理,但有些后处理会修改alpha(即,阿尔法)通道,因此,在本实施例中,可以添加一个pass(即,通道)来拷贝后处理之前的alpha通道,然后对uviewport进行后处理,并使用scenecapture对后处理之后的uviewport进行场景捕捉。

在对第二目标场景进行场景捕捉时,可以直接使用添加的通道(即,目标通道)复制目标视口的alpha通道,再对目标视口进行后处理操作,并将后处理后的目标视口的alpha通道配置为目标通道。

目标视口的后处理操作可以包含多种处理操作,可以包括但不限于:色调映射操作(即,tonemap)。在本实施例中,在对目标视口进行后处理操作的过程中,目标服务器可以使用目标通道复制目标视口在色调映射操作前的alpha通道,对目标视口进行后处理操作,得到后处理后的目标视口,执行后处理操作的目标视口可以包含alpha通道,也可以不包含alpha通道。在得到后处理后的目标视口之后,可以使用目标通道作为后处理后的目标视口的alpha通道,得到更新的、后处理后的目标视口。

目标服务器还可以对后处理后的目标视口进行抗锯齿处理。所采用的抗锯齿处理操作可以有多种,可以包括但不限于以下之一:fxaa处理,taa(temporalanti-aliasing,时间性抗锯齿)处理。

如果采用的是fxaa处理,为了避免显示的图像边缘部分出现比较明显的锯齿,alpha通道也需要进行fxaa处理。对此,目标服务器可以对后处理后的目标视口执行快速近似抗锯齿处理,得到抗锯齿处理后的目标视口,这里,后处理后的目标视口的alpha通道为目标通道。

例如,在后处理中增加一个pass用于拷贝tonemap之前的alpha通道,如果使用fxaa,alpha通道也需要进行fxaa处理,否则图像边缘部分会有比较明显的锯齿。

可选地,如果要使用taa,可以修改配置文件consolevariables.ini,添加r.postprocessing.propagatealpha=2。这里,这个配置会导致fxaa效果变差,使用fxaa时要删除这个修改。这样就会保留alpha通道,不需要新增pass来拷贝alpha通道。

通过本实施例,通过添加pass来拷贝tonemap之前的alpha通道,并在使用fxaa时对alpha通道也进行fxaa处理,可以避免图像边缘部分出现明显的锯齿,提高图像显示的画质,进而提升用户的视觉体验。

作为一种可选的实施例,在通过目标视口获取所述第二目标场景之前,上述方法还包括:

s51,获取与目标视口对应的初始视口的第一配置信息,其中,第一配置信息用于指示以下至少之一:关闭或者减少与初始视口内的场景对应的级联阴影贴图,不创建初始视口内的场景的粒子系统,在初始视口内不创建物理场景;

s52,按照第一配置信息对初始视口进行配置,得到目标视口。

为了减少目标视口的内存占用,在进行目标视口编辑时,可以在目标编辑设备上首先添加一个初始视口,并设置初始视口的一些参数,可以包括但不限于以下至少之一:

关闭csm(cascadedshadowmaps,级联阴影)阴影或者减少csm的层数,以减少shadowmap的内存占用;

关闭bcreatefxsystem选项,不创建粒子系统,粒子系统会增加较多的显存占用;

关闭bcreatephvsicsscene选项,不创建物理场景,如果出现角色下掉的情况,可以将重力改为0。

此外,可以默认关闭audio(即,声音)、hitproxy(即,命中代理)、navigation(即,导航)、aisystem(artificialintelligencesystem,人工智能系统)等选项。

目标编辑设备可以获取初始视口的第一配置信息,该第一配置信息用于指示以下至少之一:关闭或者减少与初始视口内的场景对应的级联阴影贴图,不创建初始视口内的场景的粒子系统,在初始视口内不创建物理场景,还可以用于指示以下至少之一:关闭声音,关闭命中代理,关闭导航,关闭ai系统。基于获取到的第一配置信息,目标编辑设备可以对初始视口进行配置,得到目标视口。

通过本实施例,通过关闭控件中场景的csm阴影或者减少csm的层数、不创建粒子系统、不创建物理场景等,可以减少场景对内存资源的占用,提高内存资源的利用率。

作为一种可选的实施例,在一些情况下,可以在多个ui上显示多个不同的3d角色,例如,组队界面。如果有在多个ui上显示多个不同3d角色的需求,如果每个角色都使用一个uviewport,虽然可以共用一个world和scene,但是每个uviewport都要走一遍完整的渲染流程,性能上有点浪费参考。

可选地,可以使用一个scenerenderer渲染多个view(即,视图),各view可以设置对应的视图参数,可以包括但不限于以下至少之一;视图位置(即,viewlocation),视图旋转(即,viewrotation)。

例如,如图5所示,使用scenerenderer渲染了两个view,左边的为view0,右边的为view1,两者具有不同的viewlocation和viewrotation。

对于目标视口,目标视口可以包含多个目标视图,每个目标视图对应于至少一个目标用户界面(也就是,每个目标视图显示在至少一个用户的ui上),不同的目标视图对应于不同的视图参数,上述视图参数可以包含但不限于以下至少之一:视图位置,视图旋转。

对应地,在目标用户界面上渲染目标视口中的第二目标场景包括:

s61,使用目标场景渲染器按照各个目标视图的视图参数将第二目标场景渲染到与每个目标视图对应的目标用户界面。

目标服务器可以使用目标场景渲染器来渲染上述多个目标视图,从而将第二目标场景按照各个目标视图的视图参数渲染到与每个目标视图对应的目标用户界面。

通过本实施例,通过一个scenerenderer渲染多个view,可以提高场景渲染所占用的资源,提高资源利用的合理性,进而提升系统性能。

下面结合可选示例对本申请实施例中的角色的渲染方法进行解释说明。本示例中的角色的渲染方法是一种ue4通用的在ui上渲染3d角色的方案,在本示例中,第一目标场景为游戏场景(即,游戏主场景),第二目标场景为该游戏场景中的小场景,目标虚拟角色为3d角色,目标服务器为游戏服务器。

如图6所示,本可选示例中的角色的渲染方法的流程可以包括以下步骤:

步骤s602,游戏服务器加载游戏主场景,并通过uviewport加载小场景,该小场景中放置有需单独显示的3d角色。

步骤s604,游戏服务器通过scenecapturecomponent捕捉场景画面显示到用户的ui上。

如图7所示,使用uviewport加载单独的小场景与直接使用scenecapture相比,小场景的光影效果不受主场景的灯光等的影响,具有更好的渲染效果。

通过本示例,使用uviewport加载单独的小场景,可以减少主场景的灯光等对小场景的光影效果的影响,提高ui上的画面渲染效果,提高用户的视觉体验。

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

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom(read-onlymemory,只读存储器)/ram(randomaccessmemory,随机存取存储器)、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。

根据本申请实施例的另一个方面,还提供了一种用于实施上述角色的渲染方法的角色的渲染装置。图8是根据本申请实施例的一种可选的角色的渲染装置的结构框图,如图8所示,该装置可以包括:

第一获取单元802,用于获取第一目标场景,其中,第一目标场景为待渲染到目标用户界面上的主场景;

第二获取单元804,与第一获取单元802相连,用于通过目标视口获取第二目标场景,其中,第二目标场景是通过目标视口加载的单独关卡,第二目标场景中放置有目标虚拟角色;

渲染单元806,与第二获取单元804相连,用于在目标用户界面上渲染第一目标场景的同时,在目标用户界面上渲染目标视口中的第二目标场景,以在目标用户界面上渲染出目标虚拟角色。

需要说明的是,该实施例中的第一获取单元802可以用于执行上述步骤s202,该实施例中的第二获取单元804可以用于执行上述步骤s204,该实施例中的渲染单元806可以用于执行上述步骤s206。

通过上述模块,获取第一目标场景,其中,第一目标场景为待渲染到目标用户界面上的主场景;通过目标视口获取第二目标场景,其中,第二目标场景是通过目标视口加载的单独关卡,第二目标场景中放置有目标虚拟角色;在目标用户界面上渲染第一目标场景的同时,在目标用户界面上渲染目标视口中的第二目标场景,以在目标用户界面上渲染出目标虚拟角色,解决了相关技术中的角色渲染方式存在由于易受所在场景中的光照、阴影等的影响导致的角色渲染质量差的问题,提高了角色的渲染质量。

作为一种可选的实施例,上述装置还包括:

调整单元,用于在目标用户界面上渲染目标视口中的第二目标场景之前,按照目标参考角色的第一角色属性,实时调整目标虚拟角色的第二角色属性,其中,目标参考角色为第一目标场景中与目标虚拟角色匹配的虚拟角色。

作为一种可选的实施例,第二获取单元包括:

获取模块,用于获取第一场景参数和第二场景参数,其中,第一场景参数用于指示目标视口的目标视口大小,第二场景参数用于指示与第二目标场景对应的目标场景地图包;

加载模块,用于在目标视口中通过加载第二场景参数所指示的目标场景地图包创建第二目标场景,其中,目标视口的视口大小为第一场景参数所指示的目标视口大小。

作为一种可选的实施例,加载模块包括:

加载子模块,用于在目标视口中加载第二场景参数所指示的目标场景地图包,其中,目标场景地图包中不包含大气雾组件;

复制子模块,用于对目标场景地图包执行复制操作,得到第二目标场景,其中,第二目标场景是基于目标场景地图包的副本创建的。

作为一种可选的实施例,目标视口的天空球被配置为在运行的过程中处于隐藏状态。可选地,渲染单元包括:

复制模块,用于在在对目标视口进行后处理操作的过程中,通过目标通道复制目标视口在色调映射操作之前的阿尔法通道,其中,后处理操作包括色调映射操作;

执行模块,用于对后处理后的目标视口执行快速近似抗锯齿处理,得到抗锯齿处理后的目标视口,其中,后处理后的目标视口的阿尔法通道为目标通道;

捕捉模块,用于通过目标场景捕捉组件对抗锯齿处理后的目标视口进行场景捕捉,其中,目标场景捕捉组件用于捕捉透明背景的场景;

控制模块,用于控制将目标场景捕捉组件捕捉到的第二目标场景在目标用户界面上进行显示。

作为一种可选的实施例,上述装置还包括:

第三获取单元,用于在目标视口获取第二目标场景之前,获取与目标视口对应的初始视口的第一配置信息,其中,第一配置信息用于指示以下至少之一:关闭或者减少与初始视口内的场景对应的级联阴影贴图,不创建初始视口内的场景的粒子系统,在初始视口内不创建物理场景;

配置单元,用于按照第一配置信息对初始视口进行配置,得到目标视口。

作为一种可选的实施例,目标视口包含多个目标视图,每个目标视图对应于至少一个目标用户界面,不同的目标视图对应于不同的视图参数。可选地,渲染单元包括:

渲染模块,用于使用目标场景渲染器按照各个目标视图的视图参数将第二目标场景渲染到与每个目标视图对应的目标用户界面。

此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现,其中,硬件环境包括网络环境。

根据本申请实施例的又一个方面,还提供了一种用于实施上述角色的渲染方法的电子设备,该电子设备可以是服务器、终端、或者其组合。

图9是根据本申请实施例的一种可选的电子设备的结构框图,如图9所示,包括处理器902、通信接口904、存储器906和通信总线908,其中,处理器902、通信接口904和存储器906通过通信总线908完成相互间的通信,其中,

存储器906,用于存储计算机程序;

处理器902,用于执行存储器906上所存放的计算机程序时,实现如下步骤:

s1,获取第一目标场景,其中,第一目标场景为待渲染到目标用户界面上的主场景;

s2,通过目标视口获取第二目标场景,其中,第二目标场景是通过目标视口加载的单独关卡,第二目标场景中放置有目标虚拟角色;

s3,在目标用户界面上渲染第一目标场景的同时,在目标用户界面上渲染目标视口中的第二目标场景,以在目标用户界面上渲染出目标虚拟角色。

可选地,在本实施例中,上述的通信总线可以是pci(peripheralcomponentinterconnect,外设部件互连标准)总线、或eisa(extendedindustrystandardarchitecture,扩展工业标准结构)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信接口用于上述电子设备与其他设备之间的通信。

存储器可以包括ram,也可以包括非易失性存储器(non-volatilememory),例如,至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器的存储装置。

作为一种示例,上述存储器906中可以但不限于包括上述角色的渲染装置中的第一获取单元802、第二获取单元804以及渲染单元806。此外,还可以包括但不限于上述角色的渲染装置中的其他模块单元,本示例中不再赘述。

上述处理器可以是通用处理器,可以包含但不限于:cpu(centralprocessingunit,中央处理器)、np(networkprocessor,网络处理器)等;还可以是dsp(digitalsignalprocessing,数字信号处理器)、asic(applicationspecificintegratedcircuit,专用集成电路)、fpga(field-programmablegatearray,现场可编程门阵列)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

此外,上述电子设备还包括:显示器,用于显示目标用户界面。

可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。

本领域普通技术人员可以理解,图9所示的结构仅为示意,实施上述角色的渲染方法的设备可以是终端设备,该终端设备可以是智能手机(如android手机、ios手机等)、平板电脑、掌上电脑以及移动互联网设备(mobileinternetdevices,mid)、pad等终端设备。图9其并不对上述电子设备的结构造成限定。例如,电子设备还可包括比图9中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图9所示的不同的配置。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、rom、ram、磁盘或光盘等。

根据本申请实施例的又一个方面,还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于执行本申请实施例中上述任一项角色的渲染方法的程序代码。

可选地,在本实施例中,上述存储介质可以位于上述实施例所示的网络中的多个网络设备中的至少一个网络设备上。

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:

s1,获取第一目标场景,其中,第一目标场景为待渲染到目标用户界面上的主场景;

s2,通过目标视口获取第二目标场景,其中,第二目标场景是通过目标视口加载的单独关卡,第二目标场景中放置有目标虚拟角色;

s3,在目标用户界面上渲染第一目标场景的同时,在目标用户界面上渲染目标视口中的第二目标场景,以在目标用户界面上渲染出目标虚拟角色。

可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例中对此不再赘述。

可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、rom、ram、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。

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

在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例中所提供的方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜