游戏中的光照采样方法、装置以及计算机设备与流程

文档序号:22468591发布日期:2020-10-09 21:54阅读:270来源:国知局
游戏中的光照采样方法、装置以及计算机设备与流程

本申请涉及游戏技术领域,尤其是涉及一种游戏中的光照采样方法、装置以及计算机设备。



背景技术:

在游戏场景中,光照信息是光线第一次碰到物体或碰到物体后反弹所产生的光照效果。目前,利用光照采样点可以采集和存储某个位置或某个区域的光照信息。通过多个光照采样点组成的集合可以广泛的采集和储存整个游戏场景空间中光照信息。

但是,在光照采样点生成过程中,通常会在距离虚拟模型较远处的空白区域处生成大量无用的光照采样点,这些无用的光照采样点导致光照运算资源的浪费。



技术实现要素:

本发明的目的在于提供一种游戏中的光照采样方法、装置以及计算机设备,以缓解无用的光照采样点导致光照运算资源产生浪费的技术问题。

第一方面,本申请实施例提供了一种游戏中的光照采样方法,通过终端设备提供图形用户界面,所述图形用户界面中包含部分游戏场景,所述游戏场景中包含至少一虚拟模型,所述方法包括:

在所述游戏场景中,确定与所述虚拟模型表面的空间距离最近的目标空间,在所述目标空间中确定与所述虚拟模型表面的空间距离在第一预设空间距离范围内的目标空间位置;

在所述目标空间位置处生成第一光照采样点;

基于所述第一光照采样点计算所述目标空间位置处的光照值。

在一个可能的实现中,所述在所述游戏场景中,确定与所述虚拟模型表面的空间距离最近的目标空间的步骤,包括:

在所述游戏场景中生成距离场(signed-distance-field,sdf),根据所述sdf确定空间位置到所述虚拟模型表面的最近距离;每个所述空间位置对应一个所述sdf;

根据所述最近距离确定所述目标空间。

在一个可能的实现中,还包括:

将所述目标空间位置对应的所述sdf记录于对应的所述第一光照采样点的变量中。

在一个可能的实现中,所述第一光照采样点的数量为多个;所述基于所述第一光照采样点计算所述目标空间位置处的光照值的步骤,包括:

从多个所述第一光照采样点中,确定所述目标空间位置对应的所述sdf在第二预设空间距离范围内的目标sdf对应的第二光照采样点;

基于所述第二光照采样点计算所述目标空间位置处的光照值。

在一个可能的实现中,所述第二预设空间距离范围通过偏差参数和幅度参数表示;所述方法还包括:

基于所述幅度参数和所述偏差参数调整所述第二预设空间距离范围。

在一个可能的实现中,所述基于所述第二光照采样点计算所述目标空间位置处的光照值的步骤,包括:

根据待显示的所述游戏场景的画面,确定需要计算光照值的场景划定范围;

从多个所述第二光照采样点中选择处于所述场景划定范围内的第三光照采样点;

基于所述第三光照采样点计算所述目标空间位置处的光照值。

在一个可能的实现中,所述场景划定范围为需要计算光照值的几何体形状的场景结构。

在一个可能的实现中,所述基于所述第三光照采样点计算所述目标空间位置处的光照值的步骤,包括:

将相互距离小于预设距离值的多个所述第三光照采样点进行合并,得到相互距离大于或等于所述预设距离值的多个第四光照采样点;

基于所述第四光照采样点计算所述目标空间位置处的光照值。

在一个可能的实现中,所述将相互距离小于预设距离值的多个所述第三光照采样点进行合并的步骤,包括:

多次循环执行以下步骤,直至所有的所述第三光照采样点之间的相互距离大于或等于所述预设距离值:

检测多个所述第三光照采样点之间的相互距离;

将相互距离小于所述预设距离值的多个所述第三光照采样点进行合并。

在一个可能的实现中,所述将相互距离小于所述预设距离值的多个所述第三光照采样点进行合并的步骤,包括:

从相互距离小于所述预设距离值的多个所述第三光照采样点中,随机保留一个所述第三光照采样点。

在一个可能的实现中,所述基于所述第四光照采样点计算所述目标空间位置处的光照值的步骤,包括:

基于预设光照采样点数量对多个所述第四光照采样点进行随机删除,得到光照采样点数量小于所述预设光照采样点数量的第五光照采样点;

计算所述游戏场景中所有光源在所述第五光照采样点的位置所产生光照的光照值;所述光照值包括所述虚拟模型所产生间接光照的光照值。

在一个可能的实现中,所述基于预设光照采样点数量对多个所述第四光照采样点进行随机删除的步骤,包括:

对多个所述第四光照采样点进行序号随机分配,得到多个采样点序号;

从多个所述第四光照采样点中,删除序号值大于预设序号值的所述采样点序号对应的第四光照采样点;所述预设序号值与所述预设光照采样点数量相同。

在一个可能的实现中,所述方法还包括:

基于所述目标空间位置处的光照值在所述图形用户界面中显示所述游戏场景的画面。

第二方面,提供了一种游戏中的光照采样装置,通过终端设备提供图形用户界面,所述图形用户界面中包含部分游戏场景,所述游戏场景中包含至少一虚拟模型,所述装置包括:

确定模块,用于在所述游戏场景中,确定与所述虚拟模型表面的空间距离最近的目标空间,在所述目标空间中确定与所述虚拟模型表面的空间距离在第一预设空间距离范围内的目标空间位置;

生成模块,用于在所述目标空间位置处生成第一光照采样点;

计算模块,用于基于所述第一光照采样点计算所述目标空间位置处的光照值。

第三方面,本申请实施例又提供了一种计算机设备,包括存储器、处理器,所述存储器中存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的第一方面所述方法。

第四方面,本申请实施例又提供了一种计算机可读存储介质,所述计算机可读存储介质存储有机器可运行指令,所述计算机可运行指令在被处理器调用和运行时,所述计算机可运行指令促使所述处理器运行上述的第一方面所述方法。

本申请实施例带来了以下有益效果:

本申请实施例提供的一游戏中的光照采样方法、装置以及计算机设备,能够在游戏场景中确定与虚拟模型表面的空间距离最近的目标空间,在目标空间中确定与虚拟模型表面的空间距离在第一预设空间距离范围内的目标空间位置,之后在目标空间位置处生成第一光照采样点,然后,基于第一光照采样点计算目标空间位置处的光照值,本方案中,通过只在与虚拟模型表面最近的目标空间中且距离虚拟模型表面在一定空间距离范围内的目标空间位置处生成光照采样点,使生成光照采样点的目标空间位置靠近虚拟模型,避免在远离虚拟模型的空白空间生成光照采样点,实现了根据游戏场景中虚拟模型的分布情况生成位置更加优化的光照采样点,避免在距离虚拟模型较远处的空白区域处生成无用的光照采样点而产生运算资源浪费的情况。

为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

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

图1为现有的光照探针点云结构的一个示例;

图2为现有的光照探针点云结构的另一个示例;

图3为通过现有方法生成的光照探针点云分布情况的一个示例;

图4为通过现有方法生成的光照探针点云分布情况的另一个示例;

图5为本申请实施例提供的游戏中的光照采样方法的流程示意图;

图6为本申请实施例提供的游戏场景的示意图;

图7为本申请实施例提供的游戏场景中虚拟模型的示意图;

图8为本申请实施例提供的场景模型划定范围的示意图;

图9为本申请实施例提供的场景模型划定范围的另一示意图;

图10为删除场景模型划定范围外光照采样点之前的所有第二光照采样点的示意图;

图11为删除场景模型划定范围外光照采样点之后筛选出的第三光照采样点的示意图;

图12为根据规定的最小间距合并之后的较为理想的点云分布示意图;

图13为限定光照采样点数量上限后的光照采样点分布情况示意图;

图14为通过目前现有技术方法生成的光照采样点分布情况示意图;

图15为通过本申请实施例提供的游戏中的光照采样方法生成的光照采样点分布情况示意图;

图16为限定光照采样点的最大数量后生成的光照采样点分布情况示意图;

图17为本申请实施例提供的一种游戏中的光照采样装置的结构示意图;

图18为示出了本申请实施例所提供的一种计算机设备的结构示意图。

具体实施方式

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

本申请实施例中所提到的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括其他没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。

在游戏场景中,间接光照是指光线碰到物体后反弹所产生的光照效果。不同于光线第一次碰到物体产生光照效果的直接光照,间接光照需要计算光线在游戏场景中进行若干次反弹所产生的光照效果。

目前,在计算机图形学中计算间接光照明是一个运算量很大的过程。因为需要求解上百万光线在游戏场景中多次反弹所产生的光照效果。这个运算量对于一般家用电脑或手机的运算性能是很大的,难以做到实时渲染,即1秒24帧以上。

为了解决该问题,在游戏开发中,开发人员会把游戏场景中提前渲染好的间接光照保存下来,这样在游戏运行时去实时的读取间接光照结果,而不是实施的运算简介光照,以此来降低终端运算量。

对于现有技术,光照探针(lightprobe)可以用来采集和存储某个位置或某个区域的光照信息。通过生成lightprobe点云可以广泛的采集和储存整个场景空间中光照。其中,点云指的是多个lightprobe点组成的集合,每个点上会记录计算用的数据。

常见的光照计算可以使用sh光照,或者ibl两种技术。其中,sh光照指的是利用球谐函数特性,将环境光照编码的一种技术实现方式。ibl指的是基于图片的光照技术。

如图1和2所示,多个lightprobe点用于采集简介光。因为在游戏场景中并不是所有的位置都需要采集光照,所以如何生成lightprobe点云是值得优化的方向。

目前,unity和ue4两款游戏引擎中都有自动生成lightprobe点的功能,也都采用均匀分部的方案。如图3所示,在游戏场景中均匀的摆放lightprobe点,如每2米放置一个点,形成一个立方体点阵。游戏引擎可以求解每一个lightprobe点的光照数据,实现环境光照数据的存储。

但是,空间均匀分布lightprobe点的方式会产生大量的无用lightprob点,以及错误的lightprob点,从而导致运算资源浪费。例如,如图4所示,黑色的点为lightprob点与墙体穿插导致计算错误的点,这属于常见的lightprobe错误。

由于均匀分部的lightprobe点难免会和游戏场景中的墙体等虚拟模型穿插,例如出现在墙体的内部,这些错误的lightprobe无法采集光照信息,导致光照运算资源的浪费。再者,在游戏场景中不同区域需要的lightprobe点密度也不一样。例如,较为开阔的广场上不同位置的光照效果差不多,不需要太高密度的lightprobe点,而拥挤的小巷中,由于建筑的遮挡等因素,不同位置的光照效果差距很大,则需要高密度的lightprobe点。也可以理解为,在游戏场景中,有些区域内没有虚拟模型,是空旷的空间,这个区域不需要高密度的lightprobe点,甚至没有必要放置lightprobe点。

目前现有技术中使用uniformlightprobeplacement方案来生成lightprobe点。如图4所示,可以看到lightprobe点云和虚拟模型有明显穿插问题,也在没有模型的空白区域处生成了大量的无用点,导致生成结果的lightprobe点数量较多,需要消耗较大的计算量和储存量。

基于此,本申请实施例提供了一种游戏中的光照采样方法、装置以及计算机设备,通过该方法可以缓解无用的光照采样点导致光照运算资源产生浪费的技术问题。

下面结合附图对本发明实施例进行进一步地介绍。

图5为本申请实施例提供的一种游戏中的光照采样方法的流程示意图。通过终端设备提供图形用户界面,图形用户界面中包含部分游戏场景,游戏场景中包含至少一虚拟模型。如图5所示,该方法包括:

步骤s510,在游戏场景中,确定与虚拟模型表面的空间距离最近的目标空间,在目标空间中确定与虚拟模型表面的空间距离在第一预设空间距离范围内的目标空间位置。

在实际应用中,可以利用三维软件确定本步骤中的游戏场景,在三维软件中导入游戏场景,例如,在三维软件中导入如图6所示的游戏场景。

需要说明的是,虚拟模型可以为游戏场景中墙体等静止不动的静态物体,也可以为游戏场景中人、动物等能够活动的动态物体。例如,虚拟模型为如图7所示的静态物体。

第一预设空间距离范围可以为任意的空间距离,例如,0至2米的空间距离范围,与虚拟模型表面的空间距离在第一预设空间距离范围内的目标空间位置可以为图7中包围静态物体表面的部分。

步骤s520,在目标空间位置处生成第一光照采样点。

其中,第一光照采样点可以用于采集虚拟模型产生的间接光照的准确位置点。本步骤中,将步骤s510中确定出的目标空间位置处的位置点作为第一光照采样点。

步骤s530,基于第一光照采样点计算目标空间位置处的光照值。

本步骤中,在完成多个光照采样点(点云)的分布生成后,可以基于这些光照采样点计算目标空间位置处的光照值,使显示出的游戏场景画面中的光照更加真实逼真。

通过只在与虚拟模型表面最近的目标空间中且距离虚拟模型表面在一定空间距离范围内的目标空间位置处生成光照采样点,使生成光照采样点的目标空间位置靠近虚拟模型,避免在远离虚拟模型的空白空间生成光照采样点,实现了根据游戏场景中虚拟模型的分布情况生成位置更加优化的光照采样点,避免在距离虚拟模型较远处的空白区域处生成无用的光照采样点而产生运算资源浪费的情况。再者,对于本申请实施例中的这个虚拟模型,通过只在与该虚拟模型表面距离处于一定预设空间距离范围内的目标空间位置处生成光照采样点,使生成的光照采样点不会和该虚拟模型穿插,实现了根据游戏场景的模型中虚拟模型的分布情况生成位置更加优化的光照采样点,避免生成的光照采样点与该虚拟模型穿插以及存在于该虚拟模型内部的错误情况。

下面对上述步骤进行详细介绍。

在一些实施例中,上述步骤s510可以包括如下步骤:

步骤a),在游戏场景中生成距离场sdf,根据sdf确定空间位置到虚拟模型表面的最近距离;根据最近距离确定目标空间。

其中,每个空间位置对应一个sdf。需要说明的是,sdf用于记录空间位置到虚拟模型表面的最近距离,若在虚拟模型外部则用正数表示,若在虚拟模型内部则用负数表示。在实际应用中,可以利用vdb等工具生成游戏场景中的sdf,通过该工具将游戏场景中的空间位置转化为sdf。在vdb工具的使用过程中,可以根据精度需要调整体素大小(voxelsize)的参数,勾选useworldspaceforband,将exteriorband参数设置为2,从而使vdb工具在距离虚拟模型表面0至2米以内的范围生成sdf。

如图7所示,将生成的sdf进行空间切面可视化,可以看出,曲线之外的深灰色区域表示该区域中的空间位置距离物体表面之间的距离超过了2米。在曲线形成的0至2米的范围内,距离虚拟模型越近的位置sdf数值越小。

本申请实施例中,对于空间位置到虚拟模型表面的最近距离的确定过程,通常可以是从得到的该空间位置与每个虚拟模型表面的距离中筛选一个最小的距离。

通过计算生成游戏场景的sdf,来记录空间位置距离虚拟模型表面的最近距离,以此对应各个空间位置,可以使空间位置与虚拟模型之间的相对位置距离更加精确。

基于上述步骤a),可以将计算出的sdf存储于光照采样点的变量中,以使sdf与光照采样点之间的对应关系准确且易于查找。作为一个示例,该方法还可以包括以下步骤:

步骤b),将目标空间位置对应的sdf记录于对应的第一光照采样点的变量中。

在实际应用中,可以利用工具vdbvisualizetree记录光照采样点对应的sdf数值。示例性的,勾选该工具中的pointswithvalues,可将sdf数值记录在光照采样点的变量vdb_float中。

通过将计算出的sdf存储于光照采样点的变量中,可以使sdf与光照采样点之间的对应关系更加准确,而且易于查找sdf数值。

基于上述步骤a),可以利用sdf从多个第一光照采样点中筛选出与虚拟模型表面最短距离在特定范围内的光照采样点。作为一个示例,第一光照采样点的数量为多个;上述步骤s530可以包括如下步骤:

步骤c),从多个第一光照采样点中,确定目标空间位置对应的sdf在第二预设空间距离范围内的目标sdf对应的第二光照采样点;

步骤d),基于第二光照采样点计算目标空间位置处的光照值。

例如,利用sdf能够从多个第一光照采样点中,筛选出距离虚拟模型表面最短距离在1米至1.5米的所有光照采样点。

通过利用目标空间位置对应的sdf从多个第一光照采样点中筛选出与虚拟模型表面最短距离在特定范围(第二预设空间距离范围)内的光照采样点,以基于其与虚拟模型表面的距离来对第一光照采样点进行更加精细的筛选。

基于上述步骤c)和步骤d),可以通过偏差参数和幅度参数来表示预设距离场范围,以使该距离场范围便于调整。作为一个示例,第二预设空间距离范围通过偏差参数和幅度参数表示;该方法还可以包括以下步骤:

基于幅度参数和偏差参数调整第二预设空间距离范围。

示例性的,可以定义两个参数偏差参数bias和幅度参数width,使bias为1且width为0.5,删除距离大于bias+width(1+0.5)的点,以及删除距离小于bias(1)的点,从而实现删除距离虚拟模型表面小于1的点(vdb_float<1)和大于1.5的点(vdb_float>1.5)。这种筛选条件的代码可以为:

if(@vdb_float<ch("bias")){removepoint(0,@ptnum);};

if(@vdb_float>ch("bias")+ch("width")){removepoint(0,@ptnum);}。

通过设置参数而不直接使用常量1和1.5,可以为后续再次调整筛选范围而提供方便。

基于上述步骤c)和步骤d),可以仅对某个场景模型划定范围内的光照采样点进行计算,以减小光照值的计算量。作为一个示例,上述步骤d)可以包括如下步骤:

步骤e),根据待显示的游戏场景的画面,确定需要计算光照值的场景划定范围;

步骤f),从多个第二光照采样点中选择处于场景划定范围内的第三光照采样点;

步骤g),基于第三光照采样点计算目标空间位置处的光照值。

对于上述步骤e),可以划定光照采样点的场景范围。如图8和图9所示,条格之内的范围为需要计算间接光照的场景模型划定范围,条格之外的范围为不需要计算间接光照的场景模型范围。

对于上述步骤f),可以检测所有第二光照采样点是否在规定的生成范围内,即步骤e)中的场景模型划定范围内,删除场景模型划定范围之外的第二光照采样点,仅保留场景模型划定范围之内的第二光照采样点。示例性的,可以利用group对所有第二光照采样点进行分组,将处于场景模型划定范围之内的第二光照采样点放入inscene组中,采用blast删除不在inscene组中的其他点。

通过从多个第二光照采样点中筛选出需要计算间接光照的场景模型划定范围内的光照采样点,仅对某个场景模型划定范围内的光照采样点进行计算,能够大幅度减少需要计算间接光照的光照采样点数量,减小光照值的计算量。

基于上述步骤e),可以利用几何体形状来规定场景模型划定范围,以使场景模型划定范围的边界线更加明确。作为一个示例,场景划定范围为需要计算光照值的几何体形状的场景结构。

示例性的,如图8和图9所示,用于划定场景模型划定范围的几何体为条格画出的圆柱体形状。其中,圆柱体表示场景模型划定范围,即需要计算间接光照值的第三光照采样点。圆柱体涵盖了场景室内可行走的范围,表示室内部分的光照采样点需要计算间接光照值。

对于光照采样点的筛选过程,可以利用group对所有第二光照采样点进行分组,将处于圆柱体内的光照采样点放入inscene组中,采用blast删除不在inscene组中的其他光照采样点。

如图10和11所示,图10为删除场景模型划定范围外光照采样点之前的所有第二光照采样点的示意图,图11为删除场景模型划定范围外光照采样点之后的筛选出的第三光照采样点的示意图。

通过创建或导入几何体来规定场景模型划定范围,能够使场景模型划定范围的边界线更加明确,以提高第三光照采样点确定过程的准确性。

基于上述步骤e)、步骤f)和步骤g),可以按照规定的距离合并距离相近的光照采样点,得到更加优化的光照采样点云分布。作为一个示例,上述步骤g)可以包括如下步骤:

步骤h),将相互距离小于预设距离值的多个第三光照采样点进行合并,得到相互距离大于或等于预设距离值的多个第四光照采样点;

步骤i),基于第四光照采样点计算目标空间位置处的光照值。

对于上述步骤h),按规定的最小间距(即预设距离值)合并距离较近的点,这样可以得到一个光照采样点的集合,使其中每个光照采样点之间的相互距离都不小于规定的最小间距。示例性的,最小间距可以为4.99,利用houdinifuse工具可以合并相互间距离小于4.99米的光照采样点,采用参数snapdistance表示合并距离。

例如,图12为根据规定的最小间距合并之后的较为理想的点云分布示意图,其中的点为相互距离大于或等于最小间距(即预设距离值)的第四光照采样点。

通过按照规定的最小间距合并距离相近的光照采样点,能够得到更加优化的光照采样点云分布。

基于上述步骤h)、步骤i),可以循环多次的第三光照采样点合并过程,以保证合并后的结果符合规定的最小间距。作为一个示例,上述步骤h)可以包括:多次循环执行以下步骤,直至所有的第三光照采样点之间的相互距离大于或等于预设距离值:

步骤j),检测多个第三光照采样点之间的相互距离;

步骤k),将相互距离小于预设距离值的多个第三光照采样点进行合并。

对于上述步骤j)和步骤k),重复执行这些步骤直到合并结果稳定。示例性的,循环次数可以为3次。例如,对于379个第三光照采样点,采用fuse节点来合并间距小于4.99的点,使用foreach_begin和foreach_end来构建循环体,设置循环次数为3,将fuse节点置于其中,使其重复执行3次。

通过循环多次的第三光照采样点合并过程,能够保证合并后的结果符合规定的最小间距。

基于上述步骤j)和步骤k),可以通过保留一个已存在的第三光照采样点的方式来实现第三光照采样点的合并动作,以避免光照采样点存在或穿插于虚拟模型中。作为一个示例,上述步骤k)可以包括如下步骤:

步骤m),从相互距离小于预设距离值的多个第三光照采样点中,随机保留一个第三光照采样点。

对于多个第三光照采样点的具体合并方式,可以是随机保留其中的某一个第三光照采样点,而不是在待合并的多个第三光照采样点中,居中位置生成新的光照采样点,因为新生成的点光照采样点可能会在强墙体等虚拟模型内部或穿插在墙体等虚拟模型中,导致又降低了光照采样点准确性。

通过从已存在的第三光照采样点中随机保留一个光照采样点的方式,来实现对多个第三光照采样点的合并动作,能够避免光照采样点存在或穿插于虚拟模型中,以保证光照采样点的准确性。

基于上述步骤h)和步骤i),可以对光照采样点的数量设置上限,以使生成的光照采样点的数量上限可控,从而达到对存储和计算的消耗可控。作为一个示例,上述步骤i)可以包括如下步骤:

步骤n),基于预设光照采样点数量对多个第四光照采样点进行随机删除,得到光照采样点数量小于预设光照采样点数量的第五光照采样点;

步骤o),计算游戏场景中所有光源在第五光照采样点的位置所产生光照的光照值;光照值包括虚拟模型所产生间接光照的光照值。

对于上述步骤n),可以根据设定的光照采样点数量上限,随机删除多余的第四光照采样点。例如,可以设定光照采样点数量上限为256个,以保证计算光照值的光照采样点数量不多于256个。图13为限定光照采样点数量上限后的光照采样点分布情况示意图。

对于上述步骤o),在完成多个光照采样点的分布生成后,可以主要计算虚拟模型在全部或部分的这些光照采样点处产生的间接光照的光照值。

通过基于预设光照采样点数量对多个第四光照采样点进行随机删除,实现了对光照采样点数量上限的设置,限定了生成点云的最大数量,达到对存储和计算的消耗可控,保证了内存和运算效率符合预期。

基于上述步骤n)和步骤o),可以利用分配的序号来随机删除第四光照采样点。作为一个示例,上述步骤n)可以包括如下步骤:

步骤p),对多个第四光照采样点进行序号随机分配,得到多个采样点序号;

步骤q),从多个第四光照采样点中,删除序号值大于预设序号值的采样点序号对应的第四光照采样点。

预设序号值与预设光照采样点数量相同。

对于上述步骤p),每一个第四光照采样点都对应有一个随机的序号。示例性的,可以利用sort节点来随机化光照采样点的顺序。例如,总共有100个第四光照采样点,它们的序号则为0到99。

对于上述步骤q),为了实现从n个点中随机删除m个点,在随机排列光照采样点的序号后,删除序号大于等于m的光照采样点。示例性的,可以创建sort节点对点的序号进行随机分配,例如定义参数“count”为序号规定上限且count等于256,然后利用表达式删除序号大于等于参数count的第四光照采样点,如删除序号ptnum>count的点。

通过利用分配的序号来随机删除第四光照采样点,可以更准确、快速、高效的按照设定的光照采样点数量上限来随机删除光照采样点,避免随机删除的过程发生混乱。

在一些实施例中,该方法还可以包括以下步骤:

步骤r),基于目标空间位置处的光照值在图形用户界面中显示游戏场景的画面。

例如,在计算出目标空间位置处的光照值后,终端便可以显示出带有所有光源在目标空间位置产生光照的游戏场景画面,其中包括由于虚拟模型而产生的间接光照,从而使显示出的游戏场景画面更加真实逼真。

如图14所示,目前通过现有技术方法会生成840个光照采样点,可以看到其中的光照采样点和虚拟模型有明显的穿插问题,也在远离虚拟模型的空白区域生成了大量的无用点。

如图15所示,通过本申请实施例中的步骤s510、步骤s520以及步骤s530,能够生成379个光照采样点,即使不限定数量最大上限,生成结果的数量也有大幅度的较少,分布相比现有技术也更加合理,能够节省54%的存储和计算的消耗。如图16所示,在限定光照采样点的最大数量后,可以根据运算需求,设置最大数量的上限,从而达到对存储和计算的消耗可控效果。

图17提供了一种游戏中的光照采样装置的结构示意图。通过终端设备提供图形用户界面,图形用户界面中包含部分游戏场景,游戏场景中包含至少一虚拟模型。如图17所示,游戏中的光照采样装置1700包括:

确定模块1701,用于在游戏场景中,确定与虚拟模型表面的空间距离最近的目标空间,在目标空间中确定与虚拟模型表面的空间距离在第一预设空间距离范围内的目标空间位置;

生成模块1702,用于在目标空间位置处生成第一光照采样点;

计算模块1703,用于基于第一光照采样点计算目标空间位置处的光照值。

在一些实施例中,确定模块1701具体用于:

在游戏场景中生成距离场sdf,根据sdf确定空间位置到虚拟模型表面的最近距离;每个空间位置对应一个sdf;

根据最近距离确定目标空间。

在一些实施例中,该装置还包括:

记录模块,用于将目标空间位置对应的sdf记录于对应的第一光照采样点的变量中。

在一些实施例中,第一光照采样点的数量为多个;计算模块1703具体用于:

从多个第一光照采样点中,确定目标空间位置对应的sdf在第二预设空间距离范围内的目标sdf对应的第二光照采样点;

基于第二光照采样点计算目标空间位置处的光照值。

在一些实施例中,第二预设空间距离范围通过偏差参数和幅度参数表示;该装置还包括:

基于幅度参数和偏差参数调整第二预设空间距离范围。

在一些实施例中,计算模块1703还用于:

根据待显示的游戏场景的画面,确定需要计算光照值的场景划定范围;

从多个第二光照采样点中选择处于场景划定范围内的第三光照采样点;

基于第三光照采样点计算目标空间位置处的光照值。

在一些实施例中,场景划定范围为需要计算光照值的几何体形状的场景结构。

在一些实施例中,计算模块1703还用于:

将相互距离小于预设距离值的多个第三光照采样点进行合并,得到相互距离大于或等于预设距离值的多个第四光照采样点;

基于第四光照采样点计算目标空间位置处的光照值。

在一些实施例中,计算模块1703具体用于:

多次循环执行以下步骤,直至所有的第三光照采样点之间的相互距离大于或等于预设距离值:

检测多个第三光照采样点之间的相互距离;

将相互距离小于预设距离值的多个第三光照采样点进行合并。

在一些实施例中,计算模块1703具体用于:

从相互距离小于预设距离值的多个第三光照采样点中,随机保留一个第三光照采样点。

在一些实施例中,计算模块1703还用于:

基于预设光照采样点数量对多个第四光照采样点进行随机删除,得到光照采样点数量小于预设光照采样点数量的第五光照采样点;

计算游戏场景中所有光源在第五光照采样点的位置所产生光照的光照值;光照值包括虚拟模型所产生间接光照的光照值。

在一些实施例中,计算模块1703具体用于:

对多个第四光照采样点进行序号随机分配,得到多个采样点序号;

从多个第四光照采样点中,删除序号值大于预设序号值的采样点序号对应的第四光照采样点;预设序号值与预设光照采样点数量相同。

在一些实施例中,该装置还包括:

显示模块,用于基于目标空间位置处的光照值在图形用户界面中显示游戏场景的画面。

本申请实施例提供的游戏中的光照采样装置,与上述实施例提供的游戏中的光照采样方法具有相同的技术特征,所以也能解决相同的技术问题,达到相同的技术效果。

如图18所示,本申请实施例提供的一种计算机设备1800,包括:处理器1801、存储器1802和总线,所述存储器1802存储有所述处理器1801可执行的机器可读指令,当计算机设备运行时,所述处理器1801与所述存储器1802之间通过总线通信,所述处理器1801执行所述机器可读指令,以执行如上述游戏中的光照采样方法的步骤。

具体地,上述存储器1802和处理器1801能够为通用的存储器和处理器,这里不做具体限定,当处理器1801运行存储器1802存储的计算机程序时,能够执行上述游戏中的光照采样方法。

处理器1801可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器1801中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1801可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(digitalsignalprocessing,简称dsp)、专用集成电路(applicationspecificintegratedcircuit,简称asic)、现成可编程门阵列(field-programmablegatearray,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1802,处理器1801读取存储器1802中的信息,结合其硬件完成上述方法的步骤。

对应于上述游戏中的光照采样方法,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有机器可运行指令,所述计算机可运行指令在被处理器调用和运行时,所述计算机可运行指令促使所述处理器运行上述游戏中的光照采样方法的步骤。

本申请实施例所提供的游戏中的光照采样装置可以为设备上的特定硬件或者安装于设备上的软件或固件等。本申请实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,前述描述的系统、装置和单元的具体工作过程,均可以参考上述方法实施例中的对应过程,在此不再赘述。

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

再例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

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

另外,在本申请提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述游戏中的光照采样方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,简称rom)、随机存取存储器(randomaccessmemory,简称ram)、磁碟或者光盘等各种可以存储程序代码的介质。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的范围。都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

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