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

游戏场景生成方法和装置、可读存储介质、电子设备

文献发布时间:2023-06-19 11:17:41


游戏场景生成方法和装置、可读存储介质、电子设备

技术领域

本发明实施例涉及空间渲染技术领域,具体而言,涉及一种游戏场景生成方法、游戏场景生成装置、可读存储介质以及电子设备。

背景技术

目前的游戏中,为了体现游戏场景的精致度与真实感,会通过不同的渲染方案对游戏场景中包括的场景元素进行渲染。

具体的,在渲染场景元素时,可以选用3D渲染方案也可以选用2D渲染方案,3D渲染方案可以多视角多镜头展示游戏场景中包括的场景元素,2D渲染方案会降低渲染的计算消耗。

但是,当选用3D渲染方案时,需要使用深度缓冲,导致场景元素的边缘不能有透明像素,也容易产生锯齿,即使可以对场景元素的边缘进行描边处理以及加透明像素,但是细节表现不够,产生锯齿可以通过抗锯齿方案进行优化,但是性能消耗较高;当选用2D渲染方案时,采用的正交镜头会导致场景元素缺少沉浸感以及真实感。

因此,需要提供一种新的游戏场景生成方法。

需要说明的是,在上述背景技术部分发明的信息仅用于加强对本发明的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。

发明内容

本发明的目的在于提供一种游戏场景生成方法、游戏场景生成装置、可读存储介质以及电子设备,进而至少在一定程度上克服由于相关技术的限制和缺陷而导致的渲染计算性能消耗高以及游戏场景缺少真实感的问题。

根据本公开的一个方面,提供一种游戏场景生成方法,包括:

获取游戏场景中包括的第一场景元素,对所述第一场景元素进行预设处理,得到以所述第一场景元素为光源的第二场景元素;

获取所述游戏场景中包括的第三场景元素以及与所述第三场景元素对应的像素,计算所述像素的梯度值;

根据所述梯度值以及所述第二场景元素归一化的深度值,得到所述第三场景元素的边缘,将所述边缘与所述第二场景元素进行叠加,得到目标第三场景元素;

根据与所述第一场景元素、第二场景元素以及目标第三场景元素对应的渲染组以及渲染层级,对所述第一场景元素、第二场景元素以及目标第三场景元素进行渲染,以得到目标游戏场景。

在本公开的一种示例性实施例中,获取游戏场景中包括的第一场景元素,包括:

获取所述游戏场景中包括的场景元素的深度值,对所述场景元素的深度值进行归一化处理,得到归一化的贴图;

根据预设的阈值在所述归一化的贴图中确定属于所述第一场景元素的贴图。

在本公开的一种示例性实施例中,对所述第一场景元素进行预设处理,得到以所述第一场景元素为光源的第二场景元素,包括:

生成与所述第一场景元素的贴图对应的一个或者多个第一目标场景元素贴图;

确定所述第一场景元素为光源时产生光束的方向为第一方向,基于所述第一方向对所述一个或者多个第一目标场景元素贴图进行预设处理,得到以所述第一场景元素为光源的第二场景元素的贴图。

在本公开的一种示例性实施例中,获取所述游戏场景中包括的第三场景元素以及与所述第三场景元素对应的像素,计算所述像素的梯度值,包括:

获取所述游戏场景中包括的所述第三场景元素的贴图,以及所述第三场景元素的贴图在所述游戏场景中的目标像素;

确定所述目标像素预设范围内的像素,并根据所述目标像素预设范围内的像素的透明值进行卷积计算,得到所述目标像素的梯度值。

在本公开的一种示例性实施例中,根据所述梯度值以及所述第二场景元素归一化的深度值,得到所述第三场景元素的边缘,包括:

获取所述第三场景元素的深度值,根据所述第三场景元素的深度值,确定与所述第三场景元素的深度值对应的第二场景元素;

计算与所述第三场景元素的深度值对应的第二场景元素归一化的深度值和所述像素的梯度值之间的乘积;

当所述乘积大于预设的梯度阈值时,所述像素为所述第三场景元素的边缘。

在本公开的一种示例性实施例中,得到目标第三场景元素,所述游戏场景生成方法还包括:

获取所述第三场景元素的属性信息,其中,属性信息包括所述第三场景元素的宽度以及高度;

根据所述属性信息对第三场景元素所在的游戏场景进行划分,得到第一场景区域;其中,所述第三场景元素位于所述第一场景区域内,所示第一场景区域包括多个第一控制点以及多个第二控制点;

获取所述多个第一控制点的颜色,将所述多个第一控制点的颜色与所述第三场景元素的颜色进行正片叠底混合;

获取所述多个第二控制点的颜色,将正片叠底混合得到的第三场景元素的颜色与所述多个第二控制点的颜色进行划分混合,得到所述目标第三场景元素。

在本公开的一种示例性实施例中,得到目标第三场景元素,所述游戏场景生成方法还包括:

确定所述第三场景元素在所述游戏场景中的移动范围,根据所述游戏场景中包括的第一场景元素以及第二场景元素确定所述移动范围的颜色,并生成移动贴图;

获取所述第三场景在所述游戏场景中的位置,根据所述位置在所述移动贴图中确定与所述第三场景元素对应的颜色;

将所述移动贴图中与所述第三场景元素对应的颜色正片叠底到所述第三场景,得到所述目标第三场景元素。

在本公开的一种示例性实施例中,将所述移动贴图中与所述第三场景元素对应的颜色正片叠底到所述第三场景,得到所述目标第三场景元素,包括:

根据预设的宽度以及高度,对所述移动贴图以及所述第三场景元素进行转换,得到目标移动贴图以及转换后的第三场景元素;

将所述目标移动贴图转换成字节数组,确定所述转换后的第三场景元素在所述游戏场景中的位置,在所述字节数组中获取与所述转换后的第三场景元素在所述游戏场景中的位置对应的颜色值;

将所述颜色值正片叠底到所述转换后的第三场景元素,得到所述目标第三场景元素。

在本公开的一种示例性实施例中,根据与所述第一场景元素、第二场景元素以及目标第三场景元素对应的渲染组以及渲染层级,对所述第一场景元素、第二场景元素以及目标第三场景元素进行渲染,以得到目标游戏场景,包括:

根据所述第一场景元素、第二场景元素以及目标第三场景元素在所述游戏场景中的深度值,确定所属的渲染组以及渲染层级;

根据所述渲染组以及渲染层级对所述第一场景元素、第二场景元素以及目标第三场景元素进行渲染,以得到所述目标场景元素。

根据本公开的一个方面,提供一种游戏场景显示装置,包括:

第二场景元素生成模块,用于获取游戏场景中包括的第一场景元素,对所述第一场景元素进行预设处理,得到以所述第一场景元素为光源的第二场景元素;

梯度值计算模块,用于获取所述游戏场景中包括的第三场景元素以及与所述第三场景元素对应的像素,计算所述像素的梯度值;

目标第三场景元素生成模块,用于根据所述梯度值以及所述第二场景元素归一化的深度值,得到所述第三场景元素的边缘,将所述边缘与所述第二场景元素进行叠加,得到目标第三场景元素;

目标游戏场景生成模块,用于根据与所述第一场景元素、第二场景元素以及目标第三场景元素对应的渲染组以及渲染层级,对所述第一场景元素、第二场景元素以及目标第三场景元素进行渲染,以得到目标游戏场景。

根据本公开的一个方面,提供一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一示例性实施例所述的游戏场景生成方法。

根据本公开的一个方面,提供一种电子设备,包括:

处理器;以及

存储器,用于存储所述处理器的可执行指令;

其中,所述处理器配置为经由执行所述可执行指令来执行上述任一示例性实施例所述的游戏场景生成方法。

本发明实施例提供的一种游戏场景生成方法,一方面,获取游戏场景中包括的第一场景元素,对所述第一场景元素进行预设处理,得到以所述第一场景元素为光源的第二场景元素;获取所述游戏场景中包括的第三场景元素以及与所述第三场景元素对应的像素,计算所述像素的梯度值;根据所述梯度值以及所述第二场景元素归一化的深度值,得到所述第三场景元素的边缘,将所述边缘与所述第二场景元素进行叠加,得到目标第三场景元素;根据与所述第一场景元素、第二场景元素以及目标第三场景元素对应的渲染组以及渲染层级,对所述第一场景元素、第二场景元素以及目标第三场景元素进行渲染,以得到目标游戏场景,由于根据场景元素在游戏场景中的渲染组以及渲染层级确定场景元素在游戏场景中的显示顺序并进行渲染,而不是使用3D方案中的深度缓冲确定场景元素的遮挡关系,使得场景元素的边缘可以存在透明像素且不存在锯齿,降低了渲染的性能消耗;另一方面,由于对第二场景元素进行归一化,将游戏场景中包括的场景元素转换成纹理贴图,通过纹理贴图对应的渲染组以及渲染层级对场景元素进行显示,结合2D方案与3D方案的优势,降低了渲染计算的资源消耗,提升了渲染效率,同时提升了渲染效果,使得游戏场景具有沉浸感以及真实感。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示意性示出根据本发明示例实施例的一种游戏场景生成方法的流程图。

图2示意性示出根据本发明示例实施例的一种游戏场景生成系统的框图。

图3示意性示出根据本发明示例实施例的一种根据第一场景元素生成第二场景元素的方法流程图。

图4示意性示出根据本发明示例实施例的一种计算第三场景元素对应的像素的梯度值的方法流程图。

图5示意性示出根据本发明示例实施例的一种根据像素的梯度值以及第二场景元素归一化的深度值得到第三场景元素的边缘的方法流程图。

图6示意性示出根据本发明示例实施例的一种得到目标第三场景元素的方法流程图。

图7示意性示出根据本发明示例实施例的一种对第三场景元素进行颜色叠加来模拟游戏场景中光线亮暗变化的方法流程图。

图8示意性示出根据本发明示例实施例的一种将移动贴图转换成字节数组,并根据转换后的字节数组生成目标第三场景元素的方法流程图。

图9示意性示出根据本发明示例实施例的一种根据渲染组以及渲染层级对场景元素进行渲染的方法流程图。

图10示意性示出根据本发明示例实施例的一种游戏场景生成装置的框图。

图11示意性示出根据本发明示例实施例的用于实现上述游戏场景生成方法的电子设备。

具体实施方式

现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本发明将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本发明的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本发明的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本发明的各方面变得模糊。

此外,附图仅为本发明的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。

现有技术中,当游戏场景中包括半透明的场景元素时,首先,会在着色器中设置渲染类型以及渲染对列值,其中,渲染对列值表示场景元素的绘制顺序,当在渲染时,所有半透明的场景元素会在所有不透明场景元素绘制完成之后绘制,并且通过设置深度写入和深度测试来保证被不透明场景元素遮挡的场景元素不会被渲染,但是,通过深度写入和深度测试的方式会导致渲染的场景元素的边缘不能有透明像素,并且容易产生锯齿,为了解决上述问题,可以通过对场景元素进行描边,并且加上边缘透明的像素,但是会导致场景元素的表现细节不够丰富,锯齿可以通过抗锯齿的方案进行优化,但是会导致性能消耗高。

基于上述一个或者多个问题,本示例实施方式中首先提供了一种游戏场景生成方法,该方法可以运行于设备终端,该设备终端可以包括PC端、移动端等;当然,本领域技术人员也可以根据需求在其他平台运行本发明的方法,本示例性实施例中对此不做特殊限定。参考图1所示,该游戏场景生成方法可以包括以下步骤:

步骤S110.获取游戏场景中包括的第一场景元素,对所述第一场景元素进行预设处理,得到以所述第一场景元素为光源的第二场景元素;

步骤S120.获取所述游戏场景中包括的第三场景元素以及与所述第三场景元素对应的像素,计算所述像素的梯度值;

步骤S130.根据所述梯度值以及所述第二场景元素归一化的深度值,得到所述第三场景元素的边缘,将所述边缘与所述第二场景元素进行叠加,得到目标第三场景元素;

步骤S140.根据与所述第一场景元素、第二场景元素以及目标第三场景元素对应的渲染组以及渲染层级,对所述第一场景元素、第二场景元素以及目标第三场景元素进行渲染,以得到目标游戏场景。

上述游戏场景生成方法,一方面,获取游戏场景中包括的第一场景元素,对所述第一场景元素进行预设处理,得到以所述第一场景元素为光源的第二场景元素;获取所述游戏场景中包括的第三场景元素以及与所述第三场景元素对应的像素,计算所述像素的梯度值;根据所述梯度值以及所述第二场景元素归一化的深度值,得到所述第三场景元素的边缘,将所述边缘与所述第二场景元素进行叠加,得到目标第三场景元素;根据与所述第一场景元素、第二场景元素以及目标第三场景元素对应的渲染组以及渲染层级,对所述第一场景元素、第二场景元素以及目标第三场景元素进行渲染,以得到目标游戏场景,由于根据场景元素在游戏场景中的渲染组以及渲染层级确定场景元素在游戏场景中的显示顺序并进行渲染,而不是使用3D方案中的深度缓冲确定场景元素的遮挡关系,使得场景元素的边缘可以存在透明像素且不存在锯齿,降低了渲染的性能消耗;另一方面,由于对第二场景元素进行归一化,将游戏场景中包括的场景元素转换成纹理贴图,通过纹理贴图对应的渲染组以及渲染层级对场景元素进行显示,结合2D方案与3D方案的优势,降低了渲染计算的资源消耗,提升了渲染效率,同时提升了渲染效果,使得游戏场景具有沉浸感以及真实感。

以下,对本公开示例实施例的游戏场景生成方法中涉及的各步骤进行详细的解释以及说明。

首先,对本公开示例实施例的应用场景以及发明目的进行解释以及说明。

具体的,本公开示例实施例可以用于用户的游戏客户端,当用户进入游戏场景后,可以根据游戏场景中不同位置的光照变化对游戏场景中包括的场景元素的光线进行调整,提高了游戏场景的沉浸感以及真实感。

本发明实施例以场景元素归一化后得到的纹理贴图为基础,对不同场景元素的纹理贴图进行处理得到目标场景元素,再根据目标场景元素在游戏场景中的渲染组以及渲染层级,确定各场景元素在游戏场景中的显示顺序,并根据该顺序对场景元素进行渲染,降低了渲染计算的资源消耗,提升了游戏场景的渲染效果,使得游戏场景具有沉浸感以及真实感。具体理由如下:一方面,获取第一场景元素的纹理贴图,将第一场景元素的纹理贴图作为光源,对与该第一场景元素的纹理贴图对应的多个纹理贴图进行偏移,偏移的方向与光源的方向相反,以得到以第一场景元素为光源的光束贴图,提高了第二场景元素显示在游戏场景中时的真实感;另一方面,确定场景元素在游戏场景中的渲染组以及渲染层级,并根据场景元素的渲染组以及渲染层级确定场景元素在游戏场景中的显示关系,而不是使用深度缓冲,使场景元素的边缘可以存在透明像素,同时不产生锯齿,降低了渲染计算的资源消耗。

其次,对本公开示例实施例中涉及的游戏场景显示系统进行解释以及说明。参考图2所示,该游戏场景显示系统可以包括:游戏角色生成模块210、贴图获取模块220、着色器230以及用户客户端240。其中,游戏角色生成模块210,用于使用2D骨骼动画编辑工具生成游戏场景中包括的第三场景元素,即,游戏角色,其中,生成的第三场景元素为第三场景元素的纹理贴图;贴图获取模块220,与游戏角色生成模块210网络连接,用于获取游戏场景中包括的场景元素的纹理贴图,当游戏场景中包括立体场景元素时,对该立体场景元素的深度值进行归一化处理,进而得到该立体场景元素的纹理贴图;着色器230,与贴图获取模块220网络连接,用于根据各场景元素的纹理贴图在游戏场景中的渲染组以及渲染层级确定场景元素的显示顺序,并根据该显示顺序对场景元素进行渲染;用户客户端240,与着色器230网络连接,用于对渲染好的场景元素进行显示。

以下,将结合图2对步骤S110-步骤S140进行详细的解释以及说明。

在步骤S110中,获取游戏场景中包括的第一场景元素,对所述第一场景元素进行预设处理,得到以所述第一场景元素为光源的第二场景元素。

其中,游戏场景中可以包括一个或者多个场景元素;预设处理为对第一场景元素进行偏移处理;第一场景元素为光源,可以是自然光源,例如:太阳、火焰、闪电等,也可以是人造光源,例如:点燃的蜡烛、发光的电灯等,在本示例实施例中对光源不做具体限定;第一场景元素的预设处理可以为:沿着第一场景为光源时产生光束的方向,对第一场景元素进行偏移处理;得到的第二场景元素为以第一场景元素为光源产生光束的光束贴图。

在本示例实施例中,获取游戏场景中包括的第一场景元素,包括:

获取所述游戏场景中包括的场景元素的深度值,对所述场景元素的深度值进行归一化处理,得到归一化的贴图;

根据预设的阈值在所述归一化的贴图中确定属于所述第一场景元素的贴图。

通过将立体场景元素转换成归一化后的纹理贴图,降低了渲染时的计算性能消耗。具体的,首先,获取游戏场景中包括的立体场景元素的深度值,其中,深度值为像素点在立体世界中距离摄像机的距离,深度值越大,距离摄像机的距离越远;其次,对场景元素的深度值进行归一化处理,得到游戏场景归一化的纹理贴图,在游戏场景归一化的纹理贴图中,最大的深度值为1,最小的深度值为0,在归一化的纹理贴图中,深度值最大的场景元素可以位于纹理贴图的中心,也可以是深度值最小的场景元素位于纹理贴图的中心,在本示例中不做具体限定;再次,当得到游戏场景归一化的纹理贴图后,可以根据预设的深度阈值确定该游戏场景归一化的纹理贴图中属于第一场景元素的纹理贴图,即,属于光源的纹理贴图,其中,预设的深度阈值可以为0.9,也可以为0.8,在本申请中对预设的深度阈值不做具体限定。

参考图3所示,当得到游戏场景归一化的纹理贴图中包括的第一场景元素的纹理贴图后,即,光源的纹理贴图,可以根据第一场景元素生成第二场景元素,具体可以包括步骤S310以及步骤S320:

在步骤S310中,生成与所述第一场景元素的贴图对应的一个或者多个第一目标场景元素贴图;

在步骤S320中,确定所述第一场景元素为光源时产生光束的方向为第一方向,基于所述第一方向对所述一个或者多个第一目标场景元素贴图进行预设处理,得到以所述第一场景元素为光源的第二场景元素的贴图。

以下,将对步骤S310以及步骤S320进行解释以及说明。具体的,第二场景元素为第一场景元素为光源时产生的光束贴图,因此,当生成第二场景元素时,首先,需要根据第一场景元素的纹理贴图生成一个或者多个与第一场景元素对应的纹理贴图,其中,为了使得生成的第二场景元素具有真实感以及沉浸感,当生成的纹理贴图的个数为1个时,该纹理贴图的宽度以及高度要大于第一场景纹理贴图的宽度以及高度,当生成的纹理贴图的个数为多个时,每个纹理贴图的宽度以及高度是不同的,呈增大趋势,例如,当生成两个纹理贴图、第一场景元素的宽度及高度分别为5像素、7像素时,则生成的第一个纹理贴图的宽度、高度可以为:7像素、9像素;第二个纹理贴图的宽度、高度可以为:8像素、10像素,在本示例中不对生成的纹理贴图的具体宽度以及高度进行限定,但是需要呈增大趋势,本领域技术人员可以根据需要对不同的纹理贴图设置不同的宽度以及高度。

其次,当得到与第一场景元素对应的一个或者多个场景元素的纹理贴图后,需要确定一个或者多个场景元素构成光束的方向,即,确定第一场景元素为光源时产生光束的方向,当确定第一场景元素为光源时产生光束的方向后,将产生的一个或者多个场景元素的纹理贴图根据光束的方向进行偏移,以得到第二场景元素纹理贴图,其中,在第二场景元素纹理贴图中生成多个纹理贴图之间的偏移距离可以为定值,也可以为任意值,本实施例对此不做具体限定。

在步骤S120中,获取所述游戏场景中包括的第三场景元素以及与所述第三场景元素对应的像素,计算所述像素的梯度值。

其中,第三场景元素为游戏场景中包括的游戏角色,游戏角色可以采用spine(针对游戏的2D骨骼动画编辑工具)进行绘制,为了节省渲染时的计算消耗,将游戏场景中包括的一个或者多个游戏角色绘制在一张渲染目标(render target)上,其中,渲染目标是图形处理单元的一个特征,允许将立体场景渲染到存储缓冲区或者渲染目标纹理,然后通过着色器对渲染目标纹理进行处理,以便在显示最终图像之前将其他效果应用于最终图像,并且采用spine绘制的游戏角色的纹理贴图会产生透明值;计算第三场景元素对应的像素的梯度值,即,对第三场景元素进行边缘检测,可以采用Sobel(索贝尔)边缘检测算子,也可以为Prewitt(一阶微分算子的边缘检测)边缘检测算子,还可以为Roberts(利用局部差分算子寻找边缘)边缘检测算子,在本实例中对边缘检测算法不做具体限定。

在本示例实施例中,参考图4所示,获取第三场景元素以及所述第三场景元素对应的像素,计算所述像素的梯度值,包括步骤S410以及步骤S420:

在步骤S410中,获取所述游戏场景中包括的所述第三场景元素的贴图,以及所述第三场景元素的贴图在所述游戏场景中的目标像素;

在步骤S420中,确定所述目标像素预设范围内的像素,并根据所述目标像素预设范围内的像素的透明值进行卷积计算,得到所述目标像素的梯度值。

以下,将对步骤S410以及步骤S420进行解释以及说明。具体的,首先,将所有的游戏角色绘制到一张空白的渲染目标上,以用来提取游戏角色的边缘信息;其次,获取游戏角色的像素信息,并根据该像素预设范围内包括的像素的透明值进行卷积计算,其中,该预设范围可以为以该目标像素为中心的3*3范围,也可以为以该目标像素为中心的4*4范围,在本实例中不对预设范围进行特殊限定。举例而言,当边缘检测算法为Sobel算子,预设范围为以该目标像素为中心的3*3范围时,由于Sobel滤波是检查一阶方向上的色彩或者亮度的梯度变化,所以需要在水平和垂直方向上进行两次卷积,两个卷积核分别为:

其中,A为该目标像素预设范围内包括的像素构成的3*3矩阵,A矩阵的值为该目标像素预设范围内包括的像素的透明值,G

在本示例实施例中通过使用预设范围内包括的像素的透明值代替深度值,保证了对第三场景元素的勾边位于第三场景元素纹理贴图的边缘上。

在步骤S130中,根据所述梯度值以及所述第二场景元素归一化的深度值,得到所述第三场景元素的边缘,将所述边缘与所述第二场景元素进行叠加,得到目标第三场景元素。

其中,梯度值为步骤S120中得到的近似梯度,第二场景元素归一化的深度值为与第三场景元素的深度值相同的第二场景元素归一化的深度值,第三场景元素的边缘为纹理贴图中亮度显著变化的地方,将边缘与第二场景元素进行叠加,即,将游戏角色的勾边叠加到第二场景元素纹理贴图上。

在本示例实施例中,参考图5所示,根据所述梯度值以及所述第二场景元素归一化的深度值,得到所述第三场景元素的边缘,包括步骤S510-步骤S530:

在步骤S510中,获取所述第三场景元素的深度值,根据所述第三场景元素的深度值,确定与所述第三场景元素的深度值对应的第二场景元素;

在步骤S520中,计算与所述第三场景元素的深度值对应的第二场景元素归一化的深度值和所述像素的梯度值之间的乘积;

在步骤S530中,当所述乘积大于预设的梯度阈值时,所述像素为所述第三场景元素的边缘。

以下,将对步骤S510-步骤S530进行解释以及说明。具体的,首先,确定游戏角色包括的像素在游戏场景中的深度值,同时确定与游戏角色包括的像素的深度值对应的第二场景元素的像素以及该第二场景元素的像素归一化的深度值;其次,计算游戏角色包括的像素的梯度值与第二场景元素的像素归一化的深度值之间的乘积,当该乘积大于预设的梯度阈值时,可以认为该游戏角色包括的像素为该游戏角色的边缘,其中,预设的梯度阈值可以为0.8,也可以为0.9,在本示例中对预设的梯度阈值不做具体限定。

在本示例实施例中,参考图6所示,得到目标第三场景元素,所述游戏场景生成方法还包括步骤S610-步骤S640:

在步骤S610中,获取所述第三场景元素的属性信息,其中,属性信息包括所述第三场景元素的宽度以及高度;

在步骤S620中,根据所述属性信息对第三场景元素所在的游戏场景进行划分,得到第一场景区域;其中,所述第三场景元素位于所述第一场景区域内,所示第一场景区域包括多个第一控制点以及多个第二控制点;

在步骤S630中,获取所述多个第一控制点的颜色,将所述多个第一控制点的颜色与所述第三场景元素的颜色进行正片叠底混合;

在步骤S640中,获取所述多个第二控制点的颜色,将正片叠底混合得到的第三场景元素的颜色与所述多个第二控制点的颜色进行划分混合,得到所述目标第三场景元素。

以下,将对步骤S610-步骤S640进行解释以及说明。具体的,对第三场景元素所在的游戏场景进行划分,可以根据游戏角色的宽度以及高度确定游戏角色在游戏场景纹理贴图中的矩形区域,也可以通过编辑器调整游戏角色在游戏场景中的矩形区域,在本实例中对游戏场景的划分方式不做具体限定。可以对游戏场景中包括的第二场景元素的光线进行调整,包括:首先,游戏场景中包括的第三场景元素,即游戏角色的宽度以及高度,并根据游戏角色的宽度以及高度确定游戏角色在游戏场景中的矩形区域;其次,基于该矩形区域设置多个第一控制点以及多个第二控制点,其中,每个控制点设置一个颜色,并且第一控制点包括的多个控制点设置的颜色的呈色彩的渐变;第一控制点以及第二控制点包括的控制点的个数均不小于2;再次,获取第一控制点包括的多个颜色,并将第一控制点包括的多个控制点的渐变色采用正片叠底的方式混合到游戏角色上,正片叠底的公式可以为:

final_color=float4(lerp(color.xyz,color.xyz*blend_color.xyz,float3(blend_color.w)),color.w)

其中,final_color为采用正片叠底之后得到的游戏角色的颜色;颜色的四个分量:红、绿、蓝、透明值分别可以用x、y、z、w来表示,也可以用其他标识来表示颜色的四个分量,在本示例中不做具体限定;lerp为插值函数,当在游戏场景中为了使游戏角色的光线具有缓冲的效果,可以使用插值函数;color.xyz、color.w表示游戏角色像素点的颜色分量,blend_color.xyz、blend_color.w表示与游戏角色的像素点对应的第一控制点的颜色分量;最后,获取第二控制点包括的多个颜色,并将第二控制点包括的多个控制点的颜色采用划分混合的方式叠加到经过正片叠底的游戏角色上,以实现对游戏角色的亮度进行调整,其中划分混合的公式可以为:

final_color=float4(color.xyz/blend_color.xyz,color.w)

其中,final_color为采用划分混合之后得到的游戏角色的颜色,color.xyz、color.w表示经过正片叠底之后游戏角色像素点的颜色分量,blend_color.xyz表示与游戏角色的像素点对应的第二控制点的颜色分量。

进一步的,参考图7所示,当游戏角色在游戏场景中进行移动时,由于场景角色中包括以第一场景元素为光源的第二场景元素,必定会造成随着游戏角色在游戏场景中的移动,游戏角色的光线不断发生变化,因此,需要根据游戏角色的位置叠加一个颜色来模拟游戏场景中光线的亮暗变化,具体包括步骤S710-步骤S730:

在步骤S710中,确定所述第三场景元素在所述游戏场景中的移动范围,根据所述游戏场景中包括的第一场景元素以及第二场景元素确定所述移动范围的颜色,并生成移动贴图;

在步骤S720中,获取所述第三场景在所述游戏场景中的位置,根据所述位置在所述移动贴图中确定与所述第三场景元素对应的颜色;

在步骤S730中,将所述移动贴图中与所述第三场景元素对应的颜色正片叠底到所述第三场景,得到所述目标第三场景元素。

以下,将对步骤S710-步骤S730进行解释以及说明。具体的,由于游戏角色在游戏场景的纹理贴图内进行移动,即,在一个矩形平面内移动的,因此,可以用一张矩形贴图来记录每个位置的叠加颜色。首先,获取游戏角色在游戏场景中的移动范围,并且在移动范围内结合游戏场景中包括的光源以及该光源发出的光束,生成游戏角色在游戏场景中的移动贴图,该移动贴图用来模拟游戏场景的亮暗变化;其次,确定游戏角色在游戏场景中的位置,并根据游戏角色在游戏场景中的位置确定移动贴图中与游戏角色对应的颜色点;最后,将移动贴图中的颜色点正片叠底到游戏角色上,其中,正片叠底的公式可以为:

final_color=float4(lerp(color.xyz,color.xyz*multiply_color.xyz,float3(multiply_color.w)),color.w)

其中,final_color为移动贴图中的颜色点正片叠底到游戏角色的颜色,color.xyz、color.w表示经过正片叠底以及划分混合之后游戏角色像素点的颜色分量,multiply_color.xyz、multiply_color.w表示与游戏角色的像素点对应的移动贴图的颜色分量。

再进一步的,参考图8所示,为了减少移动贴图的采样次数,可以将移动贴图离线转换成字节数组,可以包括步骤S810-步骤S830:

在步骤S810中,根据预设的宽度以及高度,对所述移动贴图以及所述第三场景元素进行转换,得到目标移动贴图以及转换后的第三场景元素;

在步骤S820中,将所述目标移动贴图转换成字节数组,确定所述转换后的第三场景元素在所述游戏场景中的位置,在所述字节数组中获取与所述转换后的第三场景元素在所述游戏场景中的位置对应的颜色值;

在步骤S830中,将所述颜色值正片叠底到所述转换后的第三场景元素,得到所述目标第三场景元素。

具体的,首先,在将移动贴图转换成字节数组前,需要将移动贴图与游戏角色的贴图进行统一化,具体包括:根据预设的宽度以及高度对移动贴图以及游戏角色的纹理贴图进行统一高度以及宽度的转换,其中,预设的宽度以及高度可以为1024*128,也可以为2048*256,在本示例中不对预设的宽度以及高度进行限制,当预设的宽度以及高度为1024*128时,将移动贴图的高度以及宽度统一设置为1024*128,并且将游戏角色在游戏场景中的位置转换到该1024*128范围内;其次,将移动贴图转换为字节数组,当该移动贴图加载进游戏之后以数组的形式保存;再次,确定游戏角色在游戏场景中的位置,并获取与游戏角色在游戏场景中的位置对应的移动贴图的像素点;最后,根据移动贴图的像素点在数组中确定与该像素点对应的颜色值,并将颜色值叠加到游戏角色上,得到目标游戏角色。

在步骤S140中,根据与所述第一场景元素、第二场景元素以及目标第三场景元素对应的渲染组以及渲染层级,对所述第一场景元素、第二场景元素以及目标第三场景元素进行渲染,以得到目标游戏场景。

其中,渲染组以及渲染层级用来确定场景元素在游戏场景中的显示顺序,具体的,参考图9所示,根据与所述第一场景元素、第二场景元素以及目标第三场景元素对应的渲染组以及渲染层级进行渲染,以得到目标游戏场景,包括步骤S910以及步骤S920:

在步骤S910中,根据所述第一场景元素、第二场景元素以及目标第三场景元素在所述游戏场景中的深度值,确定所属的渲染组以及渲染层级;

在步骤S920中,根据所述渲染组以及渲染层级对所述第一场景元素、第二场景元素以及目标第三场景元素进行渲染,以得到所述目标场景元素。

以下,将对步骤S910以及步骤S920进行解释以及说明。具体的,首先,获取游戏场景中包括的场景元素的深度值,根据场景元素的深度值确定该场景元素在游戏场景中的渲染组,其中,渲染组可以包括:地面下层天空、远景植物、远处天空特效和物件、活动相关物体以及其他物体,本示例中对渲染组不做具体限定,本领域技术人员可以根据游戏场景的需要设置不同的渲染组,当确定场景元素所属的渲染组之后,再根据场景元素的深度值确定该场景元素在渲染组中的渲染层级,当不同场景元素的渲染组相同时,渲染层级的值越大渲染时,通过着色器渲染时该场景元素越靠上层;当场景元素的渲染组不同时,渲染组越大通过着色器渲染时该场景元素越靠上层;最后,根据游戏场景中包括的场景元素的渲染组以及渲染层级对游戏场景中包括的场景元素进行渲染,得到目标游戏场景。

本公开示例实施例提供的游戏场景生成方法以及游戏场景生成系统至少具有以下优点:生成场景元素的纹理贴图,并根据场景元素在游戏场景中的渲染组以及渲染层级将不同的场景元素渲染在游戏场景中,降低了渲染计算的资源消耗,提升了渲染效率;根据游戏场景中包括的游戏角色在游戏场景中的移动时游戏角色的亮暗变化生成移动贴图,并将该贴图转换为字节数组,减少了贴图采样次数;根据场景元素在游戏场景中的渲染组以及渲染层级对场景元素进行渲染,使得场景元素的边缘可以产生透明像素且不产生锯齿,降低了渲染的性能消耗。

本发明示例实施例还提供了一种游戏场景生成装置,参考图10所示,该游戏场景生成装置可以包括:第二场景元素生成模块1010、梯度值计算模块1020、目标第三场景元素生成模块1030以及目标游戏场景生成模块1040。其中:

第二场景元素生成模块1010,用于获取游戏场景中包括的第一场景元素,对所述第一场景元素进行预设处理,得到以所述第一场景元素为光源的第二场景元素;

梯度值计算模块1020,用于获取所述游戏场景中包括的第三场景元素以及与所述第三场景元素对应的像素,计算所述像素的梯度值;

目标第三场景元素生成模块1030,用于根据所述梯度值以及所述第二场景元素归一化的深度值,得到所述第三场景元素的边缘,将所述边缘与所述第二场景元素进行叠加,得到目标第三场景元素;

目标游戏场景生成模块1040,用于根据与所述第一场景元素、第二场景元素以及目标第三场景元素对应的渲染组以及渲染层级,对所述第一场景元素、第二场景元素以及目标第三场景元素进行渲染,以得到目标游戏场景。

上述游戏场景生成装置中各模块的具体细节已经在对应的游戏场景生成方法中进行了详细的描述,因此此处不再赘述。

在本公开的一种示例性实施例中,获取游戏场景中包括的第一场景元素,包括:

获取所述游戏场景中包括的场景元素的深度值,对所述场景元素的深度值进行归一化处理,得到归一化的贴图;

根据预设的阈值在所述归一化的贴图中确定属于所述第一场景元素的贴图。

在本公开的一种示例性实施例中,对所述第一场景元素进行预设处理,得到以所述第一场景元素为光源的第二场景元素,包括:

生成与所述第一场景元素的贴图对应的一个或者多个第一目标场景元素贴图;

确定所述第一场景元素为光源时产生光束的方向为第一方向,基于所述第一方向对所述一个或者多个第一目标场景元素贴图进行预设处理,得到以所述第一场景元素为光源的第二场景元素的贴图。

在本公开的一种示例性实施例中,获取所述游戏场景中包括的第三场景元素以及与所述第三场景元素对应的像素,计算所述像素的梯度值,包括:

获取所述游戏场景中包括的所述第三场景元素的贴图,以及所述第三场景元素的贴图在所述游戏场景中的目标像素;

确定所述目标像素预设范围内的像素,并根据所述目标像素预设范围内的像素的透明值进行卷积计算,得到所述目标像素的梯度值。

在本公开的一种示例性实施例中,根据所述梯度值以及所述第二场景元素归一化的深度值,得到所述第三场景元素的边缘,包括:

获取所述第三场景元素的深度值,根据所述第三场景元素的深度值,确定与所述第三场景元素的深度值对应的第二场景元素;

计算与所述第三场景元素的深度值对应的第二场景元素归一化的深度值和所述像素的梯度值之间的乘积;

当所述乘积大于预设的梯度阈值时,所述像素为所述第三场景元素的边缘。

在本公开的一种示例性实施例中,得到目标第三场景元素,所述游戏场景生成方法还包括:

获取所述第三场景元素的属性信息,其中,属性信息包括所述第三场景元素的宽度以及高度;

根据所述属性信息对第三场景元素所在的游戏场景进行划分,得到第一场景区域;其中,所述第三场景元素位于所述第一场景区域内,所示第一场景区域包括多个第一控制点以及多个第二控制点;

获取所述多个第一控制点的颜色,将所述多个第一控制点的颜色与所述第三场景元素的颜色进行正片叠底混合;

获取所述多个第二控制点的颜色,将正片叠底混合得到的第三场景元素的颜色与所述多个第二控制点的颜色进行划分混合,得到所述目标第三场景元素。

在本公开的一种示例性实施例中,得到目标第三场景元素,所述游戏场景生成方法还包括:

确定所述第三场景元素在所述游戏场景中的移动范围,根据所述游戏场景中包括的第一场景元素以及第二场景元素确定所述移动范围的颜色,并生成移动贴图;

获取所述第三场景在所述游戏场景中的位置,根据所述位置在所述移动贴图中确定与所述第三场景元素对应的颜色;

将所述移动贴图中与所述第三场景元素对应的颜色正片叠底到所述第三场景,得到所述目标第三场景元素。

在本公开的一种示例性实施例中,将所述移动贴图中与所述第三场景元素对应的颜色正片叠底到所述第三场景,得到所述目标第三场景元素,包括:

根据预设的宽度以及高度,对所述移动贴图以及所述第三场景元素进行转换,得到目标移动贴图以及转换后的第三场景元素;

将所述目标移动贴图转换成字节数组,确定所述转换后的第三场景元素在所述游戏场景中的位置,在所述字节数组中获取与所述转换后的第三场景元素在所述游戏场景中的位置对应的颜色值;

将所述颜色值正片叠底到所述转换后的第三场景元素,得到所述目标第三场景元素。

在本公开的一种示例性实施例中,根据与所述第一场景元素、第二场景元素以及目标第三场景元素对应的渲染组以及渲染层级,对所述第一场景元素、第二场景元素以及目标第三场景元素进行渲染,以得到目标游戏场景,包括:

根据所述第一场景元素、第二场景元素以及目标第三场景元素在所述游戏场景中的深度值,确定所属的渲染组以及渲染层级;

根据所述渲染组以及渲染层级对所述第一场景元素、第二场景元素以及目标第三场景元素进行渲染,以得到所述目标场景元素。

应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。

此外,尽管在附图中以特定顺序描述了本发明中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。

在本发明的示例性实施例中,还提供了一种能够实现上述方法的电子设备。

所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。

下面参照图11来描述根据本发明的这种实施方式的电子设备1100。图11显示的电子设备1100仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图11所示,电子设备1100以通用计算设备的形式表现。电子设备1100的组件可以包括但不限于:上述至少一个处理单元1110、上述至少一个存储单元1120、连接不同系统组件(包括存储单元1120和处理单元1110)的总线1130以及显示单元1140。

其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元1110执行,使得所述处理单元1110执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元1110可以执行如图1中所示的步骤S110:获取游戏场景中包括的第一场景元素,对所述第一场景元素进行预设处理,得到以所述第一场景元素为光源的第二场景元素;S120:获取所述游戏场景中包括的第三场景元素以及与所述第三场景元素对应的像素,计算所述像素的梯度值;S130:根据所述梯度值以及所述第二场景元素归一化的深度值,得到所述第三场景元素的边缘,将所述边缘与所述第二场景元素进行叠加,得到目标第三场景元素;S140:根据与所述第一场景元素、第二场景元素以及目标第三场景元素对应的渲染组以及渲染层级,对所述第一场景元素、第二场景元素以及目标第三场景元素进行渲染,以得到目标游戏场景。

存储单元1120可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)11201和/或高速缓存存储单元11202,还可以进一步包括只读存储单元(ROM)11203。

存储单元1120还可以包括具有一组(至少一个)程序模块11205的程序/实用工具11204,这样的程序模块11205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。

总线1130可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。

电子设备1100也可以与一个或多个外部设备1200(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备1100交互的设备通信,和/或与使得该电子设备1100能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口1150进行。并且,电子设备1100还可以通过网络适配器1160与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器1160通过总线1130与电子设备1100的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备1100使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。

通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本发明实施方式的方法。

在本发明的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。

根据本发明的实施方式的用于实现上述方法的程序产品,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。

计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。

此外,上述附图仅是根据本发明示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。

本领域技术人员在考虑说明书及实践这里发明的发明后,将容易想到本发明的其他实施例。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未发明的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由权利要求指出。

相关技术
  • 游戏场景生成方法和装置、可读存储介质、电子设备
  • 游戏场景生成方法、装置、计算机可读介质及电子设备
技术分类

06120112873364