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

虚拟场景中的水域编辑方法、装置、存储介质与电子设备

文献发布时间:2023-06-19 18:37:28


虚拟场景中的水域编辑方法、装置、存储介质与电子设备

技术领域

本公开涉及计算机技术领域,尤其涉及一种虚拟场景中的水域编辑方法、虚拟场景中的水域编辑装置、计算机可读存储介质与电子设备。

背景技术

在游戏或动画的虚拟场景中,经常需要设置水域,如,在虚拟农场类游戏中,通过设置水域可以增加虚拟农场的真实感和生动性。

相关技术中,虚拟场景中的水域大多存在视觉效果单一,缺乏真实感,不可编辑等问题,难以在虚拟场景中实现真实感高的可编辑的水域效果。

发明内容

本公开提供了一种虚拟场景中的水域编辑方法、虚拟场景中的水域编辑装置、计算机可读存储介质与电子设备,进而至少在一定程度上改善2D虚拟场景中难以实现真实感高的可编辑的水域效果的问题。

本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。

根据本公开的第一方面,提供一种虚拟场景中的水域编辑方法,包括:获取虚拟场景的网格模型,在所述网格模型中创建水域单元格;对所述水域单元格的水上元素进行编辑;获取内发光信息,基于所述内发光信息确定颜色渲染参数;利用所述颜色渲染参数对所述水域单元格的水下元素进行渲染。

可选的,所述内发光信息包括第一内发光颜色信息,所述颜色渲染参数包括第一颜色混合权重;所述获取内发光信息,基于所述内发光信息确定颜色渲染参数,包括:基于预设阴影参数获取所述第一内发光颜色信息;根据所述第一内发光颜色信息确定阴影深度值,并基于所述阴影深度值计算第一颜色混合权重;所述利用所述颜色渲染参数对所述水域单元格的水下元素进行渲染,包括:利用所述第一颜色混合权重对阴影颜色与所述水域单元格的水下元素的颜色进行混合,以对所述水域单元格的水下元素进行渲染。

可选的,所述根据所述第一内发光颜色信息确定阴影深度值,并基于所述阴影深度值计算第一颜色混合权重,包括:对所述第一内发光颜色信息进行线性插值运算,以确定所述阴影深度值;根据所述阴影深度值与所述预设阴影参数计算所述第一颜色混合权重。

可选的,所述内发光信息包括第二内发光颜色信息,所述颜色渲染参数包括第二颜色混合权重;所述获取内发光信息,基于所述内发光信息确定颜色渲染参数,包括:基于预设浮沫参数获取所述第二内发光颜色信息;根据所述第二内发光颜色信息确定浮沫深度值,并基于所述浮沫深度值计算第二颜色混合权重;所述利用所述颜色渲染参数对所述水域单元格的水下元素进行渲染,包括:利用所述第二颜色混合权重对预设浮沫颜色与所述水域单元格的水下元素的颜色进行混合,以对所述水域单元格的水下元素进行渲染。

可选的,所述根据所述第二内发光颜色信息确定浮沫深度值,并基于所述浮沫深度值计算第二颜色混合权重,包括:对所述第二内发光颜色信息进行线性插值运算,以确定所述浮沫深度值;根据所述浮沫深度值与所述预设浮沫参数计算所述第二颜色混合权重。

可选的,所述利用所述颜色渲染参数对所述水域单元格的水下元素进行渲染,包括:利用预设焦散参数与焦散噪声得到焦散颜色,并将所述水域单元格的水下元素的基础颜色与所述焦散颜色进行混合,以对所述水下元素添加焦散效果;利用所述颜色渲染参数对添加焦散效果后的所述水下元素进行渲染。

可选的,所述利用所述颜色渲染参数对添加焦散效果后的所述水下元素进行渲染,包括:利用所述颜色渲染参数将添加焦散效果后的所述水下元素的颜色与阴影颜色、预设浮沫颜色进行混合,并利用混合后的颜色对所述水下元素进行渲染。

可选的,所述颜色渲染参数包括第一颜色混合权重与第二颜色混合权重;所述利用所述颜色渲染参数将添加焦散效果后的所述水下元素的颜色、阴影颜色、预设浮沫颜色进行混合,并利用混合后的颜色对所述水下元素进行渲染,包括:根据预设阴影透明度与所述添加焦散效果后的水下元素的颜色,以计算所述阴影颜色;基于所述第一颜色混合权重,对所述阴影颜色与所述添加焦散效果后的水下元素的颜色进行混合,以得到阴影混合颜色;基于所述第二颜色混合权重,将所述阴影混合颜色与所述预设浮沫颜色进行混合,以得到所述混合后的颜色;通过所述水下元素的父容器利用所述混合后的颜色对所述水下元素进行渲染。

可选的,所述对所述水域单元格的水上元素进行编辑,包括:通过所述水上元素的父容器对所述水上元素设置图片资源,以编辑所述水上元素的岸边元素信息。

可选的,所述方法还包括:将所述水域单元格放置在目标位置。

可选的,所述将所述水域单元格放置在目标位置,包括:将所述水域单元格的水上元素设置为悬浮状态;在悬浮状态下,将所述水上元素移动至所述目标位置,并将所述水上元素设置为非悬浮状态。

根据本公开的第二方面,提供一种虚拟场景中的水域编辑装置,包括:水域单元格创建模块,被配置为获取虚拟场景的网格模型,在所述网格模型中创建水域单元格;水上元素编辑模块,被配置为对所述水域单元格的水上元素进行编辑;颜色渲染参数确定模块,被配置为获取内发光信息,基于所述内发光信息确定颜色渲染参数;水下元素渲染模块,被配置为利用所述颜色渲染参数对所述水域单元格的水下元素进行渲染。

根据本公开的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面的虚拟场景中的水域编辑方法及其可能的实现方式。

根据本公开的第四方面,提供一种电子设备,包括:处理器;存储器,用于存储所述处理器的可执行指令。其中,所述处理器配置为经由执行所述可执行指令,来执行上述第一方面的虚拟场景中的水域编辑方法及其可能的实现方式。

本公开的技术方案具有以下有益效果:

一方面,使用水域单元格生成水域的整体效果,对水域单元格的水上元素进行编辑,并根据内发光信息确定的颜色渲染参数对水域单元格的水下元素进行渲染,实现了在虚拟场景中动态编辑水域效果,提升了虚拟场景的真实感,增强了虚拟场景的交互性,改善了用户体验;另一方面,本方案能够结合内发光信息确定颜色渲染参数,进一步利用颜色渲染参数对水下元素进行渲染,以实现水下元素的着色效果,提升了虚拟场景的生动性,使虚拟场景中的水域更具真实感,进一步增强了用户的沉浸感。再一方面,使用内发光信息确定颜色渲染参数,无需额外设置场景光照以确定颜色渲染参数,降低了虚拟场景的构建功耗,进一步提升了运行效率。

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

附图说明

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

图1示出一种根据场景光照获取水域深度值的示意图;

图2示出一种虚拟场景中的深度纹理的示意图;

图3示出本示例性实施方式运行环境的系统架构;

图4示出本示例性实施方式中一种虚拟场景中的水域编辑方法的流程示意图;

图5示出本示例性实施方式中一种虚拟场景的网格模型的示意图;

图6示出本示例性实施方式中一种虚拟场景中的水域的示意图;

图7示出本示例性实施方式中一种图片资源的示意图;

图8示出本示例性实施方式中一种虚拟场景中水域的内发光效果的示意图;

图9示出本示例性实施方式中一种计算第一颜色混合权重的流程示意图;

图10示出本示例性实施方式中一种计算第二颜色混合权重的流程示意图;

图11示出本示例性实施方式中一种渲染水域单元格的水下元素的流程示意图;

图12示出本示例性实施方式中一种对添加焦散效果后的水下元素进行渲染的流程示意图;

图13示出本示例性实施方式中一种对水下元素进行渲染处理的过程的示意图;

图14示出本示例性实施方式中另一种对水下元素进行渲染处理的过程的示意图;

图15示出本示例性实施方式中一种放置水域单元格的流程示意图;

图16示出本示例性实施方式中一种虚拟场景中的水域编辑的过程的示意图;

图17示出本示例性实施方式中一种虚拟场景中的水域编辑装置的结构示意图;

图18示出本示例性实施方式中一种电子设备的结构示意图。

具体实施方式

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

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

相关技术中,通过使用图1所示的场景光照和图2所示的虚拟场景中的深度纹理获取水域深度值,并根据水域深度值设置水域效果,然而,在部分虚拟场景中,如2D游戏场景中,无法设置场景光照或深度纹理,因此在设置水域时,使用水域图片呈现静态的水域效果,使得虚拟场景中的水域视觉效果单一,缺乏真实感,且不可编辑,降低了用户与虚拟场景的交互性。

鉴于上述一个或多个问题,本公开示例性实施方式首先提供一种虚拟场景中的水域编辑方法。下面结合图3对本示例性实施方式运行环境的系统架构进行说明。

参考图3所示,系统架构300可以包括终端设备310和服务器320。终端设备310可以是智能手机、平板电脑、笔记本电脑等电子设备,终端设备310可以用于获取虚拟场景中的网格模型。服务器320泛指提供本示例性实施方式中提供虚拟场景中的水域编辑相关服务的后台系统,如可以是实现虚拟场景中的水域编辑方法的服务器。服务器320可以是一台服务器或多台服务器形成的集群,本公开对此不做限定。终端设备310与服务器320之间可以通过有线或无线的通信链路形成连接,以进行数据交互。

在一种实施方式中,可以由终端设备310执行本示例性实施方式中的虚拟场景中的水域编辑方法。例如,虚拟场景可以包括2D游戏场景,终端设备310可以运行该2D游戏,水域可以是该2D游戏场景中的水域,可以通过终端设备310执行虚拟场景中的水域编辑方法,获取该2D游戏场景的网格模型,并在网格模型中创建水域单元格,通过对水域单元格的水上元素进行编辑,并基于内发光信息确定的颜色渲染参数对水下元素进行渲染,以实现对该2D游戏场景中的水域进行动态编辑,从而提高游戏的真实感。

在一种实施方式中,可以由服务器320实时获取虚拟场景中的网格模型,并在网格模型中创建水域单元格;对水域单元格的水上元素进行编辑;并获取内发光信息,基于内发光信息确定颜色渲染参数,再利用颜色渲染参数对水域单元格的水下元素进行渲染,并将虚拟场景中的水域的编辑结果发送至终端设备310,使终端设备310呈现虚拟场景中的水域编辑结果。

下面结合图4对虚拟场景中的水域编辑方法进行说明。图4示出了虚拟场景中的水域编辑方法的示例性流程,包括以下步骤S410至S440:

步骤S410,获取虚拟场景的网格模型,在网格模型中创建水域单元格;

步骤S420,对水域单元格的水上元素进行编辑;

步骤S430,获取内发光信息,基于内发光信息确定颜色渲染参数;

步骤S440,利用颜色渲染参数对水域单元格的水下元素进行渲染。

基于上述方法,一方面,使用水域单元格生成水域的整体效果,对水域单元格的水上元素进行编辑,并根据内发光信息确定的颜色渲染参数对水域单元格的水下元素进行渲染,实现了在虚拟场景中动态编辑水域效果,提升了虚拟场景的真实感,增强了虚拟场景的交互性,改善了用户体验;另一方面,本方案能够结合内发光信息确定颜色渲染参数,进一步利用颜色渲染参数对水下元素进行渲染,以实现水下元素的着色效果,提升了虚拟场景的生动性,使虚拟场景中的水域更具真实感,进一步增强了用户的沉浸感。再一方面,使用内发光信息确定颜色渲染参数,无需额外设置场景光照以确定颜色渲染参数,降低了虚拟场景的构建功耗,进一步提升了运行效率。

下面对图4中的每个步骤进行具体说明。

参考图4,在步骤S410中,获取虚拟场景的网格模型,在网格模型中创建水域单元格。

其中,虚拟场景可以是通过计算机通过数字通讯技术勾勒出的数字化场景,本公开对虚拟场景的具体内容不作特殊限定,例如,虚拟场景可以包括游戏场景,游戏场景可以是游戏中地图、建筑、道具、环境等元素的集合。虚拟场景可以从视觉效果上进一步分为3D虚拟场景、2.5D虚拟场景和2D虚拟场景;其中,3D虚拟场景可以在场景三维上下左右前后移动,透视感较强,物体表面的渲染材料和纹理、光线和阴影以一种逼真的方式投射在虚拟世界的每处角落;2.5D虚拟场景中,虽然环境和角色都是三维几何体,但虚拟场景中的虚拟对象只能在两个维度上移动;2D虚拟场景中,环境和角色都使用平面图形,相比于3D虚拟场景,2D游戏场景中没有三维几何结构,也没有透视关系;示例性的,可以对2D游戏场景倾斜一定的角度等来构建2.5D游戏场景,从而模拟出一种视觉上伪3D效果的游戏场景。

网格模型可以是虚拟场景的构建工具,可以基于网格模型中的单元格构建虚拟场景,本公开对网格模型中单元格的数量、尺寸以及排列方式不作特殊限定,举例而言,可以使用图5所示的网格模型构建2.5D游戏场景。水域单元格可以是网格模型中用于构建水域的一个或多个单元格,本公开对水域单元格的尺寸、数量和排列方式不作特殊限定,例如,可以使用水域单元格构建图6所示的虚拟场景中的水域。

在一种实施方式中,可以在获取到虚拟场景的网格模型后,在网格模型中创建水域单元格,以实现对虚拟场景中水域的动态编辑;本公开对虚拟场景的网格模型的获取方式以及水域单元格的创建方式不作特殊限定。例如,若虚拟场景是一种2D游戏场景,玩家可以通过点击创建水域按钮,选择在游戏场景中创建水域,此时可以在网格模型中新建单元格,并将该单元格的类型设置为水域,从而进一步进行单元格的着色,以实现游戏场景中的创建水域功能。

创建水域单元格后,可以在步骤S420中,对水域单元格的水上元素进行编辑。

其中,水域单元格可以包括水上元素和水下元素,通过编辑水上元素可以实现虚拟场景中水域的水面效果,例如,对水上元素每个边的资源进行动态变更,以改变水域的范围;通过编辑水下元素可以改善水域的平面化,使水域的显示更立体,更真实,例如,可以通过渲染水下元素,使2D虚拟场景中的水域在视觉上具有深度效果,使2D虚拟场景中的水域更生动。

在一种实施方式中,上述对水域单元格的水上元素进行编辑,可以包括下述步骤:

通过水上元素的父容器对水上元素设置图片资源,以编辑水上元素的岸边元素信息。

其中,水上元素的父容器可以是对水上元素进行的处理的工具,本公开对水上元素的父容器的定义方法和功能不作特殊限定,例如,可以通过水上元素的父容器对水上元素批量化设置背景图片。图片资源可以包括在虚拟场景中构建水域所用到的图片,本公开对图片资源的具体内容不作特殊限定,示例性的,图片资源可以包括图7所示的多张图片。岸边元素信息可以包括水域单元格的的四条边的图片信息,本公开对岸边元素信息的具体内容不作特殊限定,举例而言,当水上元素的边与虚拟场景中的陆地接触时,水上元素的边被可以被设置为图7中的river_a_1.png,river_a_2.png等岸边图片;当水上元素的边与虚拟场景中的水域接触时,不对水上元素的边设置图像资源。

举例而言,在虚拟场景中创建水域时,可以在获取虚拟场景的网格模型,并创建水域单元格后,首先判断是否首次创建水上元素,若是,可以创建水上元素的父容器,并将水上元素的父容器添加到虚拟场景中的层级中;若否,则直接创建水上元素,并将该水上元素添加到水上元素的父容器中;再通过水上元素的父容器对水上元素设置图片资源,以实现水上元素的岸边效果。

本示例性实施方式中,通过水上元素的父容器对水上元素的图片资源进行设置,以编辑水上元素的岸边元素信息,实现水上元素的岸边效果,可以有效减少构建虚拟场景的变量的数量,提高运行效率。

继续参考图4,在步骤S430中,可以获取内发光信息,基于内发光信息确定颜色渲染参数;

其中,内发光信息可以是对虚拟场景中水域叠加内发光效果后,水域的内发光显示信息,本公开对内发光效果信息的具体内容和获取方式不作特殊限定,示例性的,可以根据叠加内发光效果后的水域的内发光颜色信息,以获取上述内发光信息;还可以通过叠加内发光效果后的水域的内发光透明度信息,以获取上述内发光信息。

举例而言,可以通过GLSL语言对虚拟环境中的水域的边界像素的透明度进行圆采样,再对圆采样的结果取平均值,以得到如图8所示的水域的内发光效果。

在一种实施方式中,上述内发光信息可以包括第一内发光颜色信息,上述颜色渲染参数可以包括第一颜色混合权重;上述获取内发光信息,基于内发光信息确定颜色渲染参数,可以包括下述步骤:

基于预设阴影参数获取第一内发光颜色信息;

根据第一内发光颜色信息确定阴影深度值,并基于阴影深度值计算第一颜色混合权重;

其中,第一内发光颜色信息可以是基于预设阴影参数得到的内发光效果的颜色信息,本公开对第一内发光颜色信息的获取方式和具体内容不作特殊限定,例如,第一内发光颜色信息可以包括叠加了内发光效果的水域的某个坐标的RGB颜色值。预设阴影参数可以包括对水域施加水底阴影效果所用的参数,本公开对预设阴影参数的具体内容和获取方式不作特殊限定,举例而言,预设阴影参数可以包括预设阴影模糊度和预设阴影强度等。第一颜色混合权重可以是用于颜色混合的权重值,本公开对第一颜色混合权重的获取方式不作特殊限定,示例性的,可以根据水域的深度值计算第一颜色混合权重,第一颜色混合权重还可以是预设的权重值。

深度值可以表示水域的深度,阴影深度值可以是通过预设阴影参数得到的第一内发光颜色信息获取的深度值,本公开对根据第一内发光颜色信息确定阴影深度值的具体步骤不作特殊限定。

在一种实施方式中,可以根据内发光颜色信息的饱和度确定深度值,例如,如图8所示,水域中某处坐标的内发光颜色的饱和度越高,则可以表示该处坐标的水域深度越浅,深度值越小。

上述根据第一内发光颜色信息确定阴影深度值,是为了根据内发光效果的颜色值所确定的深度值,以代替3D虚拟场景中水域的深度值。

在一种实施方式中,上述基于预设阴影参数获取第一内发光颜色信息,可以包括,根据预设阴影模糊度和预设阴影强度获取第一内发光颜色信息;举例而言,可以通过GLSL语言设置内发光构建方法depth(),将预设阴影模糊度shadowBlur和预设阴影强度shadowStrength作为参数传入depth(),根据depth()的输出结果确定第一内发光颜色信息。

在获取到第一内发光颜色信息后,可以基于第一内发光颜色信息进一步确定第一颜色混合权重,在一种实施方式中,上述根据第一内发光颜色信息确定阴影深度值,并基于阴影深度值计算第一颜色混合权重,如图9所示,可以包括步骤S910~S920:

步骤S910,对第一内发光颜色信息进行线性插值运算,以确定阴影深度值;

步骤S920,根据阴影深度值与预设阴影参数计算第一颜色混合权重。

可以在步骤S910中,对第一内发光颜色信息进行线性插值运算,以得到阴影深度值,再在步骤S920中,根据阴影深度值和预设阴影参数计算第一颜色混合权重。

举例而言,可以通过GLSL语言计算第一颜色混合权重,可以使用smoothstep()函数对第一内发光颜色信息进行线性插值运算,以确定阴影深度值shadowDepth;再通过预设阴影参数中的预设阴影尺寸确定阴影的uv坐标shadowUv;根据噪声函数foamNoise以及shadowUv计算第一颜色混合权重的初始值;最后将第一颜色混合权重的初始值和阴影深度值shadowDepth输入step()函数,对step()函数的输出结果进行计算,以得到第一颜色混合权重。

在一种实施方式中,上述内发光信息包括第二内发光颜色信息,上述颜色渲染参数包括第二颜色混合权重;上述获取内发光信息,基于内发光信息确定颜色渲染参数,可以包括下述步骤:

基于预设浮沫参数获取第二内发光颜色信息;

根据第二内发光颜色信息确定浮沫深度值,并基于浮沫深度值计算第二颜色混合权重;

其中,第二内发光颜色信息可以是基于预设浮沫参数得到的内发光效果的颜色信息,本公开对第二内发光颜色信息的获取方式和具体内容不作特殊限定,例如,第二内发光颜色信息可以包括叠加了内发光效果的水域的某个坐标的RGB颜色值。预设浮沫参数可以包括对水域施加浮沫效果所用的参数,本公开对预设浮沫参数的具体内容和获取方式不作特殊限定,举例而言,预设浮沫参数可以包括预设浮沫模糊度和预设浮沫强度等。第二颜色混合权重可以是用于颜色混合的权重值,本公开对第二颜色混合权重的获取方式不作特殊限定。

在一种实施方式中,上述基于预设浮沫参数获取第二内发光颜色信息,可以包括,根据预设浮沫模糊度和预设浮沫强度获取第二内发光颜色信息;举例而言,可以通过GLSL语言设置内发光构建方法depth(),将预设浮沫模糊度foamBlur和预设浮沫强度foamStrength作为参数传入depth(),根据depth()方法的输出结果确定第二内发光颜色信息。

在获取到第二内发光颜色信息后,在一种实施方式中,如图10所示,上述根据第二内发光颜色信息确定浮沫深度值,并基于浮沫深度值计算第二颜色混合权重,可以包括步骤S1010~S1020:

步骤S1010,对第二内发光颜色信息进行线性插值运算,以确定浮沫深度值;

步骤S1020,根据浮沫深度值与预设浮沫参数计算第二颜色混合权重。

可以在步骤S1010中,对第二内发光颜色信息进行线性插值运算,以得到浮沫深度值,再在步骤S1020中,根据浮沫深度值和预设浮沫参数计算第二颜色混合权重;举例而言,可以通过GLSL语言计算第二颜色混合权重。

基于上述图9和图10的方法,通过对内发光颜色信息进行线性插值得到深度值,再相比于3D虚拟场景中需要设置场景光源,以根据场景光照确定深度值的方法,降低了虚拟场景的构建功耗,进一步提升了运行效率。

继续参考图4,在获取到颜色渲染参数后,可以在步骤S440中,利用颜色渲染参数对水域单元格的水下元素进行渲染。

可以通过颜色渲染参数对不同的水域颜色进行混合,利用混合后的颜色对对水域单元格的水下元素进行渲染。

在一种实施方式中,颜色渲染参数可以包括第一颜色混合权重,上述利用颜色渲染参数对水域单元格的水下元素进行渲染,可以包括,利用第一颜色混合权重对阴影颜色与水域单元格的水下元素的颜色进行混合,以对水域单元格的水下元素进行渲染。

其中,阴影颜色可以是根据预设阴影参数得到的阴影颜色,本公开对阴影颜色的获取方式不作特殊限定,示例性的,阴影颜色可以是根据预设阴影透明度计算得到的阴影颜色;上述对颜色进行混合可以包括对至少两种颜色的进行混色处理,本公开对混合的具体步骤不作特殊限定,例如,可以通过求取待混合颜色的混合权重,以根据混合权重对待混合颜色进行混合;还可以直接对待混合颜色进行基本运算,以实现对待混合颜色进行混色处理。

在一种实施方式中,颜色渲染参数可以包括第二颜色混合权重,上述利用颜色渲染参数对水域单元格的水下元素进行渲染,可以包括,利用第二颜色混合权重对预设浮沫颜色与水域单元格的水下元素的颜色进行混合,以对水域单元格的水下元素进行渲染。

此外,还可以利用颜色渲染参数对添加焦散效果后的水下元素的进行渲染,在一种实施方式中,上述利用颜色渲染参数对水域单元格的水下元素进行渲染,如图11所示,可以包括步骤S1110~S1120:

步骤S1110,利用预设焦散参数与焦散噪声得到焦散颜色,并将水域单元格的水下元素的基础颜色与焦散颜色进行混合,以对水下元素添加焦散效果。

其中,预设焦散参数可以是实现水面焦散效果所用的参数,本公开对预设焦散参数的具体内容和获取方式不作特殊限定,示例性的,预设焦散参数可以包括预设焦散尺寸,预设焦散强度等。

举例而言,可以将预设焦散尺寸、预设焦散强度等预设焦散参数输入焦散噪声函数,以获取焦散颜色causticsColor;再将水下元素的基础颜色baseColor与焦散颜色causticsColor进行混合,如可以通过baseColor与causticsColor的乘积再加上baseColor,以确定混合后的颜色,并根据混合后的颜色对水下元素添加焦散效果。该方法利用焦散噪声函数实现了水域的uv坐标随时间变化的动态焦散效果,为虚拟场景中的水域赋予流动性,提高了虚拟场景中的水域的生动性。

在步骤S1110中,为水下元素添加焦散效果后,可以在步骤S1120中,利用颜色渲染参数对添加焦散效果后的水下元素进行渲染。

利用颜色渲染参数对添加了焦散效果后的水下元素进行渲染,可以使水域的水下元素呈现多种动态效果。

在一种实施方式中,可以利用第一颜色混合权重对阴影颜色与添加焦散效果后的水域单元格的水下元素的颜色进行混合,以对水域单元格的水下元素进行渲染,从而使水域同时具有焦散效果和水底阴影效果。

在一种实施方式中,还可以利用第二颜色混合权重对预设浮沫颜色与添加焦散效果后的水域单元格的水下元素的颜色进行混合,以对水域单元格的水下元素进行渲染,可以使虚拟场景中的水域同时具有岸边浮沫效果和焦散效果。

在一种实施方式中,上述利用颜色渲染参数对添加焦散效果后的水下元素进行渲染,可以包括:

利用颜色渲染参数将添加焦散效果后的水下元素的颜色与阴影颜色、预设浮沫颜色进行混合,并利用混合后的颜色对水下元素进行渲染。

本示例性实施方式中,将添加焦散效果后的水下元素的颜色与阴影颜色、预设浮沫颜色进行混合,可以时水下元素同时具有焦散效果,水底阴影效果和浮沫效果,模拟了现实场景中的水域呈现效果,提升了虚拟场景中水域的真实感。

在一种实施方式中,上述颜色渲染参数可以包括第一颜色混合权重与第二颜色混合权重;如图12所示,上述利用颜色渲染参数将添加焦散效果后的水下元素的颜色、阴影颜色、预设浮沫颜色进行混合,并利用混合后的颜色对水下元素进行渲染,可以包括步骤S1210~S1240:

步骤S1210,根据预设阴影透明度与添加焦散效果后的水下元素的颜色,以计算阴影颜色;

步骤S1220,基于第一颜色混合权重,对阴影颜色与添加焦散效果后的水下元素的颜色进行混合,以得到阴影混合颜色;

步骤S1230,基于第二颜色混合权重,将阴影混合颜色与预设浮沫颜色进行混合,以得到混合后的颜色;

步骤S1240,通过水下元素的父容器利用混合后的颜色对水下元素进行渲染。

在步骤S1210中,对预设阴影参数中的预设阴影透明度与添加焦散效果后的水下元素的颜色进行计算,可以得到真实感强的阴影颜色;在得到阴影颜色后,在步骤S1220中,基于第一颜色混合权重,对阴影颜色与添加焦散效果后的水下元素的颜色进行混合,从而得到阴影混合颜色;在步骤S1230中,基于第二颜色混合权重,进一步将阴影混合颜色与预设浮沫参数中的预设浮沫颜色进行混合;在步骤S1240中,可以通过水下元素的父容器利用步骤S1230中混合后的颜色对所有虚拟场景中的水下元素进行渲染,使得虚拟场景中的水域具有深度效果,水底阴影效果,焦散效果以及浮沫效果。

需要说明的是,上述利用颜色渲染参数将添加焦散效果后的水下元素的颜色、阴影颜色、预设浮沫颜色进行混合的颜色混合顺序,包括但不限于图12所示的颜色混合的顺序,例如,如图13所示,还可以在对水下元素添加焦散效果后,先基于第二颜色混合权重,对预设浮沫颜色和添加焦散效果后的水下元素的颜色进行混合,以得到浮沫混合颜色;再根据预设阴影透明度获取阴影颜色后,使用第二颜色混合权重将浮沫混合颜色与阴影颜色进行混合,利用混合后的颜色对水下元素进行渲染。

在一种实施方式中,可以使用水下元素的父容器对虚拟场景中所有水域的水下元素进行渲染;当需要对新创建的水下元素进行渲染时,仅需要将该水下元素添加到水下元素的父容器中,该水下元素就可以拥有水下元素的父容器的属性和方法,从而实现水下元素的父容器对其拥有的所有水下元素进行着色渲染。

本示例性实施方式中,使用水下元素的父容器对虚拟场景中的所有水下元素进行渲染,减少了渲染过程中变量的生成,减少了实现渲染方法的代码量,进一步提高了虚拟场景中水域的构建效率,降低了运行功耗。

在一种实施方式中,如图14所示,可以对虚拟场景中渲染后的水域图像帧进行帧循环处理,以实现焦散效果,浮沫效果以及阴影效果的循环播放,从而实现虚拟场景中水域的动态效果。

参考图14所示,可与首先将渲染所用到的预设焦散参数,预设浮沫参数以及预设阴影参数传入帧循环处理模块,帧循环处理模块可以将预设焦散参数,预设浮沫参数以及预设阴影参数传入渲染处理模块,以对水下元素进行渲染,并根据渲染结果实现焦散效果循环播放,浮沫效果循环播放以及阴影效果循环播放,以实现水域的动态效果。

渲染处理模块在接收到预设焦散参数,预设浮沫参数以及预设阴影参数后,可以将预设焦散参数传入焦散噪声函数,以得到焦散颜色,再将焦散颜色与水域基础颜色混合,从而为水下元素添加焦散效果;渲染处理模块在接收到预设浮沫参数后,可以根据内发光算法以及预设浮沫参数计算出内发光颜色值,对该内发光颜色值进行线性插值运算后,可以得到浮沫深度值,基于浮沫深度值可以计算得到浮沫颜色混合权重,再根据浮沫颜色混合权重对添加了焦散效果的水下元素的颜色和预设浮沫颜色进行混合,以得到浮沫混合颜色;渲染处理模块在接收到预设阴影参数后,可以根据内发光算法以及预设阴影参数计算出内发光颜色值,对该内发光颜色值进行线性插值运算后,可以得到阴影深度值,基于阴影深度值可以得到阴影颜色混合权重,根据预设阴影透明的和浮沫混合颜色可以计算阴影颜色,最后根据阴影颜色混合权重对阴影颜色和浮沫混合颜色进行混合,使用混合后的颜色对水下元素进行渲染,以实现水下元素的焦散效果,浮沫效果以及阴影效果。

本示例性实施方式中,通过帧循环处理模块,将预设参数传入渲染处理模块,并对渲染得到的焦散效果,阴影效果和浮沫效果循环播放,以实现水域的动态效果,使虚拟场景中的水域更具真实感,增强了虚拟场景中的水域的生动性。

在一种实施方式中,可以通过将水域单元格放置在目标位置,以实现水域的连通或拆分,从而实现动态编辑虚拟场景中的水域。

在一种实施方式中,如图15所示,上述将水域单元格放置在目标位置,可以包括步骤S1510至步骤S1520:

步骤S1510,将水域单元格的水上元素设置为悬浮状态;

步骤S1520,在悬浮状态下,将水上元素移动至目标位置,并将水上元素设置为非悬浮状态。

其中,悬浮状态可以是水上元素在虚拟场景的空中飘浮的状态,本公开对悬浮状态的设置方式不作特殊限定,例如,可以通过修改水上元素的纵向坐标以设置水上元素的悬浮状态。

目标位置可以包括水上元素被放置的位置,本公开对目标位置的具体内容不作特殊限定,示例性的,目标位置可以包括虚拟场景中的位置坐标,还可以包括用户在虚拟场景中用鼠标点击的位置坐标。

在步骤S1510中,可以将水域单元格的水上元素设置为悬浮状态,以表示该水域单元格可以被移动,在步骤S820中,将该水上元素移动至目标位置,并将水上元素设置为非悬浮状态,以实现将水上元素放置在目标位置的效果。

举例而言,可以通过水上元素的父容器可以对水上元素进行移动,移除,悬浮,放置等操作,并通过对水上元素的图片资源进行动态变更,以实现对水域的范围进行动态的连通和拆分,如水域单元格的尺寸可以是4*4像素,在移动某个水域单元格时,可以使用图7中的river.png对水上元素进行设置,并将水域单元格的水上元素的纵向坐标向上偏移,以将该水上元素设置为悬浮状态;在放置某个水域单元格时,可以首先判断用户是否要在目标位置放置该水域单元格,如图6所示,若用户点击图中的对号时,则确定用户需要在目标位置放置该水域单元格,此时水上元素的父容器可以通过将水上元素设置为图7中river_inside.png的图片资源,以实现水域的连通;然后可以创建水下元素的父容器,以使用OpenGL(Open Graphics Library,开放图形库)接口,对水域单元格的水下元素进行渲染,以进一步实现水域单元格的水下元素的着色效果,通过使用OpenGL接口,可以在虚拟场景中的水域发生任意形变,如连通或拆分时,即时对该水域的水下元素进行渲染,以实现虚拟场景中水域的自动编辑。

基于上述方法,实现了在虚拟场景中动态编辑水域效果,提升了虚拟场景的真实感,增强了虚拟场景的交互性,改善了用户体验。

在一种实施方式中,虚拟场景可以是一种2D游戏场景,水域可以是该2D游戏场景中的水域,玩家可以在该2D游戏场景中动态编辑水域,则本公开的虚拟场景的水域编辑方法的一种示例性流程如图16所示,可以根据步骤S1601~S1615对该2D游戏场景中的水域进行编辑,图16中提到的图片资源均来自图7:

步骤S1601,玩家选择在游戏场景中创建水域;

步骤S1602,判断在该游戏场景中是否首次创建水上元素,若是,跳转至步骤S1603;若若否,跳转至步骤S1604;

步骤S1603,创建水上元素的父容器,并将该父容器添加到游戏场景中;

步骤S1604,创建水上元素,并将该水上元素添加到水上元素的父容器中;

步骤S1605,悬浮水上元素:将水上元素的图片资源设置为river.png,并将该水上元素设置为悬浮状态;

步骤S1606,基于4*4的水域单元格移动该水上元素;

步骤S1607,是否放置水上元素,若是,跳转至步骤S1608;若否,跳转至步骤S1609;

步骤S1608,开始创建水下元素并放置水上元素;

步骤S1609,移除水上元素;将水上元素从水上元素的父容器中移除;

步骤S1610,是否首次创建水下元素,若是,跳转至步骤S1611;若否,跳转至步骤S1613;

步骤S1611,创建水下元素的父容器,并将该容器添加到游戏场景中,调整该容器的层级至水上元素父容器之下;

步骤S1612,对该容器施加图14所示的渲染处理方法;

步骤S1613,创建水下元素,并将水下元素添加到水下元素父容器中,将该水下元素图片资源设置为river_inside.png;

步骤S1614,放置水上元素;将水上元素设置为非悬浮状态;

步骤S1615,设置水上元素四个边的图片资源;根据上下左右格子是否有其他水域来设置四个边图片资源:设置上边图片:如果上边没有水域,右边没有水域:river_a_1.png;如果上边没有水域,右边有水域:river_a_2.png;设置右边图片:如果右边没有水域,上边没有水域:river_b_1.png;如果右边没有水域,上边有水域:river_b_2.png;设置下边图片:如果下边没有水域,右边有水域:river_c_1.png;如果下边没有水域,右边没有水域:river_c_2.png;设置左边图片:如果左边没有水域,上边有水域:river_d_1.png;如果左边没有水域,上边没有水域:river_d_2.png;设置层级关系:左边图片>下边图片>右面图片>上边图片。

本示例性实施方式中,可以跟随玩家意愿实现动态编辑游戏场景中的水域,增强了玩家与游戏场景的交互性,提升了游戏的生动性和体验性。

本公开的示例性实施方式还提供一种虚拟场景中的水域编辑装置。如图17所示,该虚拟场景中的水域编辑装置1700可以包括:

水域单元格创建模块1710,被配置为获取虚拟场景的网格模型,在网格模型中创建水域单元格;

水上元素编辑模块1720,被配置为对水域单元格的水上元素进行编辑;

颜色渲染参数确定模块1730,被配置为获取内发光信息,基于内发光信息确定颜色渲染参数;

水下元素渲染模块1740,被配置为利用颜色渲染参数对水域单元格的水下元素进行渲染。

在一种实施方式中,上述内发光信息包括第一内发光颜色信息,颜色渲染参数包括第一颜色混合权重;上述获取内发光信息,基于内发光信息确定颜色渲染参数,可以包括:

基于预设阴影参数获取第一内发光颜色信息;

根据第一内发光颜色信息确定阴影深度值,并基于阴影深度值计算第一颜色混合权重;

上述利用颜色渲染参数对水域单元格的水下元素进行渲染,可以包括:

利用第一颜色混合权重对阴影颜色与水域单元格的水下元素的颜色进行混合,以对水域单元格的水下元素进行渲染。

在一种实施方式中,上述根据第一内发光颜色信息确定阴影深度值,并基于阴影深度值计算第一颜色混合权重,可以包括:

对第一内发光颜色信息进行线性插值运算,以确定阴影深度值;

根据阴影深度值与预设阴影参数计算第一颜色混合权重。

在一种实施方式中,上述内发光信息包括第二内发光颜色信息,上述颜色渲染参数包括第二颜色混合权重;上述获取内发光信息,基于内发光信息确定颜色渲染参数,可以包括:

基于预设浮沫参数获取第二内发光颜色信息;

根据第二内发光颜色信息确定浮沫深度值,并基于浮沫深度值计算第二颜色混合权重;

上述利用颜色渲染参数对水域单元格的水下元素进行渲染,可以包括:

利用第二颜色混合权重对预设浮沫颜色与水域单元格的水下元素的颜色进行混合,以对水域单元格的水下元素进行渲染。

在一种实施方式中,上述根据第二内发光颜色信息确定浮沫深度值,并基于浮沫深度值计算第二颜色混合权重,可以包括:

对第二内发光颜色信息进行线性插值运算,以确定浮沫深度值;

根据浮沫深度值与预设浮沫参数计算第二颜色混合权重。

在一种实施方式中,上述利用颜色渲染参数对水域单元格的水下元素进行渲染,可以包括:

利用预设焦散参数与焦散噪声得到焦散颜色,并将水域单元格的水下元素的基础颜色与焦散颜色进行混合,以对水下元素添加焦散效果;

利用颜色渲染参数对添加焦散效果后的水下元素进行渲染。

在一种实施方式中,上述利用颜色渲染参数对添加焦散效果后的水下元素进行渲染,可以包括:

利用颜色渲染参数将添加焦散效果后的水下元素的颜色与阴影颜色、预设浮沫颜色进行混合,并利用混合后的颜色对水下元素进行渲染。

在一种实施方式中,其特征在于,上述颜色渲染参数包括第一颜色混合权重与第二颜色混合权重;上述利用颜色渲染参数将添加焦散效果后的水下元素的颜色、阴影颜色、预设浮沫颜色进行混合,并利用混合后的颜色对水下元素进行渲染,可以包括:

根据预设阴影透明度与添加焦散效果后的水下元素的颜色,以计算阴影颜色;

基于第一颜色混合权重,对阴影颜色与添加焦散效果后的水下元素的颜色进行混合,以得到阴影混合颜色;

基于第二颜色混合权重,将阴影混合颜色与预设浮沫颜色进行混合,以得到混合后的颜色;

通过水下元素的父容器利用混合后的颜色对水下元素进行渲染。

在一种实施方式中,上述对水域单元格的水上元素进行编辑,可以包括:

通过水上元素的父容器对水上元素设置图片资源,以编辑水上元素的岸边元素信息。

在一种实施方式中,上述虚拟场景中的水域编辑装置还可以包括水域单元格移动模块,被配置为将水域单元格放置在目标位置。

在一种实施方式中,上述将水域单元格放置在目标位置,可以包括:

将水域单元格的水上元素设置为悬浮状态;

在悬浮状态下,将水上元素移动至目标位置,并将水上元素设置为非悬浮状态。

上述装置中各部分的具体细节在方法部分实施方式中已经详细说明,因而不再赘述。

本公开的示例性实施方式还提供了一种计算机可读存储介质,可以实现为一种程序产品的形式,其包括程序代码,当程序产品在电子设备上运行时,程序代码用于使电子设备执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。在一种可选的实施方式中,该程序产品可以实现为便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在电子设备,例如个人电脑上运行。然而,本公开的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

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

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

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

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

本公开的示例性实施方式还提供一种电子设备。该电子设备可以包括处理器与存储器。存储器存储有处理器的可执行指令,如可以是程序代码。处理器通过执行该可执行指令来执行本示例性实施方式中的方法。

下面参考图18,以通用计算设备的形式对电子设备进行示例性说明。应当理解,图18显示的电子设备1800仅仅是一个示例,不应对本公开实施方式的功能和使用范围带来限制。

如图18所示,电子设备1800可以包括:处理器1810、存储器1820、总线1830、I/O(输入/输出)接口1840、网络适配器1850。

处理器1810可以包括一个或多个处理单元,例如:处理器1810可以包括中央处理器(Central Processing Unit,CPU)、AP(Application Processor,应用处理器)、调制解调处理器、显示处理器(Display Process Unit,DPU)、GPU(Graphics Processing Unit,图形处理器)、ISP(Image Signal Processor,图像信号处理器)、控制器、编码器、解码器、DSP(Digital Signal Processor,数字信号处理器)、基带处理器、人工智能处理器等。在一种实施方式中,可以由CPU获取虚拟场景的网格模型,并在网格模型中创建水域单元格;对水域单元格的水上元素进行编辑;并获取内发光信息,基于内发光信息确定颜色渲染参数;再利用颜色渲染参数对水域单元格的水下元素进行渲染。

存储器1820可以包括易失性存储器,例如RAM 1821、缓存单元1822,还可以包括非易失性存储器,例如ROM 1823。存储器1820还可以包括一个或多个程序模块1824,这样的程序模块1824包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。例如,程序模块1824可以包括上述装置1800中的各模块。

总线1830用于实现电子设备1800的不同组件之间的连接,可以包括数据总线、地址总线和控制总线。

电子设备1800可以通过I/O接口1840与一个或多个外部设备1900(例如键盘、鼠标、外置控制器等)进行通信。

电子设备1800可以通过网络适配器1850与一个或者多个网络通信,例如网络适配器1850可以提供如3G/4G/5G等移动通信解决方案,或者提供如无线局域网、蓝牙、近场通信等无线通信解决方案。网络适配器1850可以通过总线1830与电子设备1800的其它模块通信。

尽管图18中未示出,还可以在电子设备1800中设置其它硬件和/或软件模块,包括但不限于:显示器、微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。

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

所属技术领域的技术人员能够理解,本公开的各个方面可以实现为系统、方法或程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其他实施方式。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施方式仅被视为示例性的,本公开的真正范围和精神由权利要求指出。

应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限定。

技术分类

06120115630495