动画场景的渲染方法、装置、电子设备和可读存储介质与流程

文档序号:15146661发布日期:2018-08-10 20:32阅读:203来源:国知局

本发明涉及信息处理技术领域,特别是涉及一种动画场景的渲染方法、装置、电子设备及计算机可读存储介质。



背景技术:

随着互联网业务的发展,三维动画技术日渐成熟,并逐渐被广泛应用于游戏、电影、电视等领域,动画渲染方法也成为人们的研究热点。

例如,某个动画场景是某个游戏中的一个场景,其中包括很多建筑和植被等等。这个场景被划分为多个关卡,一个关卡可以为:动画场景中一个虚拟建筑聚集区域。这样,用户能够以角色的身份进入不同的动画场景,例如,雪地场景、沙漠场景或森林场景等等。

目前,动画渲染方法在技术上存在很多瓶颈,例如,为了达到上述动画场景的渲染效果,现有方法通常是对动画场景中所有关卡进行渲染,但是由于运行动画场景的硬件设备自身性能的限制,动画场景中最大可容纳角色的数量也有限制,通常在60个以下,场景规模较小,可以看出,现有方法的动画渲染效率不高,因此,需要一种能够提高渲染效率的动画渲染方法。



技术实现要素:

本发明实施例的目的在于提供一种动画场景的渲染方法、装置、电子设备及计算机可读存储介质,以实现提高动画渲染的效率。

第一方面,本发明实施例提供了一种动画场景的渲染方法,所述方法包括:

获得动画场景中角色的当前坐标;

选择以所述角色的当前坐标为中心的第一预设区域内的关卡,作为各个目标关卡;其中,所述第一预设区域内为预先设定的角色可视范围区域;

对所述各个目标关卡内的物体进行渲染,得到所述角色的渲染画面。

可选的,在所述选择以所述角色的当前坐标为中心的第一预设区域内的关卡,作为各个目标关卡之后,所述方法还包括:

从所述各个目标关卡内剔除满足预设剔除规则的物体;

所述对所述各个目标关卡内的物体进行渲染,得到所述角色的渲染画面,包括:

对所述各个目标关卡内未被剔除的物体进行渲染,得到所述角色的渲染画面。

可选的,在得到所述角色的渲染画面之后,所述方法还包括:

检测所述角色的坐标,并将检测到的所述角色的坐标作为所述角色的目标坐标;

计算所述角色的目标坐标与所述角色的当前坐标之间的距离,作为所述角色的目标距离;

判断所述角色的目标距离是否小于预设重新渲染距离;

若小于,则显示所述角色的渲染画面。

可选的,若所述角色的目标距离不小于预设重新渲染距离,所述方法还包括:

将所述角色的目标坐标赋值给所述角色的当前坐标,返回执行所述选择以所述角色的当前坐标为中心的第一预设区域内的关卡,作为各个目标关卡的步骤。

可选的,在所述选择以所述角色的当前坐标为中心的第一预设区域内的关卡,作为各个目标关卡之后,所述方法还包括:

加载所述各个目标关卡,并卸载以所述角色的当前坐标为中心第二预设区域外的关卡;其中,所述第二预设区域外为预先设定的角色不可视范围区域;

所述对所述各个目标关卡内的物体进行渲染,包括:

对已加载的各个目标关卡进行渲染。

可选的,所述第一预设区域为:以第一预设值为半径的球形区域;所述第二预设区域为:以第二预设值为半径的球形区域,所述第二预设值与所述第一预设值之差等于所述预设重新渲染距离。

可选的,从所述各个目标关卡内剔除满足预设剔除规则的物体,包括:

计算所述各个目标关卡内各物体的屏幕面积比例,其中,物体的屏幕面积比例表示物体在屏幕坐标系下的面积与显示屏的面积的比值,所述显示屏用于显示所述角色的渲染画面;

剔除所述各个目标关卡内屏幕面积比例小于预设屏幕面积比例的物体。

可选的,通过以下方式计算所述各个目标关卡内每一物体的屏幕面积比例:

计算物体到所述角色预设部位的距离以及所述角色在当前视角下的缩放系数;

利用所述距离、所述缩放系数以及物体的预设包围球半径,计算物体在屏幕坐标系下的包围球面积;

获得所述显示屏的面积,计算所述包围球面积与所述显示屏的面积的比值,将计算所得的比值作为物体的屏幕面积比例。

可选的,对所述各个目标关卡内的物体进行渲染,包括:

获取所有目标关卡内各个同类物体的坐标,其中,所述各个同类物体为:属于同一预设物体类型的各个物体;

在所述各个同类物体的坐标处渲染出所述同类物体。

第二方面,本发明实施例提供了一种动画场景的渲染装置,所述装置包括:

获得模块,用于获得动画场景中角色的当前坐标;

选择模块,用于选择以所述角色的当前坐标为中心的第一预设区域内的关卡,作为各个目标关卡;其中,所述第一预设区域内为预先设定的角色可视范围区域;

渲染模块,用于对所述各个目标关卡内的物体进行渲染,得到所述角色的渲染画面。

可选的,所述装置还包括:

剔除模块,用于在所述选择以所述角色的当前坐标为中心的第一预设区域内的关卡,作为各个目标关卡之后,从所述各个目标关卡内剔除满足预设剔除规则的物体;

所述渲染模块,具体用于:

对所述各个目标关卡内未被剔除的物体进行渲染,得到所述角色的渲染画面。

可选的,所述装置还包括:

检测模块,用于在得到所述角色的渲染画面之后,检测所述角色的坐标,并将检测到的所述角色的坐标作为所述角色的目标坐标;

计算模块,用于计算所述角色的目标坐标与所述角色的当前坐标之间的距离,作为所述角色的目标距离;

判断模块,用于判断所述角色的目标距离是否小于预设重新渲染距离;

显示模块,用于在所述判断模块的判断结果为是时,显示所述角色的渲染画面。

可选的,所述装置还包括:

返回模块,用于在所述判断模块的判断结果为否时,将所述角色的目标坐标赋值给所述角色的当前坐标,返回执行所述选择以所述角色的当前坐标为中心的第一预设区域内的关卡,作为各个目标关卡。

可选的,所述装置还包括:

加载模块,用于在所述选择以所述角色的当前坐标为中心的第一预设区域内的关卡,作为各个目标关卡之后,加载所述各个目标关卡,并卸载以所述角色的当前坐标为中心第二预设区域外的关卡;其中,所述第二预设区域外为预先设定的角色不可视范围区域;

所述渲染模块,具体用于:

对已加载的各个目标关卡进行渲染。

可选的,所述第一预设区域为:以第一预设值为半径的球形区域;所述第二预设区域为:以第二预设值为半径的球形区域,所述第二预设值与所述第一预设值之差等于所述预设重新渲染距离。

可选的,所述剔除模块,包括:

计算子模块,用于计算所述各个目标关卡内各物体的屏幕面积比例,其中,物体的屏幕面积比例表示物体在屏幕坐标系下的面积与显示屏的面积的比值,所述显示屏用于显示所述角色的渲染画面;

剔除子模块,用于剔除所述各个目标关卡内屏幕面积比例小于预设屏幕面积比例的物体。

可选的,所述计算子模块通过以下方式计算所述各个目标关卡内每一物体的屏幕面积比例:

计算物体到所述角色预设部位的距离以及所述角色在当前视角下的缩放系数;

利用所述距离、所述缩放系数以及物体的预设包围球半径,计算物体在屏幕坐标系下的包围球面积;

获得所述显示屏的面积,计算所述包围球面积与所述显示屏的面积的比值,将计算所得的比值作为物体的屏幕面积比例。

可选的,渲染模块,具体用于:

获取所有目标关卡内各个同类物体的坐标,其中,所述各个同类物体为:属于同一预设物体类型的各个物体;

在所述各个同类物体的坐标处渲染出所述同类物体。

第三方面,本发明实施例提供了一种电子设备,所述电子设备包括:处理器和存储器,其中,

所述存储器,用于存放计算机程序;

所述处理器,用于执行存储器上所存放的程序时,实现上述任一所述的动画场景的渲染方法的步骤。

第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时上述任一所述的动画场景的渲染方法的步骤。

第五方面,本发明实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的动画场景的渲染方法。

第六方面,本发明实施例提供了一种计算机程序,当其在计算机上运行时,使得计算机执行上述任一所述的动画场景的渲染方法。

应用本发明实施例提供的方法,选择以角色的当前坐标为中心的第一预设区域内的关卡,作为各个目标关卡,对各个目标关卡内的物体进行渲染,得到角色的渲染画面。

可见,在动画渲染的过程中,仅对各个目标关卡内的物体进行渲染,无需渲染所有关卡,从而提高了动画渲染的效率。

附图说明

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

图1为本发明实施例提供的动画场景的渲染方法的一种流程示意图;

图2为本发明实施例提供的动画场景示意图;

图3为本发明实施例提供的动画场景的渲染方法的另一种流程示意图;

图4为本发明实施例提供的包围房屋模型的球体的平面示意图;

图5为本发明实施例提供的动画场景的渲染装置的一种结构示意图;

图6为本发明实施例提供的动画场景的渲染装置的另一种结构示意图;

图7为本发明实施例提供的一种电子设备的结构示意图。

具体实施方式

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

为提高动画渲染的效率,本发明实施例提供了一种动画场景的渲染方法、装置、电子设备及计算机可读存储介质。

下面首先对本发明实施例提供的一种动画场景的渲染方法进行介绍。

需要说明的是,本发明实施例提供的一种动画场景的渲染方法的执行主体,可以为一种动画场景的渲染装置,具体的,该动画场景的渲染装置可以位于电子设备中,电子设备可以为移动终端或服务器等。

移动终端可以为:安装了ios操作系统(ios是由苹果公司开发的手持设备操作系统)、或安卓操作系统(android系统是一种基于linux的自由及开放源代码的操作系统)、或windowsphone操作系统(windowsphone是微软公司发布的一款手机操作系统)的移动终端,服务器可以为:安装了linux操作系统、或windows操作系统的服务器,此处不作限定。

参见图1所示,本发明实施例提供的一种动画场景的渲染方法,包括如下步骤:

s101,获得动画场景中角色的当前坐标;

可选的,s101步骤可以是得到、或者获取动画场景中角色的当前坐标。

动画场景中可以包括一个或多个角色,角色可以是一个卡通形象或者人物形象,针对动画场景中的每个角色,均可以获得该角色在动画场景中的当前坐标,对于某一角色而言,该角色的当前坐标可以是:在执行选择角色可视范围区域内的关卡的步骤之前,该角色在动画场景中所处的坐标。在对角色可视范围区域内的关卡进行选择时,需要先调取角色的当前坐标,根据当前坐标值来确定角色的可视范围区域。

一种实现方式中,可以基于动画场景建立屏幕坐标系,从而,可以获得角色的几何中心点在屏幕坐标系下的当前坐标,作为动画场景中角色的当前坐标。在其他方式中,也可以将角色身体某个位置点在屏幕坐标系下的当前坐标,作为动画场景中角色的当前坐标。

s102,选择以角色的当前坐标为中心的第一预设区域内的关卡,作为各个目标关卡;

其中,第一预设区域内为预先设定的角色可视范围区域。

可选的,s201步骤可以是选择以角色的当前坐标为中心的第一预设区域内的所有关卡,作为各个目标关卡。

动画场景中的各区域可以分布有不同类型的物体,物体可以分为建筑、植被、石头、草坪等,建筑可以包括房屋、围墙、障碍物等。一般而言,物体不规律的分布在各区域,例如,有些区域模拟城镇布局可以包括分布密集的建筑物,有些区域模拟无人区可以仅包括大片草地。对不同复杂度的物体或者不同密集度的物体们进行加载、卸载和渲染,所需消耗的物理内存、gpu(graphicsprocessingunit,图形处理器)是不同的,建筑物较为集中的区域所需要的物理内存、gpu较大,故可以将该区域定义为一个关卡,而没有建筑物的区域所需消耗的物理内存、gpu较小,对于没有建筑物的区域可以被忽略,而认为其为非关卡。于是整个动画场景被划分为关卡区域和非关卡区域,分布有一个个大小不同、形状不同、面积不同、位置不同的一些关卡,这些关卡可以是交叉重叠的。

可以理解的是,gpu中可以运行不同的线程,例如加载线程、卸载线程和渲染线程,频繁的进行加载线程、卸载线程和渲染线程,但会导致gpu的性能消耗较大。虽然通过把动画场景划分出不同关卡的方式对加载环节进行优化,但是如果将整张动画场景的关卡一起加载到gpu中,虽然方便未来随时进行渲染,但会导致gpu消耗较大。动画场景越大,所包含的关卡越多,尤其是游戏刚刚启动时,整张动画场景的关卡全部加载的话,仍然需要用户花较长长时间等待游戏的加载,在这个等待期间,会流失大量客户。如果动画场景是相当大的地图的话,全部关卡都加载变得不现实,因此,作为一个具体的实施例,我们选取一部分关卡进行加载的方式来处理。

每个关卡可以是一个长方形的区域,也可以是围绕某个中心点的圆形区域,也可以是不规则形状的区域。不同关卡的面积和形状可以是不同的。不同关卡所覆盖的区域之间可以有重叠区域。作为本发明的一个具体实施例,附图2显示了一个地图场景中分布有若干个关卡,每个关卡均是长方形的,且各个关卡的面积可以不同,也可以相同,不同关卡之间可以存在重叠区域。

角色可视范围区域是指由角色的可视范围形成的区域,可以认为,角色可以看到的关卡为:以角色的当前坐标为中心的第一预设区域内的所有关卡,由于角色可视范围区域预先设定,且一经设定便大小固定,因此,以角色的当前坐标为中心的第一预设区域内存在的关卡的数量有限,即目标关卡的数量有限,通常可以为3个、4个、5个、6个、7个等等。

对于关卡的加载方法,我们可以是以角色的当前坐标为中心的第一预设区域内的所有关卡进行加载;也可以是遵循某个规则筛选后的部分关卡,即以角色的当前坐标为中心的第一预设区域内的部分关卡进行加载。

本发明对选择目标关卡的方式不做限定,例如,作为本发明的一个具体实施例,可以将关卡看做是包围多个建筑的矩形区域,一种实现方式中,当关卡所在矩形区域完全落入以角色的当前坐标为中心的第一预设区域内时,可以选择该关卡作为目标关卡。

可以理解的是,关卡所在的矩形区域落入以角色的当前坐标为中心的第一预设区域内的区域为:关卡所在的矩形区域与以角色的当前坐标为中心的第一预设区域之间的重叠区域,第一预设区域的面积可以大于/等于/小于关卡所在矩形区域的面积,当该重叠区域的面积等于较小区域的面积时,可以认为关卡所在矩形区域完全落入以角色的当前坐标为中心的第一预设区域内;当重叠的面积大于零且小于较小区域的面积时,可以认为关卡所在矩形区域部分落入以角色的当前坐标为中心的第一预设区域内,较小区域可以为:关卡所在矩形区域和以角色的当前坐标为中心的第一预设区域之间的较小者。

例如,较小区域可以为:关卡所在矩形区域,且较小区域的面积为10平方厘米,当关卡所在的矩形区域与以角色的当前坐标为中心的第一预设区域之间的重叠区域的面积为10平方厘米时,可以认为关卡所在矩形区域完全落入以角色的当前坐标为中心的第一预设区域内;当关卡所在的矩形区域与以角色的当前坐标为中心的第一预设区域之间的重叠部分的面积为5平方厘米时,可以认为关卡所在矩形区域部分落入以角色的当前坐标为中心的第一预设区域内。

或者,另一种实现方式中,当关卡所在的矩形区域与以角色的当前坐标为中心的第一预设区域之间的重叠区域的面积超过关卡所在矩形区域面积的预设倍数时,可以选择该关卡作为目标关卡,预设倍数可以根据用户需求事先设定,本发明实施例对此不做限定,例如,可以为1/2、3/4、4/5等等。

例如,预设倍数为1/2,关卡所在的矩形区域与以角色的当前坐标为中心的第一预设区域之间的重叠区域的面积为10平方厘米,关卡所在矩形区域的面积为15平方厘米,则可以选择该关卡作为目标关卡。

在又一种实现方式中,当关卡所在的矩形区域的中心点落入以角色的当前坐标为中心的第一预设区域内时,可以选择该关卡作为目标关卡。

特殊情况下,角色刚好位于多个关卡重叠的区域,例如角色所处的当前坐标位置,落入2个或者3个关卡的区域范围内。作为一个具体的实施例,当关卡所在的矩形区域,有一部分落入第一预设区域内时,可以选择该关卡作为目标关卡。比如当关卡所在的矩形区域面积的1/3落入以角色的当前坐标为中心的第一预设区域内时,可以选择该关卡作为目标关卡;当关卡所在的矩形区域周边边长的坐标,落入以角色的当前坐标为中心的第一预设区域内时,可以选择该关卡作为目标关卡。作为一个具体的实施例,当关卡所在的矩形区域的中心点落入以角色的当前坐标为中心的第一预设区域内时,可以选择该关卡作为目标关卡。

s103,对各个目标关卡内的物体进行渲染,得到角色的渲染画面。

关卡内的物体可以包括植被(例如,树木、花丛、草丛等等)、建筑、石头和湖泊等等。可以理解的是,在未经渲染前,关卡内的各个物体以虚拟模型的形式存在,经过渲染后,各个物体以图形的形式存在,进而,可以得到由各个图形组成的渲染画面。

具体的,动画场景中可以有一个或多个角色,针对每个角色,均可以采用lod(levelsofdetail,多细节层次)渲染技术,对各个目标关卡内的物体进行渲染,从而可以得到该角色的渲染画面。

在选择以角色的当前坐标为中心的第一预设区域内的关卡后,即选择了目标关卡后,可以先确定各目标关卡之间的重叠区域,对于所确定的各重叠区域内的物体进行一次渲染,可以避免不同关卡之间重叠区域内的物体被重复渲染,然后渲染各目标关卡的非重叠区域内的物体,本发明实施例对渲染顺序不做限定,在其他实施方式中,也可以先渲染各目标关卡的非重叠区域内的物体,再渲染各目标关卡之间的重叠区域的物体。

可选的,s103步骤可以是对各个目标关卡内的物体进行渲染,获得、或者获取角色的渲染画面。

可见,应用本发明实施例提供的技术方案,从动画场景中挑选出来一些目标关卡,将各个目标关卡加载或卸载,而不是对动画场景中所有关卡进行加载、卸载、以及渲染,将降低对gpu、cpu、内存的消耗。在对第一预设区域进行动画渲染的过程中,无需渲染所有关卡,仅对各个目标关卡内的物体进行渲染,从而提高了动画渲染的效率。

具体的,对于目标关卡内的物体,为了进一步提高渲染效率,对各个目标关卡内的物体进行渲染,可以包括以下步骤:

获取所有目标关卡内各个同类物体的坐标;

在各个同类物体的坐标处渲染出同类物体。

其中,各个同类物体为:属于同一预设物体类型的各个物体。

为了便于说明,作为本发明的一个具体实施例,假设物体为植被,物体类型为植被类型。

植被类型可以分为草本类、灌木类和乔木类等粗类,也可以按植被品种,分为:桂花树类、杏花树类、樱花树类、含羞草类等细类,每种植被类型可以预先设置一个植被类型标识,从而根据植被类型标识是否相同,可以确定植被是否属于同一植被类型,当然,也可以每种植被类型预先设置一个植被特征值,从而,可以根据植被特征值是否相同,确定植被是否属于同一植被类型,具体的植被类型以及确定植被是否属于同一植被类型的方式可以根据设计人员需求预先设计,在此不做限定。

在一种实施方式中,各个植被的坐标和植被类型参数可以预先对应存储于数据库,进而,可以通过读取数据库来获取所有目标关卡内各个同类植被的坐标,植被类型参数可以为植被类型标识或植被特征值等用于唯一标识植被的参数。植被特征值可以是根据植物的不同属性标记的各个数值参数,可以分为很多类别的参数,可以是乔木还是灌木、是温带植物还是热带植物、是黄色叶片还是绿色叶片、是落叶植物还是常绿植物等,计算机根据植物的特征值来渲染出具体的植物形状。

植被的坐标可以为植被的几何中心点在屏幕坐标系下的坐标,也可以为植被某个位置点在屏幕坐标系下的坐标。

在渲染植被时,在获取所有目标关卡内各个同类植被的坐标后,可以仅通过一个渲染请求,在各个同类植被的坐标处渲染出同类植被,这将节省了向gpu发出渲染请求的次数。

例如,植被类型包括含羞草类和桂花树类,含羞草的几何中心点在屏幕坐标系下的坐标分别为a1和a2,桂花树的几何中心点在屏幕坐标系下的坐标分别为b1和b2,则在坐标a1和a2处同步渲染出含羞草,在坐标b1和b2处同步渲染出桂花树。a1的具体数值可以为(21,24,33),各分量值分别表示坐标a1在屏幕坐标系下的的x轴分量、y轴分量和z轴分量相对于坐标原点的距离分别是:21、24和33个单位值。a2、b1和b2的描述可以与a1相同,在此不再赘述。

另外,在其他实施方式中,也可以采用以下方式对植被进行渲染:

获取所有目标关卡内同类植被的总数以及各个同类植被的坐标;

一次渲染出总数株的同类植被,在各同类植被的坐标处设置一个已渲染的同类植被。

每种植被类型的植被总数、各个植被的坐标以及植被类型参数可以预先对应存储于数据库,进而,可以通过读取数据库来获取所有目标关卡内同类植被的总数以及各个同类植被的坐标。

例如,植被类型为含羞草的植被总数为:2株,植被的几何中心点在屏幕坐标系下的坐标分别为a1和a2,则一次渲染出两株含羞草,并在坐标a1和a2处分别设置一个已渲染的含羞草。

需要说明的是,本发明实施例以物体为植被为例进行说明,仅为本发明的一个具体实例,对其他物体(例如,建筑、石头和湖泊等)的渲染方式可以与上述对植物的渲染方式相同,在此不再一一赘述。

通过向gpu(graphicsprocessingunit,图形处理器)发送渲染请求,可以实现渲染物体,应用本发明实施例,一次渲染请求可以渲染出的多个同类物体,相比于一次渲染请求只能渲染一个物体的方法,可以减少向gpu发送渲染请求的次数,从而提高了渲染效率。

为了进一步提高渲染效率,参见图3,图3所示实施例在图1所示实施例的基础上,在s102之后,方法还可以包括:

s104、从各个目标关卡内剔除满足预设剔除规则的物体;

作为本发明的一个具体实施例,目标关卡所在的区域相互之间有重叠区域的情况下,统计所有这些目标关卡中物体时,会出现物体被重复计算的风险,因此提前删除重复的物体会节省后面运算步骤所消耗的时间。因此,从各个目标关卡内剔除满足预设剔除规则的物体之前,还包括步骤:将各个目标关卡中的物体进行统计,并删除重复的物体。那么从各个目标关卡内剔除满足预设剔除规则的物体的步骤,还包括步骤:从各个目标关卡包括的不重复物体内剔除满足预设剔除规则的物体。

在这种情况下,s103具体可以为:

s103a、对各个目标关卡内未被剔除的物体进行渲染,得到角色的渲染画面。

预设剔除规则可以根据设计人员的需求事先设定,本发明实施例对具体的剔除规则不做限定,例如,可以利用视锥剔除、遮挡剔除和距离剔除中的一种或组合设计剔除规则。

示例性的,按距离剔除设计剔除规则,则从各个目标关卡内剔除满足预设剔除规则的物体,可以包括以下步骤:

获取目标关卡内的第一类物体和第二类物体的当前坐标;

计算各第一类物体的当前坐标与角色的当前坐标之间的距离以及各第二类物体的当前坐标与角色的当前坐标之间的距离;

剔除第一距离在第一预设范围内和第二距离在第二预设范围内的物体;

其中,第一类物体可以为:所有目标关卡内具备掩护角色作用的物体,如围墙、巨石及房屋等,第一类物体的坐标可以为:第一类物体的几何中心点在屏幕坐标系下的坐标,也可以为第一类物体某个位置点在屏幕坐标系下的坐标。

第二类物体可以为:所有目标关卡内具备装饰作用的物体,如灯具、贴纸、小摆件等,第二类物体的坐标可以为:第二类物体的几何中心点在屏幕坐标系下的坐标,也可以为第二类物体某个位置点在屏幕坐标系下的坐标。

可以预先对动画场景建立世界坐标系,并将动画场景中各物体(包括第一类物体和第二类物体)在该世界坐标系下的坐标存储于数据库,进而,可以通过读取数据库获取各物体在世界坐标系下的坐标,并将各物体在世界坐标系下的坐标转换为屏幕坐标系下的坐标,从而可以得到各物体在屏幕坐标系下的坐标,或者,也可以直接将动画场景中各物体在屏幕坐标系下的坐标存储于数据库,进而,可以通过读取数据库获取各物体在屏幕坐标系下的坐标。

需要说明的是,本发明实施例对第一类物体和第二类物体的划分方式不做限定,也就是,在不同实施方式中,第一类物体和第二类物体中所包含的具体物体可以与本发明实施例不同,例如,在其他实施方式中,也可以按照物体在屏幕坐标系下的面积大小为划分原则划分第一类物体、第二类物体和第三类物体等等。

通过将关卡内的物体分为第一类物体和第二类物体,可以一次剔除多个同类物体,相比于一次剔除一个物体的方式,可以提高剔除物体的效率。

第一距离可以为:第一类物体的当前坐标与角色的当前坐标之间的距离,第二距离可以为:第二类物体的当前坐标与角色的当前坐标之间的距离。

第一预设范围和第二预设范围可以根据设计人员的需求事先设定,由于第一类物体的体积通常大于第二类物体的体积,故第一预设范围的起点可以大于或等于第二预设范围的终点。

例如,第一预设范围可以为[500,+∞]、[600,+∞]、或[700,+∞]等等,第二预设范围可以为:[0,500]、[0,300]、[50,100]或[50,300]等等,单位可以均为世界坐标系下的单位“米”,这种情况下,可以将第一预设范围和第二预设范围从世界坐标系转换为屏幕坐标系下,得到第一预设范围和第二预设范围在屏幕坐标系下的数值,进而判断第一距离是否在第一预设范围内,以及第二距离是否在第二预设范围内。

对于某个第一类物体而言,当该第一类物体的第一距离在第一预设范围内时,可以认为:该第一类物体的当前坐标与角色的当前坐标之间的距离较远,角色无法看清该第一类物体,可以不用渲染该第一类物体,故可以剔除该第一类物体;对于某个第二类物体而言,当该第二类物体的第二距离在第二预设范围内时,可以认为:第二类物体的当前坐标与角色的当前坐标之间的距离较远,角色无法看清该第二类物体,可以不用渲染该第二类物体,故可以剔除该第二类物体。

应用本发明实施例,对各个目标关卡内未被剔除的物体进行渲染,相比于对各个目标关卡内的物体进行渲染的方式而言,可以减少需要被渲染的物体数量,从而,提高了渲染效率。

一般而言,物体与角色的当前坐标之间的距离较远,则物体在屏幕坐标系下的面积越小,然而,在某些情况下,虽然物体与角色的当前坐标之间的距离较远,但是物体在屏幕坐标系下的面积也很大,例如,楼房在屏幕坐标系下的面积为100平方厘米,即使在屏幕坐标系下该楼房与角色的当前坐标之间的距离大于10厘米,该房屋对于角色而言,可能依然是可见的,因此,不能将其剔除。

或者,虽然物体与角色的当前坐标之间的距离很近,但是物体在屏幕坐标系下的面积也很小,例如,一些细小部件(如草、角色身上的挂件、武器挂件等),即使在屏幕坐标系下该细小部件与当前坐标之间的距离小于5厘米,该细小部件对于角色而言,可能依然是不可见的,因此,可以将其剔除。

综上所述,如果仅按照距离剔除,可能引起错误,为了提高剔除物体的正确率,在一种实施方式中,从各个目标关卡内剔除满足预设剔除规则的物体,可以包括以下步骤:

步骤a1、计算各个目标关卡内各物体的屏幕面积比例,

其中,物体的屏幕面积比例表示物体在屏幕坐标系下的面积与显示屏的面积的比值,显示屏用于显示角色的渲染画面;

步骤a2、剔除各个目标关卡内屏幕面积比例小于预设屏幕面积比例的物体。

预设屏幕面积比例可以根据设计人员的需求预先设定,例如可以为:2%、3%或4%等等。

显示屏的面积可以为:显示屏在屏幕坐标系下的面积。

应用本发明实施例,剔除各个目标关卡内屏幕面积比例小于预设屏幕面积比例的物体,避免了剔除在屏幕坐标系下面积较大的物体,且可以剔除在屏幕坐标系下面积较小的物体,充分考虑了物体对角色的可见性程度,故提高了剔除物体的正确率,

一种实现方式中,可以通过以下方式计算各个目标关卡内每一物体的屏幕面积比例:

第一步、计算物体到角色预设部位的距离以及角色在当前视角下的缩放系数;

预设部位可以根据设计人员的需求预先设定,本发明实施例对此不做限定,例如可以为眼睛部位,也可以为角色头顶下方预设距离处的部位,或者,角色身体某个部位预设有虚拟摄像机,这种情况下,预设部分可以为虚拟摄像机所处的部位。

示例性的,预设部位为眼睛部位,物体到角色眼睛部位的距离可以为:在屏幕坐标系下物体的几何中心点到双眼直线的距离,双眼直线为:由左眼中心点和右眼中心点连成的直线;或者,物体到角色眼睛部位的距离还可以为:在屏幕坐标系下物体的几何中心点到双眼线段中点的距离,双眼线段中点为:由左眼中心点和右眼中心点连成的线段的中点。

一种实现方式中,计算角色在当前视角下的缩放系数可以为:获得角色当前视角在屏幕坐标系下水平方向的像素个数和垂直方向的像素个数,利用所获得的水平方向的像素个数和垂直方向的像素个数,计算水平缩放系数和垂直缩放系数;将水平缩放系数和垂直缩放系数中的较大者作为角色在当前视角下的缩放系数。其中,角色的当前视角可以认为是:由角色的当前视角范围形成的视角区域。

其中,水平缩放系数可以为:width/2*m[0][0];垂直缩放系数可以为:height/2*m[1][1],width表示角色当前视角在屏幕坐标系下水平方向的像素个数,height表示角色当前视角在屏幕坐标系下垂直方向的像素个数,m[0][0]表示投影矩阵第0行第0列的元素值,m[1][1]表示投影矩阵第1行第1列的元素值。

投影矩阵可以为2行2列的矩阵,投影矩阵可以用于将动画场景中各物体从三维空间转换到二维平面,投影矩阵的具体元素大小可以根据设计人员的需求事先设定,本发明实施例对各元素大小不做限定。

示例性的,width=10,m[0][0]=1,height=10,m[1][1]=2,水平缩放系数可以为:width/2.0f*m[0][0]=10/2*1=5,垂直缩放系数可以为:height/2.0f*m[1][1]=10/2*2=10,故,角色在当前视角下的缩放系数为:10。2.0f表示:数据类型为单精度浮点型(float),数值为2.0。

第二步、利用距离、缩放系数以及物体的预设包围球半径,计算物体在屏幕坐标系下的包围球面积;

可以理解的是,对于动画场景中的每个物体,都可以预设设置该物体的模型,例如,可以设置房屋模型和围墙模型等,物体的预设包围球半径可以为:包围物体预设模型的球体在屏幕坐标系下的半径。物体的模型可以为三维模型,

示例性的,物体预设模型为房屋模型,如图4所示,图4为包围房屋模型的球体在屏幕坐标系下的平面图,则物体的预设包围球半径为10厘米。

可以预先将包围物体预设模型的球体在世界坐标系下的半径存储于数据库,进而,通过读取数据库可以获得包围物体预设模型的球体在世界坐标系下的半径,并将读取到的半径由世界坐标系转换为屏幕坐标系,进而,可以得到物体的预设包围球半径;或者,可以预先将包围物体预设模型的球体在屏幕坐标系下的半径存储于数据库,进而,通过读取数据库可以获得包围物体预设模型的球体在屏幕坐标系下的半径,即物体的预设包围球半径。

一种实现方式中,可以利用以下表达式计算物体在屏幕坐标系下的包围球面积:

s=π*r*r;r=k/d*r

其中,s表示物体在屏幕坐标系下的包围球面积,r表示物体在屏幕坐标系角色当前视角下的包围球半径,k表示角色在当前视角下的缩放系数,d表示物体到角色预设部位的距离,r表示物体的预设包围球半径,π表示圆周率。可以看出,包围球面积为:包围物体在屏幕上所显示图形的球体所对应的圆面积,不是该球体的表面积。

示例性的,物体的预设包围球半径为2厘米,物体到角色预设部位的距离为5厘米,角色在当前视角下的缩放系数为10,则r=10/5*2=4厘米,s=π*4*4。

第三步、获得显示屏的面积,计算包围球面积与显示屏的面积的比值,将计算所得的比值作为物体的屏幕面积比例。

示例性的,显示屏的面积为100平方厘米,包围球面积为40平方厘米,则物体的屏幕面积比例为:包围球面积占显示屏面积的比值,即为:40/100=0.4。

角色在动画场景中处于运动状态时,角色的坐标会不断变化,例如,角色可以在动画场景中进行奔跑、上楼和潜伏等运动。当角色的坐标变化较大时,可以认为角色可视范围区域的变化较大,故可以重新执行渲染过程,当角色频繁运动,且角色的坐标变化较小时,可以认为:角色可视范围区域基本不变,为了避免频繁执行不必要的渲染过程。可以不再重新渲染。

进一步的,为了用户能够观看渲染画面,在得到角色的渲染画面之后,方法还可以包括以下步骤:

步骤b1、检测角色的坐标,并将检测到的角色的坐标作为角色的目标坐标;

可选的,可以实时、或者较小时间间隔地对角色的坐标进行检测,获取角色的目标坐标值。角色的目标坐标可以为角色的几何中心点在屏幕坐标系下的目标坐标,也可以为角色某个位置点在屏幕坐标系下的目标坐标。

步骤b2、计算角色的目标坐标与角色的当前坐标之间的距离,作为角色的目标距离;

可以理解的是,角色的目标坐标可以是:在得到角色的渲染画面之后,检测出来的角色的坐标;角色的当前坐标可以是:在选择目标关卡之前,所获得的角色坐标。其中,检测方式可以为:实时检测的方式,或,每隔固定预设周期检测一次的方式,或每到达预设时间点检测检测一次的方式。

作为一个具体的实施例,为了计算角色坐标位置的变化情况,定义了角色的当前坐标、角色的目标坐标。角色的当前坐标发生的时间要早于角色目标坐标,检测到角色的坐标值后,将该坐标值记录为角色的当前坐标,继续检测角色的坐标值,然后记录为角色的目标坐标,之后将目标坐标与当前坐标进行对比,计算得到角色的目标距离。

步骤b3、判断角色的目标距离是否小于预设重新渲染距离;若小于,则执行步骤b4;

预设重新渲染距离可以根据设计人员的需求事先设定,本发明实施例对预设重新渲染距离的具体数值不做限定,例如可以为:40、50、60、70等等,单位可以为世界坐标系下的单位“米”,并可以将预设重新渲染距离由世界坐标系转换为屏幕坐标系,进而可以判断角色的目标距离是否小于预设重新渲染距离。

步骤b4、显示角色的渲染画面。

可以理解的是,由于第一预设区域内为预先设定的角色可视范围区域,在显示角色的渲染画面时,可以为:显示以角色的目标坐标为中心的第一预设区域内的物体所对应的渲染画面。故,根据目标坐标的不同,可以每次显示渲染画面中的不同内容。

可以看出,预设重新渲染距离起到了缓冲带的作用,当角色的目标距离小于预设重新渲染距离时,可以认为目标距离在缓冲带范围以内,角色的移动范围较小,故可以认为,角色可以看见的物体基本不变,可以不重新确定目标关卡,直接显示之前所获得的角色的渲染画面,从而,用户可以观看渲染画面。

一种实现方式中,若角色的目标距离不小于预设重新渲染距离,方法还可以包括:

步骤b5、将角色的目标坐标赋值给角色的当前坐标,返回执行选择以角色的当前坐标为中心的第一预设区域内的关卡,作为各个目标关卡的步骤(s102)。

也就是,若目标距离不小于(大于、或者等于)预设重新渲染距离,则可以认为角色移动范围较大,超出了缓冲带范围,可以重新确定目标关卡,进而重新渲染得到角色的渲染画面。

可见,应用本发明实施例提供的技术方案,若目标距离不小于预设重新渲染距离,则重新确定目标关卡,进而重新渲染得到角色的渲染画面;若目标距离小于预设重新渲染距离,则显示角色的渲染画面;因此,在保证渲染画面可靠性的基础上,避免了不必要的渲染次数,进一步提高了渲染效率。

一种实现方式中,在选择以角色的当前坐标为中心的第一预设区域内的关卡,作为各个目标关卡之后,方法还可以包括:

加载各个目标关卡,并卸载以角色的当前坐标为中心第二预设区域外的关卡;其中,第二预设区域外为预先设定的角色不可视范围区域;

作为本发明的一个具体实施例,第二预设区域大于第一预设区域,预设第二区域与第一预设区域的差异地带(第一预设区域之外、第二预设区域之内的区域)相当于制造了一个缓冲带,在该缓冲带之内的关卡不做加载和卸载,只对第二预设区域以外的关卡进行卸载。这么做的目的是,角色在不停的运动,运动一段时间间隔后,还没有走出一些目标关卡,那么对于这些关卡来说,就出现在先后两个时间中,如果前一个时间刚加载、后一个时间就要卸载,然后再加载新的目标关卡的时候又加载上来,是没有必要的,那么设置了缓冲带后,缓冲带中的关卡就不会被卸载。

在这种情况下,对各个目标关卡内的物体进行渲染,具体可以为:

对已加载的各个目标关卡进行渲染。

一种实现方式中,可以利用加载线程执行加载和卸载目标关卡的步骤,然后,利用渲染线程执行对已加载的各个目标关卡进行渲染的步骤。

具体的,第一预设区域可以为:以第一预设值为半径的球形区域;第二预设区域为:以第二预设值为半径的球形区域,第二预设值与第一预设值之差可以等于预设重新渲染距离。

第一预设值和第二预设值可以根据设计人员的需求预先设置,例如可以分别为:400和450,单位可以均为世界坐标系下的米,在确定第一预设区域和第二预设区域时,可以将第一预设值和第二预设值由世界坐标系转换到屏幕坐标。400和450之间的区域,就是起到缓冲带作用的区域。

在其他实现方式中,第二预设值与第一预设值之差也可以不等于预设重新渲染距离,例如,可以大于或小于预设重新渲染距离、另外,第一预设区域和第二预设区域还可以为矩形区域、椭圆形区域、扇形区域、不规则形状区域等等,本发明实施例对第一预设区域和第二预设区域的形状不做限定。矩形区域,计算更方便。

相比于现有技术将动画场景内所有关卡一起加载到gpu的方式,本发明实施例选取一部分关卡进行加载的方式来处理,可以缩短目标关卡的加载时间,提高加载效率。

进一步的,可以利用加载线程执行加载和卸载目标关卡的步骤,然后,利用渲染线程执行对已加载的各个目标关卡进行渲染的步骤,从而可以较少渲染线程的负担,提高了渲染线程的执行效率。

相应于上述动画场景的渲染方法实施例,本发明实施例提供了一种动画场景的渲染装置,参见图5所示,与图1所示流程相对应,装置包括:

获得模块301,用于获得动画场景中角色的当前坐标;

选择模块302,用于选择以所述角色的当前坐标为中心的第一预设区域内的关卡,作为各个目标关卡;其中,所述第一预设区域内为预先设定的角色可视范围区域;

渲染模块303,用于对所述各个目标关卡内的物体进行渲染,得到所述角色的渲染画面。

可见,应用本发明实施例提供的技术方案,在动画渲染的过程中,仅对各个目标关卡内的物体进行渲染,无需渲染所有关卡,从而提高了动画渲染的效率

参见图6,图6为本发明实施例提供的动画场景的渲染装置的另一种结构示意图,与图3所示的流程相对应,本发明图6实施例在图5所示实施例的基础上,增加剔除模块304,

剔除模块304,用于在所述选择以所述角色的当前坐标为中心的第一预设区域内的关卡,作为各个目标关卡之后,从所述各个目标关卡内剔除满足预设剔除规则的物体;

所述渲染模块303,具体用于:

对所述各个目标关卡内未被剔除的物体进行渲染,得到所述角色的渲染画面。

应用本发明实施例,对各个目标关卡内未被剔除的物体进行渲染,相比于对各个目标关卡内的物体进行渲染的方式而言,可以减少需要被渲染的物体数量,从而,提高了渲染效率。

可选的,所述装置还包括:

检测模块,用于在得到所述角色的渲染画面之后,检测所述角色的坐标,并将检测到的所述角色的坐标作为所述角色的目标坐标;

计算模块,用于计算所述角色的目标坐标与所述角色的当前坐标之间的距离,作为所述角色的目标距离;

判断模块,用于判断所述角色的目标距离是否小于预设重新渲染距离;

显示模块,用于在所述判断模块的判断结果为是时,显示所述角色的渲染画面。

可选的,所述装置还包括:

返回模块,用于在所述判断模块的判断结果为否时,将所述角色的目标坐标赋值给所述角色的当前坐标,返回执行所述选择以所述角色的当前坐标为中心的第一预设区域内的关卡,作为各个目标关卡。

可选的,所述装置还包括:

加载模块,用于在所述选择以所述角色的当前坐标为中心的第一预设区域内的关卡,作为各个目标关卡之后,加载所述各个目标关卡,并卸载以所述角色的当前坐标为中心第二预设区域外的关卡;其中,所述第二预设区域外为预先设定的角色不可视范围区域;

所述渲染模块303,具体用于:

对已加载的各个目标关卡进行渲染。

可选的,所述第一预设区域为:以第一预设值为半径的球形区域;所述第二预设区域为:以第二预设值为半径的球形区域,所述第二预设值与所述第一预设值之差等于所述预设重新渲染距离。

可选的,所述剔除模块304,包括:

计算子模块,用于计算所述各个目标关卡内各物体的屏幕面积比例,其中,物体的屏幕面积比例表示物体在屏幕坐标系下的面积与显示屏的面积的比值,所述显示屏用于显示所述角色的渲染画面;

剔除子模块,用于剔除所述各个目标关卡内屏幕面积比例小于预设屏幕面积比例的物体。

可选的,所述计算子模块通过以下方式计算所述各个目标关卡内每一物体的屏幕面积比例:

计算物体到所述角色预设部位的距离以及所述角色在当前视角下的缩放系数;

利用所述距离、所述缩放系数以及物体的预设包围球半径,计算物体在屏幕坐标系下的包围球面积;

获得所述显示屏的面积,计算所述包围球面积与所述显示屏的面积的比值,将计算所得的比值作为物体的屏幕面积比例。

可选的,渲染模块303,具体用于:

获取所有目标关卡内各个同类物体的坐标,其中,所述各个同类物体为:属于同一预设物体类型的各个物体;

在所述各个同类物体的坐标处渲染出所述同类物体。

本发明实施例还提供了一种电子设备,如图7所示,电子设备包括:处理器501和存储器502,其中,

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

处理器501,用于执行存储器上所存放的程序时,实现本发明实施例所提供的动画场景的渲染方法。

其中,该动画场景的渲染方法包括如下步骤:

获得动画场景中角色的当前坐标;

选择以所述角色的当前坐标为中心的第一预设区域内的关卡,作为各个目标关卡;其中,所述第一预设区域内为预先设定的角色可视范围区域;

对所述各个目标关卡内的物体进行渲染,得到所述角色的渲染画面。

可见,在动画渲染的过程中,仅对各个目标关卡内的物体进行渲染,无需渲染所有关卡,从而提高了动画渲染的效率。

需要说明的是,处理器501执行存储器502上存放的程序而实现的动画场景的渲染方法的其他实施例,与前述方法部分提及的动画场景的渲染方法的实施例相同,在此不再赘述。

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

通信接口用于上述电子设备与其他设备之间的通信。

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

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

本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,该计算机程序被处理器执行时实现上述的动画场景的渲染方法步骤。

其中,该动画场景的渲染方法包括如下步骤:

获得动画场景中角色的当前坐标;

选择以所述角色的当前坐标为中心的第一预设区域内的关卡,作为各个目标关卡;其中,所述第一预设区域内为预先设定的角色可视范围区域;

对所述各个目标关卡内的物体进行渲染,得到所述角色的渲染画面。

可见,在动画渲染的过程中,仅对各个目标关卡内的物体进行渲染,无需渲染所有关卡,从而提高了动画渲染的效率。

需要说明的是,上述计算机程序被处理器执行时实现的动画场景的渲染方法的其他实施例,与前述方法部分提及的动画场景的渲染方法的实施例相同,在此不再赘述。

本发明实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各个实施例提供的动画场景的渲染方法。

本发明实施例提供了一种计算机程序,当其在计算机上运行时,使得计算机执行上述各个实施例提供的动画场景的渲染方法。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备、计算机可读存储介质、包含指令的计算机程序产品、计算机程序实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1