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

遮挡剔除实现方法、装置、计算机设备及存储介质

文献发布时间:2023-06-19 13:46:35


遮挡剔除实现方法、装置、计算机设备及存储介质

技术领域

本申请涉及计算机技术领域,具体涉及遮挡剔除实现方法、装置、计算机设备及存储介质。

背景技术

在进行游戏场景渲染时,会设置一个模拟人眼的视点的虚拟相机,该虚拟相机的视角范围内的物体按照透视关系,具有近大远小的性质。虚拟相机的视角范围内的画面为二维平面,该二维平面是由局部空间内的多个物体转换到屏幕空间所形成的。

现有技术中,该二维平面中的每个像素点都有自身对应的深度信息,该深度信息指的是像素点在局部空间中对应的物体到虚拟相机视点的远近程度。可以根据每个像素点与视点的远近程度,确定二维平面中各个模型之间的遮挡关系。然而由于现有技术中每个像素点均需要参与计算,造成计算资源消耗较大。

发明内容

本申请实施例提供一种遮挡剔除实现方法、装置、计算机设备及存储介质,可以减少计算资源的消耗。

本申请实施例提供一种遮挡剔除实现方法,包括:根据预先设置的标记,将待处理模型划分为遮挡体和被遮挡体,所述遮挡体包括多个三角形,每个所述三角形有自身对应的深度值,所述深度值反映对应的三角形与视点之间的远近程度;对于画面中预设的像素集合区域,按照深度值所反映出的距离从近到远的顺序,向所述像素集合区域内投影填充所述三角形,直到所述像素集合区域被填充满或所述像素集合区域内无后续的三角形用于填充;根据所述像素集合区域被填充满时所述三角形的深度值,确定所述像素集合区域的深度值;确定每个被遮挡体的包围盒,并确定所述包围盒的最近深度值,所述包围盒为包裹对应的被遮挡体的规则立方体;根据每个所述像素集合区域的深度值与目标深度值之间的数值差距,确定所述被遮挡体的模型状态,所述目标深度值是在所述像素集合区域内的包围盒的最近深度值;若所述被遮挡体的模型状态为未被遮挡的状态,则渲染所述被遮挡体。

根据本申请的一个方面,本申请实施例还提供一种遮挡剔除实现装置,该装置包括:

模型划分模块,用于根据预先设置的标记,将待处理模型划分为遮挡体和被遮挡体,所述遮挡体包括多个三角形,每个所述三角形有自身对应的深度值,所述深度值反映对应的三角形与视点之间的距离远近程度;

三角形填充模块,用于对于画面中预设的像素集合区域,按照深度值所反映出的距离从近到远的顺序,向所述像素集合区域内投影填充所述三角形,直到所述像素集合区域被填充满或所述像素集合区域内无后续的三角形用于填充;

深度值确定模块,用于根据所述像素集合区域被填充满时,或所述像素集合区域内无后续的三角形用于填充时,所述三角形的深度值,确定所述像素集合区域的深度值;

包围盒确定模块,用于确定每个被遮挡体的包围盒,并确定所述包围盒的深度值,所述包围盒为包裹对应的被遮挡体的规则立方体;

遮挡状态确定模块,用于根据每个所述像素集合区域的深度值与目标深度值之间的数值差距,确定所述被遮挡体的模型状态,所述目标深度值是在所述像素集合区域对应范围内的包围盒的深度值;

模型渲染模块,用于当所述被遮挡体的模型状态为未被遮挡的状态时,渲染所述被遮挡体。

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

像素点深度值确定模块,用于对于每个所述三角形包括的多个像素点,确定每个像素点对应的深度值,其中,所述深度值反映对应的像素点与视点之间的距离远近程度;

深度值设定模块,用于将深度值反映距离最远的像素点的深度值作为该三角形的深度值。

可选地,三角形填充模块,包括:

子画面划分子模块,用于将画面划分为多个子画面;

深度值排序子模块,用于对于多个子画面中的每个子画面,将每个所述子画面中的三角形按照深度值所反映出的距离从近到远的顺序进行排序;

像素集合填充子模块,用于对于每个所述子画面中的每个像素集合区域,按照深度值所反映出的距离从近到远的顺序,向所述像素集合区域内投影填充所述三角形,直到所述像素集合区域被填充满或所述像素集合区域内无后续的三角形用于填充。

可选地,所述三角形填充模块,还可以包括:

顶点排序子模块,用于对于每个所述三角形,按照三角形的顶点纵坐标从小到大的顺序,对所述三角形的三个顶点进行排序;

三角形分割子模块,用于以纵坐标为中间值的顶点所在的与横坐标平行的直线,对所述三角形进行分割,得到两个子三角形,其中,所述纵坐标为中间值的顶点所在的与横坐标平行的直线为两个子三角形的公共边;

像素点计算子模块,用于对于每个所述子三角形,计算除所述公共边以外的两条边覆盖的像素点;

像素点填充子模块,用于将除所述公共边以外的两条边覆盖的像素点、以及每个所述子三角形三条边围起来的像素点填充为数值1。

可选地,深度值确定模块,具体用于获取所述像素集合区域被填充满时或所述像素集合区域内无后续的三角形用于填充时,所述像素集合区域内表示距离最远的三角形的深度值,并将其作为所述像素集合区域的深度值。

可选地,包围盒确定模块,还包括:

顶点计算子模块,用于计算每个所述被遮挡体的包围盒的多个顶点;

深度值确定子模块,用于确定多个顶点中的每个顶点的深度值,将距离视点最近的顶点的深度值作为所述包围盒的深度值。

可选地,顶点计算子模块,具体用于将所述包围盒的多个顶点中的任一顶点从局部空间转换至屏幕空间;

根据转换至屏幕空间的顶点的坐标值、包围盒的边长值,计算所述包围盒的其他顶点在所述屏幕空间的坐标值。

可选地,遮挡状态确定模块,具体用于当所述像素集合区域的深度值所反映的距离比在所述像素集合区域内的被遮挡体的包围盒的深度值所反映的距离更近时,确定所述被遮挡体被遮挡;当所述像素集合区域的深度值所反映的距离比在所述像素集合区域内的被遮挡体的包围盒的深度值所反映的距离更远时,确定所述被遮挡体未被遮挡。

本申请实施例还提供一种计算机设备,包括存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时实现如上所述方法的步骤。

本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行实现如上所述方法的步骤。

本申请实施例提供的遮挡剔除实现方法可以先根据预先设置的标记,将待处理模型划分为遮挡体和被遮挡体。遮挡体包括多个三角形,每个三角形均有自身对应的深度值。对于预设的像素集合区域,可以按照深度值所反映出的距离从近到远的顺序,向像素集合区域内填充三角形,直到像素集合区域被填充满或所述像素集合区域内无后续的三角形用于填充,并根据像素集合区域被填充满时或所述像素集合区域内无后续的三角形用于填充时,三角形的深度值,确定像素集合区域的深度值。对于每个被遮挡体,确定每个被遮挡体的包围盒,并确定包围盒的最近深度值。根据像素集合区域的深度值与包围盒的最近深度值,可以确定被遮挡体的模型状态。在本申请实施例中,像素集合区域仅使用一个深度值进行表示,利用像素集合区域的深度值与被遮挡体的包围盒的最近深度值比较便可以获取到被遮挡体的模型状态,然后根据具体的模型状态决定是否需要对被遮挡体进行渲染。与现有技术依据每个像素点与视点的远近程度确定遮挡关系相比,减少了计算资源的消耗。

附图说明

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

图1a是本申请实施例提供的遮挡剔除实现方法的示意性结构框图;

图1b是本申请实施例提供的遮挡剔除实现方法的流程示意图;

图1c是在Reversed-Z的方式下,纵坐标Z

图1d是在Reversed-Z的方式下,深度值样本的分布图;

图1e是在常规做法下,纵坐标Z

图1f是在常规做法下,深度值样本的分布图;

图1g是本申请实施例中对三角形进行分割的场景示意图;

图1h为移位光栅化计算过程的示意图;

图1i示出了某被遮挡体的长方体状包围盒的示意图;

图1j示出了透视除法与物体坐标变换到屏幕空间大小的关系图;

图2a示出了AoS与SoA的存储方式的对比图;

图2b示出了未使用本申请实施例提供的遮挡剔除实现方法的游戏画面示意图;

图2c示出了使用本申请实施例提供的遮挡剔除实现方法的游戏画面示意图;

图2d示出了又一游戏画面的示意图;

图2e(1)示出了现有技术中的Heuristic Discard方式处理游戏场景生成的示意图;

图2e(2)示出了利用本申请实施例提供的方法处理游戏场景生成的示意图;

图3是本申请实施例提供的遮挡剔除实现装置的一种结构示意图;

图4是本申请实施例提供的计算机设备的结构示意图;

图5a示出了游戏运行时间与帧率的关系图;

图5b示出了游戏运行时间与Draw Calls的关系图;

图5c示出了游戏运行时间与三角形绘制数量的关系图;

图5d示出了SOC的处理时间的变化图;

图5e示出了SOC的剔除率变化图。

具体实施方式

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

本申请实施例提供一种遮挡剔除实现方法、装置、计算机设备及存储介质。

其中,该遮挡剔除实现装置具体可以集成在电子设备中,该电子设备可以为终端、服务器等设备。其中,终端可以为手机、平板电脑、智能蓝牙设备、笔记本电脑、或者个人电脑(Personal Computer,PC)等设备;服务器可以是单一服务器,也可以是由多个服务器组成的服务器集群。

在一些实施例中,该遮挡剔除实现装置还可以集成在多个电子设备中,比如,遮挡剔除实现装置可以集成在多个服务器中,由多个服务器来实现本申请的遮挡剔除实现方法。

在一些实施例中,服务器也可以以终端的形式来实现。请参见图1a,图1a示出了本申请实施例提供的一种遮挡剔除实现方法,包括:根据预先设置的标记,将待处理模型划分为遮挡体和被遮挡体。遮挡体包括多个三角形,每个三角形有自身对应的深度值,深度值反映对应的三角形与视点之间的距离远近程度;对于画面中预设的像素集合区域,按照深度值所反映出的距离从近到远的顺序,向像素集合区域内填充三角形,直到像素集合区域被填充满或像素集合区域内无后续的三角形用于填充。根据像素集合区域被填充满时,或像素集合区域内无后续的三角形用于填充时,三角形的深度值,确定像素集合区域的深度值。确定每个被遮挡体的包围盒,并确定包围盒的深度值,包围盒为包裹对应的被遮挡体的规则立方体;根据每个像素集合区域的深度值与目标深度值之间的数值差距,确定被遮挡体的模型状态,目标深度值是在像素集合区域对应范围内的包围盒的深度值;若被遮挡体的模型状态为未被遮挡的状态,则渲染被遮挡体。

以下分别进行详细说明。需说明的是,以下实施例的序号不作为对实施例优选顺序的限定。

在本实施例中,提供了一种遮挡剔除实现方法,该遮挡剔除实现方法可以用于游戏运行时画面的实时渲染过程。如图1b所示,该边缘处理方法的具体流程可以如下101至106:

101、根据预先设置的标记,将待处理模型划分为遮挡体和被遮挡体,所述遮挡体包括多个三角形,每个所述三角形有自身对应的深度值,所述深度值反映对应的三角形与视点之间的距离远近程度。

预先设置的标记可以是由负责美术的工作人员人为标记的,负责美术的工作人员可以将靠近虚拟相机的体积较大的多个模型标记为遮挡体,将远离虚拟相机的体积较小的模型标记为被遮挡体。应当理解,遮挡体之间也可以存在遮挡与被遮挡的关系,被遮挡体之间也可以存在遮挡与被遮挡的关系。

深度值用于反映带有深度值的待处理量与视点之间的距离远近程度,上述的待处理量可以为三角形,也可以为像素点。

可选地,在一种具体实施方式中,深度值可以与距离成正相关:即深度值越大,表示待处理量与视点之间的距离越远;深度值越小,表示待处理量与视点之间的距离越近。在另一种具体实施方式中,深度值可以与距离成负相关:即深度值越大,表示待处理量与视点之间的距离越近;深度值越小,表示待处理量与视点之间的距离越远。

在计算三角形的深度值时,可以通过Reversed-Z的方式提升计算精度,通过Reversed-Z的方式提升计算精度的具体过程如下:

根据公式:

其中,M'

在Reversed-Z的方式下,纵坐标Z

常规做法的具体过程如下:

根据公式:

其中,

在常规做法下,纵坐标Z

在利用Reversed-Z的方式计算深度值的情况下,深度值与距离成负相关,为便于说明,下文中不妨以深度值与距离成负相关为例进行描述。

每个三角形均有自身对应的深度值,深度值可以反映对应的三角形与视点之间的远近程度。三角形对应的深度值的计算过程在下文进行详细描述。

102、对于画面中预设的像素集合区域,按照深度值所反映出的距离从近到远的顺序,向所述像素集合区域内投影填充所述三角形,直到所述像素集合区域被填充满或所述像素集合区域内无后续的三角形用于填充。

可选地,对于每个遮挡体,可以先将遮挡体转换为由多个三角形组成的集合,然后可以得到上述三角形在像素集合区域的投影。

其中,对上述的三角形进行在像素集合区域的投影的过程具体包括如下步骤:

将局部空间中的多个三角形转换为屏幕空间内的三角形,其中,局部空间中的多个三角形可以是OCmesh格式。在进行局部空间中的三角形转换为屏幕空间内的三角形的运算前,可以通过阵列结构(Structure of Arrays,简称SoA)形式存储三角形在局部空间中的坐标值,也可以通过结构数组(Array of Structures,简称AoS)形式存储三角形在局部空间中的坐标值,AoS形式是一个存储单元对应三角形的一个坐标值。例如,请参见图2a,对于Vec0,X0、Y0、Z0分别是三维空间中的三个坐标值,W0是局部空间中的该点与虚拟相机之间的距离值。SoA形式是一个存储单元对应多个坐标值的同一坐标参量。例如,请参见图2a,对于VecX,X0、X1、X2、X3分别是四个不同的坐标值的X参量。在进行坐标变换时,不同的参量分别对应有不同的变换方式,因此使用SoA形式,可以将需要经过同一变换方式的参量一次性取出,再送入同一线程,从而实现数据处理的过程更加快速。

像素集合区域可以为画面中的若干个像素点共同组成的区域,组成像素集合区域的像素点的个数不应该理解为是对本申请的限制,可以是128个,也可以是256个,也可以是512个,也可以是其他数量。每个像素集合区域均对应若干个覆盖标记位,其中,覆盖标记位的数量与像素点的数量相同,覆盖标记位与像素点一一对应。覆盖标记位可以有0和1两种状态:0表示覆盖标记位对应的像素点未被填充;1表示覆盖标记位对应的像素点被填充。

例如,对于像素点的个数为128个的情况,像素集合区域可以是32个像素点*4个像素点的矩形区域,还可以是16个像素点*8个像素点的矩形区域,也可以是其他形状。像素集合区域在满足由128个像素点围成的情况下,其具体形状不应该理解为是对本申请的限制。

对于三角形来说,按照深度值所反映出的距离从近到远的顺序向像素集合区域填充三角形,可以使得像素集合区域内的多个遮挡体之间的相互遮挡关系是准确的。像素集合区域被填充满,则意味着像素集合区域所能呈现的遮挡关系已经被目前为止的多个遮挡体之间的相互遮挡关系呈现出来,距离虚拟相机更远的三角形会被当前填充满像素集合区域的多个遮挡体遮挡住。因此,在该像素集合区域内,深度值更小(即深度值所反映的三角形与视点之间距离更远)的三角形已经不需要再进行处理。所述像素集合区域内无后续的三角形用于填充,则表示该像素集合区域内的全部三角形已经被利用完毕。

可选地,步骤102可以包括:将画面划分为多个子画面;对于多个子画面中的每个子画面,将每个所述子画面中的三角形按照深度值所反映出的距离从近到远的顺序进行排序;对于每个所述子画面中的每个像素集合区域,按照深度值所反映出的距离从近到远的顺序,向所述像素集合区域内投影填充所述三角形,直到所述像素集合区域被填充满或所述像素集合区域内无后续的三角形用于填充。

在上述实施方式中,可以将画面划分为多个子画面,然后对多个子画面进行并行处理。由于在分别处理每个子画面时,可以只对子画面中的三角形进行排序,因此对于每个子画面来说处理的三角形的数量大幅减少。通过上述过程,更好地节省了运算资源,减少了处理时间。

可选地,步骤“向所述像素集合区域内投影填充所述三角形”可以包括:

对于每个所述三角形,按照三角形的顶点纵坐标从小到大的顺序,对所述三角形的三个顶点进行排序;以纵坐标为中间值的顶点所在的与横坐标平行的直线,对所述三角形进行分割,得到两个子三角形,其中,所述纵坐标为中间值的顶点所在的与横坐标平行的直线为两个子三角形的公共边;对于每个所述子三角形,计算除所述公共边以外的两条边覆盖的像素点;将除所述公共边以外的两条边覆盖的像素点、以及每个所述子三角形三条边围起来的像素点填充为数值1。

为了便于描述,不妨以图1g为例进行说明,对于三个顶点v0、v1、v2确定的三角形,可以先按照纵坐标值(也就是y值),对v0、v1、v2进行排序,不难得出,v0的y值小于v2的y值,v2的y值小于v1的y值,即v2是纵坐标为中间值的顶点。然后以v2所在的与横坐标平行的直线l对三角形进行分割,得到两个子三角形:顶点v0、v2、p确定的三角形,以及顶点v1、v2、p确定的三角形。其中,直线l与边v0-v1交于p点。其中,边v2-p是顶点v0、v2、p确定的三角形与顶点v1、v2、p确定的三角形的公共边。对于每个子三角形,均可以计算除公共边v2-p以外的两条边覆盖的像素点。

由于每个子三角形的计算过程相同,因此,不妨以子三角形:顶点v0、v2、p确定的三角形为例,进行说明:

在一种具体实施方式中,计算除所述公共边以外的两条边覆盖的像素点,可以通过如下方式进行:

根据顶点v0、v2的坐标值,确定v0-v2边长的斜率slop

根据顶点v0、p的坐标值,确定v0-p边长的斜率slop

上述方式通过对前一次运算得到的x值的利用,较好地减少了运算量,提高了处理效率。

可选地,为了进一步减少运算量,提升运算效率,还可以将上述的浮点数运算优化为定点数运算,具体过程如下:

Slop_FP=dx*(1<

C

C

浮点数向定点数转换的规则为:将浮点数缩放固定大小的数值,并将缩放后的浮点数裁剪为整数,该整数为浮点数对应的定点数;上述的固定大小的数值为1<

Slop_FP为定点数的斜率,dx在数值上与浮点数的斜率相等;将dx与1<

X

其中,光栅化是按照水平行逐行自左向右进行的,即每一个光栅的水平行均可以记为线段。对于待光栅化的三角形,若三角形不存在水平边,其三边的两两之间可以被多个水平行的线段划分为左右两侧。水平行与三角形的三边的左交点可以记为该水平行对应的线段的起点,水平行与三角形的三边的右交点可以记为该水平行对应的线段的终点。若三角形存在水平边,则水平边为期望的线段,除水平边以外的其他两条边可以被多个水平行的线段划分为左右两侧。水平行与三角形的三边的左交点可以记为该水平行对应的线段的起点,水平行与三角形的三边的右交点可以记为该水平行对应的线段的终点。

通过上述步骤得到三角形边界的定点数表示后,还需要将定点数恢复成浮点数,具体可以通过将定点数除以(1<

在另一种具体实施方式中,计算除所述公共边以外的两条边覆盖的像素点,可以通过如下方式进行:

根据顶点v0、v2的坐标值,确定v0-v2边长的直线方程y=f

根据顶点v0、p的坐标值,确定v0-p边长的直线方程y=f

由于是将三角形向像素集合区域中填充,有可能出现三角形的边角超出像素集合区域的情况,针对这种情况,可以通过移位光栅化的方式实现三角形向像素集合区域的填充,具体过程如下:

移位光栅化是一种借助计算机位运算,通过移位指令实现深度图的光栅化的方法。请参见图1h,不妨设像素集合区域为8个像素点*8个像素点组成的正方形区域,如上文所述,可通过覆盖标记位表示对应的像素点;三角形由a、b、c三边组成,且三角形的边角超出像素集合区域的情况如图1h所示。

请参见图1h(1),对于三角形的a边,其方向由该三角形的a边外侧指向a边的内侧。由于方向只有向左或向右两种选项,因此图1h(1)中的方向是向右。

对于像素集合区域的第一行,a边与像素集合区域的第一行交于从左往右数第5个像素点,则将第一行的11111111向右移动5位,并在移位后的位置补0,得到00000111;

对于像素集合区域的第二行,a边与像素集合区域的第二行交于从左往右数第4个像素点,则将第二行的11111111向右边移动4位,并在移位后空出的位置补0,得到00001111;

……

依此类推,直到对于a边与像素集合区域的每一行的交点均计算完成,得到图1h(1)。

请参见图1h(2),对于三角形的b边,其方向由该三角形的b边外侧指向b边的内侧。由于方向只有向左或向右两种选项,因此图1h(2)中的方向是向左。

对于像素集合区域的第一行,b边与像素集合区域的第一行并不相交,则无需对第一行的11111111进行移动;同理,b边与像素集合区域的第二行、第三行均不相交,则同样无需对第二行、第三行的11111111进行移动;

对于像素集合区域的第四行,b边与像素集合区域的第四行交于从右往左数第1个像素点,则将第四行的11111111向左边移动1位,并在移位后空出的位置补0,得到11111110;

对于像素集合区域的第五行,b边与像素集合区域的第五行交于从右往左数第3个像素点,则将第五行的11111111向左边移动3位,并在移位后空出的位置补0,得到11111000;

……

依此类推,直到对于b边与像素集合区域的每一行的交点均计算完成,得到图1h(2)。

请参见图1h(3),对于三角形的c边,其方向由该三角形的b边外侧指向b边的内侧。由于方向只有向左或向右两种选项,因此图1h(2)中的方向是向左。但由于c边与像素集合区域的每行像素点均不相交,因此无需进行移位操作,得到图1h(3)。

对图1h(1)、图1h(2)、图1h(3)分别示出的移位图进行与操作,便可以得到图1h(4)。

在按照深度值所反映出的距离从近到远的顺序,向像素集合区域内填充三角形时,可以每次填充三角形时均执行上述的操作步骤。

可选地,在步骤102之前,本申请实施例还可以包括如下步骤:对于每个所述三角形包括的多个像素点,确定每个像素点对应的深度值,其中,所述深度值反映对应的像素点与视点之间的远近程度;将深度值反映距离最远的像素点的深度值作为该三角形的深度值。

其中,某一像素点对应的深度值为该像素点在屏幕空间内的z轴坐标z’与像素点到虚拟相机的视点之间的距离w’之间的比值,即z’/w’。在计算出某一三角形的多个像素点的每个像素点的深度值之后,选中其中数值最小的深度值,该深度值可以作为该三角形的深度值。数值最小的深度值表示像素点到虚拟相机的视点之间的距离最远,利用该深度值与被遮挡体的深度值进行比较,可以更加准确地判断遮挡体与被遮挡体之间的遮挡关系,提高画面真实性。

可选地,在步骤102之前,本申请实施例还可以包括如下步骤:对于每个所述三角形包括的三个顶点,确定每个顶点对应的深度值,其中,所述深度值反映对应的顶点与视点之间的距离远近程度;将深度值反映距离最远的顶点的深度值作为该三角形的深度值。

利用三角形的三个顶点中深度值反映距离最远的顶点的深度值作为该三角形的深度值,可以进一步简化计算过程,使得深度值的确定更加快捷。

103、根据所述像素集合区域被填充满时或所述像素集合区域内无后续的三角形用于填充时,所述三角形的深度值,确定所述像素集合区域的深度值。

可选地,步骤103具体可以包括:获取所述像素集合区域被填充满时或所述像素集合区域内无后续的三角形用于填充时,所述像素集合区域内表示距离最远的三角形的深度值,并将其作为所述像素集合区域的深度值。该深度值可以是浮点数,占32个bit位。

将深度值表示距离最远的(即深度值最小)的三角形的深度值作为该像素集合区域的深度值,在利用该像素集合区域与被遮挡体的深度值进行比较时,可以更加准确地判断被遮挡体的被遮挡程度,提高画面的真实性。

104、确定每个被遮挡体的包围盒,并确定所述包围盒的深度值。

包围盒为包裹对应的被遮挡体的规则立方体。被遮挡体可能是细节较多的不规则模型,因此可以确定出被遮挡体的包围盒,并对包围盒进行处理,减少运算量。

包围盒的深度值为表示距离最近的深度值。可选地,步骤“确定所述包围盒的深度值”可以包括:计算每个所述被遮挡体的包围盒的多个顶点;确定多个顶点中的每个顶点的深度值,将距离视点最近的顶点的深度值作为包围盒的深度值。

在一种实施例中,深度值的数值越大表示距离视点越近,则可将数值最大的顶点的深度值作为所述表示距离最近的深度值。

在确定包围盒的深度值时,可以选择包围盒的深度值,包围盒的深度值与像素集合区域对应的深度值进行比较,若包围盒的深度值依然小于像素集合区域所对应的深度值,则说明整个包围盒与视点的距离大于像素集合区域与视点的距离,则可以判定包围盒被像素集合区域遮挡。

在一种具体实施方式中,被遮挡体的包围盒可以为长方体状包围盒,该长方体状包围盒可以为AABB包围盒,步骤“计算每个所述被遮挡体的包围盒的多个顶点”,包括:

将所述包围盒的多个顶点中的任一顶点从局部空间转换至屏幕空间;

根据转换至屏幕空间的顶点的坐标值、包围盒的边长值,计算所述包围盒的其他顶点在所述屏幕空间的坐标值。

通过上述计算方法,与对每个顶点均进行齐次矩阵乘法相比,减少了较多的运算量,节约了电子设备的运算资源。

详情请参见图1i,图1i示出了某被遮挡体的AABB包围盒的示意图,不妨设A点为已经计算出的屏幕空间的顶点,B点为需要根据A点计算坐标值的顶点,则:

A点在局部空间的坐标为PA(xa,ya,za,1),B点在局部空间的坐标为PB(xb,yb,zb,1),AABB包围盒的边长E为(ex,ey,ez,0)。则在局部空间中,有PB=PA+(ex,0,0,0)=PA+Ex。

在转换到屏幕空间后,PA’=M*PA,其中,PA’为A点在屏幕空间的坐标,M为变换矩阵。PB’=M*PB=M*(PA+Ex)=M*PA+M*Ex=PA’+M*Ex。

A点的深度值为DA=PA’z/PA’w;B点的深度值为DB=PB’z/PB’w。其中,PA’z为A点在屏幕空间中的z值,PA’w为在局部空间中A点所在的像素点与虚拟相机之间的距离;PB’z为B点在屏幕空间中的z值,PB’w为在局部空间中B点所在的像素点与虚拟相机之间的距离。

通过上述方式除了可以计算B点在所述屏幕空间的坐标值外,还可以计算除A点外的其他任一顶点在屏幕空间的坐标值。

可选地,在一种具体实施方式中,在步骤104与步骤105之间,还可以对被遮挡体的包围盒进行筛选。即可以获取被遮挡体的包围盒的半径数值r,并将半径数值r与预设阈值t进行比较。当半径数值r与预设阈值t满足预设条件时,可以判定该包围盒对应的被遮挡体不值得被渲染,直接丢弃。

上述的预设条件为:

其中,w为包围盒的最靠近视点的顶点与视点在局部空间的距离,fov为虚拟相机的视野张角。上述公式可以根据图1j得到,图1j展示了透视除法与物体坐标变换到屏幕空间大小的关系,其中d表示虚拟相机到归一化画面的距离,归一化画面为将图1j示出的视锥中包括的显示画面进行归一化得到的画面,视锥为图1j中的平头截体,归一化指的是将视锥包括的多个画面的长宽按比例变为预设长宽的过程,视锥包括的多个画面为视锥垂直于虚拟相机的视线的多个截面。

105、根据每个所述像素集合区域的深度值与目标深度值之间的数值差距,确定所述被遮挡体的模型状态,所述目标深度值是在所述像素集合区域对应范围内的包围盒的深度值。

可选地,步骤105具体可以包括:

若所述像素集合区域的深度值所反映的距离比在所述像素集合区域内的被遮挡体的包围盒的深度值所反映的距离更近,确定所述被遮挡体被遮挡;

若所述像素集合区域的深度值所反映的距离比在所述像素集合区域内的被遮挡体的包围盒的深度值所反映的距离更远,确定所述被遮挡体未被遮挡。

像素集合区域的深度值大于在所述像素集合区域内的被遮挡体的包围盒的深度值,则说明像素集合区域与虚拟相机模拟的视点之间的距离比被遮挡体的包围盒与视点之间的距离更近,则说明在当前虚拟相机的视角下,被遮挡体是被遮挡的状态,则该被遮挡体不需要再进行渲染操作。

像素集合区域的深度值小于在所述像素集合区域内的被遮挡体的包围盒的深度值,则说明像素集合区域与虚拟相机模拟的视点之间的距离比被遮挡体的包围盒与视点之间的距离更远,则说明在当前虚拟相机的视角下,被遮挡体是未被遮挡的状态,则执行步骤106。

106、若所述被遮挡体的模型状态为未被遮挡的状态,则渲染所述被遮挡体。

对于未被遮挡的被遮挡体,可以在画面中进行被遮挡体的实时渲染;对于被遮挡的被遮挡体,可以不再渲染被遮挡体,从而提高画面的实时渲染效率。请参见图2b和图2c,图2b示出了未使用本申请实施例提供的遮挡剔除实现方法的游戏画面示意图,图2c示出了使用本申请实施例提供的遮挡剔除实现方法的游戏画面示意图。图中的线框为遮挡体,为了便于观测遮挡体后的被遮挡体的渲染情况,故采用线框的方式对遮挡体进行展示。由图2c与图2b对比可明显看出,在图2b中被渲染的起重机模型以及台阶正上方的箱子模型未在图2c中进行渲染。

请参见图2d和图2e,对于图2d示出的游戏场景,图2e(1)示出了现有技术中的Heuristic Discard方式处理游戏场景生成的示意图,图2e(2)示出了利用本申请实施例提供的方法处理游戏场景生成的示意图。经对比可知,本申请实施例提供的方法可以减少在三角形内部或边界的顶点交汇处产生噪点。本申请实施例提供的方法可以先根据预先设置的标记,将待处理模型划分为遮挡体和被遮挡体。遮挡体包括多个三角形,每个三角形均有自身对应的深度值。对于预设的像素集合区域,可以按照深度值所反映出的距离从近到远的顺序,向像素集合区域内填充三角形,直到像素集合区域被填充满或所述像素集合区域内无后续的三角形用于填充,并根据像素集合区域被填充满时或所述像素集合区域内无后续的三角形用于填充时,三角形的深度值,确定像素集合区域的深度值。对于每个被遮挡体,确定每个被遮挡体的包围盒,并确定包围盒的深度值。根据像素集合区域的深度值与包围盒的深度值,可以确定被遮挡体的模型状态。在本申请实施例中,像素集合区域仅使用一个深度值进行表示,利用像素集合区域的深度值与被遮挡体的包围盒的深度值比较便可以获取到被遮挡体的模型状态,然后根据具体的模型状态决定是否需要对被遮挡体进行渲染。与现有技术依据每个像素点与视点的远近程度确定遮挡关系相比,减少了计算资源的消耗。

为了更好地实施以上方法,本申请实施例还提供一种遮挡剔除实现装置,该遮挡剔除实现装置具体可以集成在电子设备中,该电子设备可以为终端、服务器等设备。其中,终端可以为手机、平板电脑、智能蓝牙设备、笔记本电脑、个人电脑等设备;服务器可以是单一服务器,也可以是由多个服务器组成的服务器集群。例如,如图3所示,该遮挡剔除实现装置可以包括:

模型划分模块301,用于根据预先设置的标记,将待处理模型划分为遮挡体和被遮挡体,所述遮挡体包括多个三角形,每个所述三角形有自身对应的深度值,所述深度值反映对应的三角形与视点之间的距离远近程度。

三角形填充模块302,用于对于画面中预设的像素集合区域,按照深度值所反映出的距离从近到远的顺序,向所述像素集合区域内投影填充所述三角形,直到所述像素集合区域被填充满或所述像素集合区域内无后续的三角形用于填充。

深度值确定模块303,用于根据所述像素集合区域被填充满时,或所述像素集合区域内无后续的三角形用于填充时,所述三角形的深度值,确定所述像素集合区域的深度值。

包围盒确定模块304,用于确定每个被遮挡体的包围盒,并确定所述包围盒的深度值,所述包围盒为包裹对应的被遮挡体的规则立方体。

遮挡状态确定模块305,用于根据每个所述像素集合区域的深度值与目标深度值之间的数值差距,确定所述被遮挡体的模型状态,所述目标深度值是在所述像素集合区域对应范围内的包围盒的深度值。

模型渲染模块306,用于当所述被遮挡体的模型状态为未被遮挡的状态时,渲染所述被遮挡体。

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

像素点深度值确定模块,用于对于每个所述三角形包括的多个像素点,确定每个像素点对应的深度值,其中,所述深度值反映对应的像素点与视点之间的距离远近程度;

深度值设定模块,用于将深度值反映距离最远的像素点的深度值作为该三角形的深度值。

可选地,三角形填充模块302,包括:

子画面划分子模块,用于将画面划分为多个子画面;

深度值排序子模块,用于对于多个子画面中的每个子画面,将每个所述子画面中的三角形按照深度值所反映出的距离从近到远的顺序进行排序;

像素集合填充子模块,用于对于每个所述子画面中的每个像素集合区域,按照深度值所反映出的距离从近到远的顺序,向所述像素集合区域内投影填充所述三角形,直到所述像素集合区域被填充满或所述像素集合区域内无后续的三角形用于填充。

可选地,所述三角形填充模块302,还可以包括:

顶点排序子模块,用于对于每个所述三角形,按照三角形的顶点纵坐标从小到大的顺序,对所述三角形的三个顶点进行排序;

三角形分割子模块,用于以纵坐标为中间值的顶点所在的与横坐标平行的直线,对所述三角形进行分割,得到两个子三角形,其中,所述纵坐标为中间值的顶点所在的与横坐标平行的直线为两个子三角形的公共边;

像素点计算子模块,用于对于每个所述子三角形,计算除所述公共边以外的两条边覆盖的像素点;

像素点填充子模块,用于将除所述公共边以外的两条边覆盖的像素点、以及每个所述子三角形三条边围起来的像素点填充为数值1。

可选地,深度值确定模块303,具体用于获取所述像素集合区域被填充满时或所述像素集合区域内无后续的三角形用于填充时,所述像素集合区域内表示距离最远的三角形的深度值,并将其作为所述像素集合区域的深度值。

可选地,包围盒确定模块304,还包括:

顶点计算子模块,用于计算每个所述被遮挡体的包围盒的多个顶点;

深度值确定子模块,用于确定多个顶点中的每个顶点的深度值,将距离视点最近的顶点的深度值作为所述包围盒的深度值。

可选地,顶点计算子模块,具体用于将所述包围盒的多个顶点中的任一顶点从局部空间转换至屏幕空间;

根据转换至屏幕空间的顶点的坐标值、包围盒的边长值,计算所述包围盒的其他顶点在所述屏幕空间的坐标值。

可选地,遮挡状态确定模块305,具体用于当所述像素集合区域的深度值所反映的距离比在所述像素集合区域内的被遮挡体的包围盒的深度值所反映的距离更近时,确定所述被遮挡体被遮挡;当所述像素集合区域的深度值所反映的距离比在所述像素集合区域内的被遮挡体的包围盒的深度值所反映的距离更远时,确定所述被遮挡体未被遮挡。

具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。

由此,本申请实施例可以先根据预先设置的标记,将待处理模型划分为遮挡体和被遮挡体。遮挡体包括多个三角形,每个三角形均有自身对应的深度值。对于预设的像素集合区域,可以按照深度值所反映出的距离从近到远的顺序,向像素集合区域内填充三角形,直到像素集合区域被填充满或所述像素集合区域内无后续的三角形用于填充,并根据像素集合区域被填充满时或所述像素集合区域内无后续的三角形用于填充时,三角形的深度值,确定像素集合区域的深度值。对于每个被遮挡体,确定每个被遮挡体的包围盒,并确定包围盒的深度值。根据像素集合区域的深度值与包围盒的深度值,可以确定被遮挡体的模型状态。在本申请实施例中,像素集合区域仅使用一个深度值进行表示,利用像素集合区域的深度值与被遮挡体的包围盒的深度值比较便可以获取到被遮挡体的模型状态,然后根据具体的模型状态决定是否需要对被遮挡体进行渲染。与现有技术依据每个像素点与视点的远近程度确定遮挡关系相比,减少了计算资源的消耗。

相应的,本申请实施例还提供一种计算机设备,该计算机设备可以为终端或服务器,该终端可以为智能手机、平板电脑、笔记本电脑、触控屏幕、游戏机、个人计算机、个人数字助理(Personal Digital Assistant,PDA)等终端设备。

如图4所示,图4为本申请实施例提供的计算机设备的结构示意图,该计算机设备400包括有一个或者一个以上处理核心的处理器401、有一个或一个以上计算机可读存储介质的存储器402及存储在存储器402上并可在处理器上运行的计算机程序。其中,处理器401与存储器402电性连接。本领域技术人员可以理解,图中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

处理器401是计算机设备400的控制中心,利用各种接口和线路连接整个计算机设备400的各个部分,通过运行或加载存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行计算机设备400的各种功能和处理数据,从而对计算机设备400进行整体监控。

在本申请实施例中,计算机设备400中的处理器401会按照如下的步骤,将一个或一个以上的应用程序的进程对应的指令加载到存储器402中,并由处理器401来运行存储在存储器402中的应用程序,从而实现各种功能:

根据预先设置的标记,将待处理模型划分为遮挡体和被遮挡体,所述遮挡体包括多个三角形,每个所述三角形有自身对应的深度值,所述深度值反映对应的三角形与视点之间的距离远近程度;对于画面中预设的像素集合区域,按照深度值所反映出的距离从近到远的顺序,向所述像素集合区域内投影填充所述三角形,直到所述像素集合区域被填充满或所述像素集合区域内无后续的三角形用于填充;根据所述像素集合区域被填充满时,或所述像素集合区域内无后续的三角形用于填充时,所述三角形的深度值,确定所述像素集合区域的深度值;确定每个被遮挡体的包围盒,并确定所述包围盒的深度值,所述包围盒为包裹对应的被遮挡体的规则立方体;根据每个所述像素集合区域的深度值与目标深度值之间的数值差距,确定所述被遮挡体的模型状态,所述目标深度值是在所述像素集合区域对应范围内的包围盒的深度值;若所述被遮挡体的模型状态为未被遮挡的状态,则渲染所述被遮挡体。

以上各个操作的具体实施可参见前面的实施例,在此不再赘述。

可选的,如图4所示,计算机设备400还包括:触控显示屏403、射频电路404、音频电路405、输入单元406以及电源407。其中,处理器401分别与触控显示屏403、射频电路404、音频电路405、输入单元406以及电源407电性连接。本领域技术人员可以理解,图4中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

触控显示屏403可用于显示图形用户界面以及接收用户作用于图形用户界面产生的操作指令。触控显示屏403可以包括显示面板和触控面板。其中,显示面板可用于显示由用户输入的信息或提供给用户的信息以及计算机设备的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。可选的,可以采用液晶显示器(LCD,Liquid Crystal Display)、有机发光二极管(OLED,Organic Light-EmittingDiode)等形式来配置显示面板。触控面板可用于收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板上或在触控面板附近的操作),并生成相应的操作指令,且操作指令执行对应程序。可选的,触控面板可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器401,并能接收处理器401发来的命令并加以执行。触控面板可覆盖显示面板,当触控面板检测到在其上或附近的触摸操作后,传送给处理器401以确定触摸事件的类型,随后处理器401根据触摸事件的类型在显示面板上提供相应的视觉输出。在本申请实施例中,可以将触控面板与显示面板集成到触控显示屏403而实现输入和输出功能。但是在某些实施例中,触控面板与触控面板可以作为两个独立的部件来实现输入和输出功能。即触控显示屏403也可以作为输入单元406的一部分实现输入功能。

射频电路404可用于收发射频信号,以通过无线通信与网络设备或其他计算机设备建立无线通讯,与网络设备或其他计算机设备之间收发信号。

音频电路405可以用于通过扬声器、传声器提供用户与计算机设备之间的音频接口。音频电路405可将接收到的音频数据转换后的电信号,传输到扬声器,由扬声器转换为声音信号输出;另一方面,传声器将收集的声音信号转换为电信号,由音频电路405接收后转换为音频数据,再将音频数据输出处理器401处理后,经射频电路404以发送给比如另一计算机设备,或者将音频数据输出至存储器402以便进一步处理。音频电路405还可能包括耳塞插孔,以提供外设耳机与计算机设备的通信。

输入单元406可用于接收输入的数字、字符信息或用户特征信息(例如指纹、虹膜、面部信息等),以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。

电源407用于给计算机设备400的各个部件供电。可选的,电源407可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源407还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。

尽管图4中未示出,计算机设备400还可以包括摄像头、传感器、无线保真模块、蓝牙模块等,在此不再赘述。

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

由上可知,本实施例提供的计算机设备可以先根据预先设置的标记,将待处理模型划分为遮挡体和被遮挡体。遮挡体包括多个三角形,每个三角形均有自身对应的深度值。对于预设的像素集合区域,可以按照深度值所反映出的距离从近到远的顺序,向像素集合区域内填充三角形,直到像素集合区域被填充满或所述像素集合区域内无后续的三角形用于填充,并根据像素集合区域被填充满时或所述像素集合区域内无后续的三角形用于填充时,三角形的深度值,确定像素集合区域的深度值。对于每个被遮挡体,确定每个被遮挡体的包围盒,并确定包围盒的深度值。根据像素集合区域的深度值与包围盒的深度值,可以确定被遮挡体的模型状态。在本申请实施例中,像素集合区域仅使用一个深度值进行表示,利用像素集合区域的深度值与被遮挡体的包围盒的深度值比较便可以获取到被遮挡体的模型状态,然后根据具体的模型状态决定是否需要对被遮挡体进行渲染。与现有技术依据每个像素点与视点的远近程度确定遮挡关系相比,减少了计算资源的消耗。

请参见图5a,图5a示出了游戏运行时间与帧率的关系图,其中,横坐标为游戏运行时间,纵坐标为帧率,带点曲线为开启本申请实施例提供的方法的帧率曲线,未带点曲线为未开启本申请实施例提供的方法的帧率曲线。由图5a可以看出,开启本申请实施例提供的方法后帧率明显提高。

请参见图5b,图5b示出了游戏运行时间与Draw Calls的关系图,其中,横坐标为游戏运行时间,纵坐标为Draw Calls,带点曲线为开启本申请实施例提供的方法的DrawCalls曲线,未带点曲线为未开启本申请实施例提供的方法的Draw Calls曲线。由图5b可以看出,开启本申请实施例提供的方法后Draw Calls明显减少。

请参见图5c,图5c示出了游戏运行时间与三角形绘制数量的关系图,其中,横坐标为游戏运行时间,纵坐标为三角形绘制数量,带点曲线为开启本申请实施例提供的方法的三角形绘制数量曲线,未带点曲线为未开启本申请实施例提供的方法的三角形绘制数量曲线。由图5b可以看出,开启本申请实施例提供的方法后三角形绘制数量明显减少。

请参见图5d,图5d示出了系统级芯片(System on Chip,简称SOC)的处理时间的变化图,由图5d可知,SOC的处理时间平均为0.5ms,且趋势较为稳定。请参见图5e,图5e示出了SOC的剔除率变化图,由图5e可知,剔除率平均为73.7%,剔除率较高。

本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。

为此,本申请实施例提供一种计算机可读存储介质,其中存储有多条计算机程序,该计算机程序能够被处理器进行加载,以执行本申请实施例所提供的任一种遮挡剔除实现方法中的步骤。例如,该计算机程序可以执行如下步骤:对于参与同一场局部对战的多个同盟虚拟角色中的每个同盟虚拟角色,获取所述每个同盟虚拟角色之间的距离;根据所述每个同盟虚拟角色之间的距离,将参与所述局部对战的多个同盟虚拟角色划分成至少一个协作分组;对于每个所述协作分组,遍历所述协作分组中同盟虚拟角色的对战视角画面,选中呈现目标对象最多的对战视角画面作为所述协作分组的代表视角画面;展示多个所述代表视角画面。

以上各个操作的具体实施可参见前面的实施例,在此不再赘述。

其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。

由于该存储介质中所存储的计算机程序,可以执行本申请实施例所提供的任一种遮挡剔除实现方法中的步骤,因此,可以实现本申请实施例所提供的任一种遮挡剔除实现方法所能实现的有益效果,详见前面的实施例,在此不再赘述。

以上对本申请实施例所提供的一种遮挡剔除实现方法、装置、存储介质及计算机设备进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

相关技术
  • 遮挡剔除实现方法、装置、计算机设备及存储介质
  • 遮挡剔除方法、装置及计算机设备
技术分类

06120113801624