一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

游戏场景生成方法、装置、计算机设备及可读存储介质与流程

2021-10-09 16:17:00 来源:中国专利 TAG:图像处理 装置 生成 可读 场景


1.本技术涉及图像处理技术领域,特别是涉及一种游戏场景生成方法、装置、计算机设备及可读存储介质。


背景技术:

2.近年来,网络游戏成为人们生活中必不可少的一部分。而随着图像处理技术的飞速发展,无论是游戏的开发人员还是玩家,对于游戏场景的要求越来越高,因此,为了提升游戏画面品质、增强游戏的代入感,生成更加真实的游戏场景已经成为游戏设计过程中的关键点。
3.相关技术中,游戏中会涉及到一些下雨场景,为了达到下雨场景中物体表面有雨水冲刷的效果,需要通过美术作图的方式制作一些表征冲刷效果、水洼、水流等的贴图,将这些贴图覆盖在场景的实体模型上,达到模型有雨水冲刷的效果。
4.在实现本技术的过程中,申请人发现相关技术至少存在以下问题:
5.需要制作大量贴图才能实现下雨游戏场景的生成渲染,且贴图能够体现出的效果有限,不仅生成效率低,而且游戏场景缺乏真实感。


技术实现要素:

6.有鉴于此,本技术提供了一种游戏场景生成方法、装置、计算机设备及可读存储介质,主要目的在于解决目前贴图能够体现出的效果有限,不仅生成效率低,而且游戏场景缺乏真实感的问题。
7.依据本技术第一方面,提供了一种游戏场景生成方法,该方法包括:
8.生成原始游戏场景的场景高度图,所述场景高度图描述了所述原始游戏场景中的多个场景模型以及场景模型的面在所述原始游戏场景中的高低关系;
9.根据所述场景高度图,计算所述多个场景模型的元素浸入程度参数;
10.基于所述元素浸入程度参数和待添加元素的材质函数对所述多个场景模型进行烘焙处理,生成区域动态贴图和元素动态贴图,所述区域动态贴图指示了所述待添加元素在所述多个场景模型上形成的元素区域每帧的动态效果,所述元素动态贴图指示了所述待添加元素每帧在所述多个场景模型上的动态效果;
11.采用所述区域动态贴图和所述元素动态贴图对所述原始游戏场景进行渲染,生成烘焙有所述待添加元素的目标游戏场景。
12.可选地,所述生成原始游戏场景的场景高度图,包括:
13.按照预设划分尺寸,将所述原始游戏场景划分为多个场景区块;
14.在所述原始游戏场景中对所述多个场景区块中每个场景区块进行碰撞检测,生成所述每个场景区块的高度参数;
15.基于所述多个场景区块对应的高度参数对所述多个场景模型进行烘焙,生成所述原始游戏场景的场景高度图。
16.可选地,所述在所述原始游戏场景中对所述多个场景区块中每个场景区块进行碰撞检测,生成所述每个场景区块的高度参数,包括:
17.对于所述多个场景区块中每个场景区块,对所述场景区块进行碰撞检测,确定所述场景区块在所述原始游戏场景中的多个目标碰撞体,查询所述多个目标碰撞体在所述多个场景区块中所在的多个目标场景区块;
18.在所述多个目标场景区块中确定第一目标场景区块和第二目标场景区块,所述第一目标场景区块的高度是所述多个目标场景区块中最大的,所述第二目标场景区块的高度是所述多个目标场景区块中最小的;
19.将所述第一目标场景区块划分为预设数目的区块单元,在所述预设数目的区块单元中确定目标区块单元,所述目标区块单元的高度是所述预设数目的区块单元中最大的;
20.将所述目标区块单元的高度与预设高度进行比对,根据比对结果,生成所述场景区块的高度参数;
21.重复执行上述生成高度参数的过程,分别为所述每个场景区块生成高度参数。
22.可选地,所述将所述目标区块单元的高度与预设高度进行比对,根据比对结果,生成所述场景区块的高度参数,包括:
23.当所述比对结果指示所述目标区块单元的高度小于所述预设高度时,计算所述第一目标区块的高度与所述第二目标区块的高度的第一差值,按照所述第一差值生成所述高度参数;
24.当所述比对结果指示所述目标区块单元的高度大于等于所述预设高度时,继续将所述目标区块单元划分为所述预设数目的次级区块单元,并判断所述预设数目的次级区块单元中高度最高的次级区块单元的高度是否小于所述预设高度以及对所述高度最高的次级区块单元进行划分,直至确定高度小于所述预设高度的指定单元,计算所述指定单元的单元高度与所述第二目标区块的高度的第三差值,按照所述第三差值生成所述高度参数。
25.可选地,所述根据所述场景高度图,计算所述多个场景模型的元素浸入程度参数,包括:
26.对于所述多个场景模型中每个场景模型,在所述场景高度图中获取所述场景模型的高度参数以及遮挡系数值;
27.确定所述场景模型的法线向量,按照预设数值对所述法线向量进行偏移处理;
28.根据所述高度参数、所述遮挡系数值以及偏移后的所述法线向量,计算所述场景模型的元素浸入程度参数。
29.可选地,所述基于所述元素浸入程度参数和待添加元素的材质函数对所述多个场景模型进行烘焙处理,生成区域动态贴图和元素动态贴图,包括:
30.确定所述待添加元素的材质函数,按照所述材质函数对所述多个场景模型进行烘焙处理,为所述多个场景模型写入顶点色;
31.提取写入所述顶点色后的所述多个场景模型的红绿蓝rgb通道值;
32.基于所述rgb通道值中r通道的取值以及所述元素浸入程度参数进行计算,得到所述区域动态贴图;
33.读取所述rgb通道值中g通道的取值形成元素痕迹纹理图,读取所述rgb通道值中b通道的取值形成元素渐变图,并将所述元素痕迹纹理图与所述元素渐变图相乘,得到所述
元素动态贴图。
34.可选地,所述基于所述rgb通道值中r通道的取值以及所述元素浸入程度参数进行计算,得到所述区域动态贴图,包括:
35.确定所述多个场景模型的表面法线向量,基于阿尔法侵蚀算法对所述多个场景模型的表面法线向量、当前帧以及所述元素浸入程度参数进行烘焙,在所述多个场景模型的表面形成多个动态变化的初始元素区域;
36.按照预设边缘参数,将所述多个初始元素区域调整为预设形状;
37.查询第一预设变化周期,按照所述第一预设变化周期,在所述多个动态变化的初始元素区域上叠加多个动态变化的次级元素区域,所述多个动态变化的次级元素区域与所述多个动态变化的初始元素区域的变化方式以及形状一致;
38.基于预设插值函数将所述多个动态变化的次级元素区域与所述多个动态变化的初始元素区域进行融合处理,得到所述区域动态贴图。
39.可选地,所述方法还包括:
40.查询第二预设变化周期,在所述区域动态贴图中为所述多个动态变化的初始元素区域添加第一效果区域,所述第一效果区域在所述多个动态变化的初始元素区域中随着所述第二预设变化周期由大到小进行变化;
41.在所述第一效果区域上添加第二效果区域,所述第二效果区域随着所述第一效果区域由大到小的变化过程进行向上的减速运动;
42.确定所述原始游戏场景的场景光照以及环境光照,基于所述场景光照以及所述环境光照对所述第二效果区域进行渲染。
43.可选地,所述采用所述区域动态贴图和所述元素动态贴图对所述原始游戏场景进行渲染,生成烘焙有所述待添加元素的目标游戏场景,包括:
44.确定所述多个场景模型在所述原始游戏场景中的空间坐标,将所述区域动态贴图和所述元素动态贴图渲染至所述空间坐标构成的多个空间平面上;
45.以多个空间平面的法线向量为权重,将渲染至所述多个空间平面上的所述区域动态贴图和所述元素动态贴图进行融合,生成所述目标游戏场景;
46.基于所述待添加元素形成多个元素粒子,将所述多个元素粒子添加至所述目标游戏场景,控制所述多个元素粒子在所述目标游戏场景中由上到下降落。
47.依据本技术第二方面,提供了一种游戏场景生成装置,该装置包括:
48.生成模块,用于生成原始游戏场景的场景高度图,所述场景高度图描述了所述原始游戏场景中的多个场景模型以及场景模型的面在所述原始游戏场景中的高低关系;
49.计算模块,用于根据所述场景高度图,计算所述多个场景模型的元素浸入程度参数;
50.处理模块,用于基于所述元素浸入程度参数和待添加元素的材质函数对所述多个场景模型进行烘焙处理,生成区域动态贴图和元素动态贴图,所述区域动态贴图指示了所述待添加元素在所述多个场景模型上形成的元素区域每帧的动态效果,所述元素动态贴图指示了所述待添加元素每帧在所述多个场景模型上的动态效果;
51.渲染模块,用于采用所述区域动态贴图和所述元素动态贴图对所述原始游戏场景进行渲染,生成烘焙有所述待添加元素的目标游戏场景。
52.可选地,所述生成模块,用于按照预设划分尺寸,将所述原始游戏场景划分为多个场景区块;在所述原始游戏场景中对所述多个场景区块中每个场景区块进行碰撞检测,生成所述每个场景区块的高度参数;基于所述多个场景区块对应的高度参数对所述多个场景模型进行烘焙,生成所述原始游戏场景的场景高度图。
53.可选地,所述生成模块,用于对于所述多个场景区块中每个场景区块,对所述场景区块进行碰撞检测,确定所述场景区块在所述原始游戏场景中的多个目标碰撞体,查询所述多个目标碰撞体在所述多个场景区块中所在的多个目标场景区块;在所述多个目标场景区块中确定第一目标场景区块和第二目标场景区块,所述第一目标场景区块的高度是所述多个目标场景区块中最大的,所述第二目标场景区块的高度是所述多个目标场景区块中最小的;将所述第一目标场景区块划分为预设数目的区块单元,在所述预设数目的区块单元中确定目标区块单元,所述目标区块单元的高度是所述预设数目的区块单元中最大的;将所述目标区块单元的高度与预设高度进行比对,根据比对结果,生成所述场景区块的高度参数;重复执行上述生成高度参数的过程,分别为所述每个场景区块生成高度参数。
54.可选地,所述生成模块,用于当所述比对结果指示所述目标区块单元的高度小于所述预设高度时,计算所述第一目标区块的高度与所述第二目标区块的高度的第一差值,按照所述第一差值生成所述高度参数;当所述比对结果指示所述目标区块单元的高度大于等于所述预设高度时,继续将所述目标区块单元划分为所述预设数目的次级区块单元,并判断所述预设数目的次级区块单元中高度最高的次级区块单元的高度是否小于所述预设高度以及对所述高度最高的次级区块单元进行划分,直至确定高度小于所述预设高度的指定单元,计算所述指定单元的单元高度与所述第二目标区块的高度的第三差值,按照所述第三差值生成所述高度参数。
55.可选地,所述计算模块,用于对于所述多个场景模型中每个场景模型,在所述场景高度图中获取所述场景模型的高度参数以及遮挡系数值;确定所述场景模型的法线向量,按照预设数值对所述法线向量进行偏移处理;根据所述高度参数、所述遮挡系数值以及偏移后的所述法线向量,计算所述场景模型的元素浸入程度参数。
56.可选地,所述处理模块,用于确定所述待添加元素的材质函数,按照所述材质函数对所述多个场景模型进行烘焙处理,为所述多个场景模型写入顶点色;提取写入所述顶点色后的所述多个场景模型的红绿蓝rgb通道值;基于所述rgb通道值中r通道的取值以及所述元素浸入程度参数进行计算,得到所述区域动态贴图;读取所述rgb通道值中g通道的取值形成元素痕迹纹理图,读取所述rgb通道值中b通道的取值形成元素渐变图,并将所述元素痕迹纹理图与所述元素渐变图相乘,得到所述元素动态贴图。
57.可选地,所述处理模块,用于确定所述多个场景模型的表面法线向量,基于阿尔法侵蚀算法对所述多个场景模型的表面法线向量、当前帧以及所述元素浸入程度参数进行烘焙,在所述多个场景模型的表面形成多个动态变化的初始元素区域;按照预设边缘参数,将所述多个初始元素区域调整为预设形状;查询第一预设变化周期,按照所述第一预设变化周期,在所述多个动态变化的初始元素区域上叠加多个动态变化的次级元素区域,所述多个动态变化的次级元素区域与所述多个动态变化的初始元素区域的变化方式以及形状一致;基于预设插值函数将所述多个动态变化的次级元素区域与所述多个动态变化的初始元素区域进行融合处理,得到所述区域动态贴图。
58.可选地,所述处理模块,还用于查询第二预设变化周期,在所述区域动态贴图中为所述多个动态变化的初始元素区域添加第一效果区域,所述第一效果区域在所述多个动态变化的初始元素区域中随着所述第二预设变化周期由大到小进行变化;在所述第一效果区域上添加第二效果区域,所述第二效果区域随着所述第一效果区域由大到小的变化过程进行向上的减速运动;确定所述原始游戏场景的场景光照以及环境光照,基于所述场景光照以及所述环境光照对所述第二效果区域进行渲染。
59.可选地,所述渲染模块,用于确定所述多个场景模型在所述原始游戏场景中的空间坐标,将所述区域动态贴图和所述元素动态贴图渲染至所述空间坐标构成的多个空间平面上;以多个空间平面的法线向量为权重,将渲染至所述多个空间平面上的所述区域动态贴图和所述元素动态贴图进行融合,生成所述目标游戏场景;基于所述待添加元素形成多个元素粒子,将所述多个元素粒子添加至所述目标游戏场景,控制所述多个元素粒子在所述目标游戏场景中由上到下降落。
60.依据本技术第三方面,提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述第一方面中任一项所述方法的步骤。
61.依据本技术第四方面,提供了一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面中任一项所述的方法的步骤。
62.借由上述技术方案,本技术提供的一种游戏场景生成方法、装置、计算机设备及可读存储介质,本技术生成描述了多个场景模型在原始游戏场景中的高低关系的场景高度图,根据场景高度图计算多个场景模型的元素浸入程度参数,进而基于元素浸入程度参数和待添加元素的材质函数对多个场景模型进行烘焙处理,生成指示了待添加元素每帧在多个场景模型上的动态效果的元素动态贴图,以及指示了待添加元素在多个场景模型上形成的元素区域每帧的动态效果的区域动态贴图,并采用元素动态贴图和区域动态贴图对原始游戏场景进行渲染,生成烘焙有待添加元素的目标游戏场景,实现对雨天场景中水洼效果以及水流效果的精确渲染,增加模型表面积水细节的丰富度,提升游戏场景的生成效率以及真实感。
63.上述说明仅是本技术技术方案的概述,为了能够更清楚了解本技术的技术手段,而可依照说明书的内容予以实施,并且为了让本技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本技术的具体实施方式。
附图说明
64.通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本技术的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
65.图1示出了本技术实施例提供的一种游戏场景生成方法流程示意图;
66.图2a示出了本技术实施例提供的一种游戏场景生成方法流程示意图;
67.图2b示出了本技术实施例提供的一种游戏场景生成方法的示意图;
68.图2c示出了本技术实施例提供的一种游戏场景生成方法流程示意图;
69.图3示出了本技术实施例提供的一种游戏场景生成装置的结构示意图;
70.图4示出了本技术实施例提供的一种计算机设备的装置结构示意图。
具体实施方式
71.下面将参照附图更详细地描述本技术的示例性实施例。虽然附图中显示了本技术的示例性实施例,然而应当理解,可以以各种形式实现本技术而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本技术,并且能够将本技术的范围完整的传达给本领域的技术人员。
72.本技术实施例提供了一种游戏场景生成方法,如图1所示,该方法包括:
73.101、生成原始游戏场景的场景高度图,场景高度图描述了原始游戏场景中的多个场景模型以及场景模型的面在原始游戏场景中的高低关系。
74.102、根据场景高度图,计算多个场景模型的元素浸入程度参数。
75.103、基于元素浸入程度参数和待添加元素的材质函数对多个场景模型进行烘焙处理,生成区域动态贴图和元素动态贴图,区域动态贴图指示了待添加元素在多个场景模型上形成的元素区域每帧的动态效果,元素动态贴图指示了待添加元素每帧在多个场景模型上的动态效果。
76.104、采用区域动态贴图和元素动态贴图对原始游戏场景进行渲染,生成烘焙有待添加元素的目标游戏场景。
77.本技术实施例提供的方法,生成描述了多个场景模型在原始游戏场景中的高低关系的场景高度图,根据场景高度图计算多个场景模型的元素浸入程度参数,进而基于元素浸入程度参数和待添加元素的材质函数对多个场景模型进行烘焙处理,生成指示了待添加元素每帧在多个场景模型上的动态效果的元素动态贴图,以及指示了待添加元素在多个场景模型上形成的元素区域每帧的动态效果的区域动态贴图,并采用元素动态贴图和区域动态贴图对原始游戏场景进行渲染,生成烘焙有待添加元素的目标游戏场景,实现对雨天场景中水洼效果以及水流效果的精确渲染,增加模型表面积水细节的丰富度,提升游戏场景的生成效率以及真实感。
78.本技术实施例提供了一种游戏场景生成方法,如图2a所示,该方法包括:
79.201、生成原始游戏场景的场景高度图。
80.近年来,游戏场景的设计越来越逼真,游戏中很多的室外场景会发生一些天气的变化,比如雪天、雨天等等,从而使用户在游戏中的体验更加真实。其中,在渲染雨天的室外场景时,为了达到物体表面有雨水冲刷的效果,通常需要对游戏场景进行美术作图,制作一些用于表征物体表面潮湿、水滴痕迹等效果的贴图,将这些贴图覆盖在游戏场景的实体模型上,达到模拟雨天的效果。但是,申请人认识到,游戏场景中有些实体模型之间存在遮挡关系,比如大树会遮挡住一部分地面,使得不同位置的潮湿程度、积水深度以及是否有水流都是不同的,美术贴图难以展示出雨天场景的各种细节,导致游戏场景缺乏真实感,效果单一。因此,本技术提出了一种游戏场景生成方法,生成描述了多个场景模型在原始游戏场景中的高低关系的场景高度图,根据场景高度图计算多个场景模型的元素浸入程度参数,进而基于元素浸入程度参数和待添加元素的材质函数对多个场景模型进行烘焙处理,生成指示了待添加元素每帧在多个场景模型上的动态效果的元素动态贴图,以及指示了待添加元素在多个场景模型上形成的元素区域每帧的动态效果的区域动态贴图,并采用元素动态贴
图和区域动态贴图对原始游戏场景进行渲染,生成烘焙有待添加元素的目标游戏场景,实现对雨天场景中水洼效果以及水流效果的精确渲染,增加模型表面积水细节的丰富度,提升游戏场景的生成效率以及真实感。
81.由于在下雨的场景中,下雨到一定程度后,物体表面会有水,水不会太深,只是吸附在附体表面,而随着下雨的时间变长或者程度加大,表面高度较低的接缝处会开始积水,因此,需要确定原始游戏场景中各个模型之间以及模型自身的各个面之间的高低程度,进而按照高低程度确定哪里有积水。所以,本技术实施例中首先需要生成原始游戏场景的场景高度图,该场景高度图也即描述了多个场景模型以及场景模型的面在原始游戏场景中的高低关系,生成场景高度图的过程具体参见下述步骤一至步骤三:
82.步骤一、按照预设划分尺寸,将原始游戏场景划分为多个场景区块。
83.其中,预设划分尺寸可以是场景区块的高度,例如预设划分尺寸可以为2000米,这样,将原始游戏场景划分为2000高度的场景区块即可。假设原始游戏场景中有两个实体模型a和b,预设划分尺寸为2000米,则以该原始游戏场景的世界坐标点0位起点,将原始游戏场景划分为2000米高度的10个场景区块。
84.步骤二、在原始游戏场景中对多个场景区块中每个场景区块进行碰撞检测,生成每个场景区块的高度参数。
85.以多个场景区块中任一场景区块为例说明高度参数的生成过程:对于多个场景区块中每个场景区块,首先,对场景区块进行碰撞检测,确定场景区块在原始游戏场景中的多个目标碰撞体。具体地,可以调用physics.overlaybox函数查询场景区块在原始游戏场景中是否存在碰撞体。
86.随后,查询多个目标碰撞体在多个场景区块中所在的多个目标场景区块,并在多个目标场景区块中确定第一目标场景区块和第二目标场景区块。其中,第一目标场景区块的高度是多个目标场景区块中最大的,第二目标场景区块的高度是多个目标场景区块中最小的,也即在多个目标场景区块中确定最高一场景区块以及最低一场景区块。
87.接下来,将第一目标场景区块划分为预设数目的区块单元,在预设数目的区块单元中确定目标区块单元,目标区块单元的高度是预设数目的区块单元中最大的。也即将最高一场景区块继续划分,比如预设数目可以为10,则继续将最高一场景区块划分为10块区块单元,在这10块区块单元中确定最高一区块单元作为目标区块单元。
88.最后,将目标区块单元的高度与预设高度进行比对,根据比对结果,生成场景区块的高度参数。具体地,当比对结果指示目标区块单元的高度小于预设高度时,表示目标区块单元的高度已经低于预设高度了,因此,返回最后查询的第一目标区块的区块高度,计算第一目标区块的高度与第二目标区块的高度的第一差值,按照第一差值生成高度参数。相反,当比对结果指示目标区块单元的高度大于等于预设高度时,表示目标区块单元的高度仍旧高于预设高度,需要继续对该目标区块单元进行划分,因此,继续将目标区块单元划分为预设数目的次级区块单元,并判断预设数目的次级区块单元中高度最高的次级区块单元的高度是否小于预设高度以及对高度最高的次级区块单元进行划分,直至确定高度小于预设高度的指定单元,计算指定单元的单元高度与第二目标区块的高度的第三差值,按照第三差值生成高度参数。也即循环进行划分,直到划分找到高度低于预设高度的单元,进而生成高度参数。
89.通过重复执行上述生成高度参数的过程,便可以分别为每个场景区块生成高度参数。
90.步骤三、基于多个场景区块对应的高度参数对多个场景模型进行烘焙,生成原始游戏场景的场景高度图。
91.在确定了每个场景区块的高度参数后,便可以基于多个场景区块对应的高度参数对多个场景模型进行烘焙,生成原始游戏场景的场景高度图,实现了对场景分块并对场景区块使用碰撞检测生成高度图的过程,进而在后续利用该场景高度图处理原始游戏场景中实体模型之间的遮挡关系。
92.202、根据场景高度图,计算多个场景模型的元素浸入程度参数。
93.在本技术实施例中,生成了原始游戏场景的场景高度图后,便可以根据场景高度图,计算多个场景模型中每个场景模型的元素浸入程度参数,进而在后续按照元素浸入程度参数在原始游戏场景中增加水洼、水坑等特效。
94.其中,元素浸入程度参数指示了水滴浸入到场景模型的深度,能够表征场景模型表面的潮湿程度,进而在后续按照表征的潮湿程度判断场景模型的表面是否有水坑、水洼等。下面以多个场景模型中任一场景模型为例,描述场景模型的元素浸入程度参数的计算过程:
95.对于多个场景模型中每个场景模型,首先,在场景高度图中获取场景模型的高度参数以及遮挡系数值。随后,确定场景模型的法线向量,按照预设数值对法线向量进行偏移处理。最后,根据高度参数、遮挡系数值以及偏移后的法线向量,计算场景模型的元素浸入程度参数。具体地,可以利用下述公式1计算元素浸入程度参数:
96.公式1:smoothstep(0.5,1.0,heightmask)*height*_rainprogress*saturate((normalws.y 0.2)*2.0)
97.在公式1中,smoothstep表示平滑过渡函数;参数heightmask是在场景高度图中获取到的高度参数;参数height的取值等于遮挡系数值与0.8的乘积;normalws.y 0.2的含义是将法线向量向上偏移0.2,0.2也即预设数值,进而使垂直于地面的墙壁和树干也有潮湿度;saturate是一种用于将(normalws.y 0.2)*2.0的取值规范在0和1之间的函数。这样,将上述参数输入至公式1后,公式1输出的结果即为元素浸入程度参数。通过重复执行上述计算过程,便可以分别为每个场景模型计算元素浸入程度参数。需要说明的是,计算得到每个场景模型的元素浸入程度参数后,可将元素浸入程度参数作为lerp(线性插值)函数的插值将物体albedo(漫反射系数)、specular(反射率)、smoothness(平滑系数)、metallic(金属性)、occlusion(闭塞性)等参数向已经完成配置原始游戏场景中的相关值进行插值,完成对原始游戏场景的初步渲染。
98.203、确定待添加元素的材质函数,按照材质函数对多个场景模型进行烘焙处理,为多个场景模型写入顶点色,提取写入顶点色后的多个场景模型的rgb通道值。
99.在本技术实施例中,确定了多个场景模型的元素浸入程度参数后,开始按照元素浸入程度参数为原始游戏场景渲染诸如水坑、水流、涟漪等特效。其中,涟漪、水流等特效是通过场景模型的shader(着色器)实现的,因此,需要确定待添加元素的材质函数,按照材质函数对多个场景模型进行烘焙处理,为多个场景模型写入顶点色,提取写入顶点色后的多个场景模型的rgb(red green blue,红绿蓝)通道值。
100.需要说明的是,提取到的rgb通道值中,r通道的取值是雨滴的mask(覆盖范围),可以用于后续生成涟漪的特效;g通道的取值是水滴滚动的痕迹,可以用于后续生成元素痕迹纹理图;b通道是水滴滚动的渐变图,可以用于后续生成水纹的特效,也即形成元素渐变图。实际应用的过程中,为了便于后续利用多个场景模型的rgb通道值,可将rgb通道值按照通道拆分为3个法线贴图,以便后续对这3个法线贴图进行渲染、融合等操作。
101.204、基于rgb通道值中r通道的取值以及元素浸入程度参数进行计算,得到区域动态贴图。
102.在本技术实施例中,提取到场景模型的rgb通道取值后,便可以继续生成区域动态贴图。其中,区域动态贴图指示了待添加元素在多个场景模型上形成的元素区域每帧的动态效果,比如水坑、水洼中的涟漪、波纹等形成的动态效果均体现在区域动态贴图中,区域动态贴图基于rgb通道值中r通道的取值以及元素浸入程度参数进行计算得到,具体计算过程如下:
103.首先,确定多个场景模型的表面法线向量,基于阿尔法侵蚀算法对多个场景模型的表面法线向量、当前帧以及元素浸入程度参数进行烘焙,在多个场景模型的表面形成多个动态变化的初始元素区域。具体地,可以提取场景模型在原始游戏场景中的uv坐标,在uv坐标中确定场景模型的表面法线向量,并基于frac函数对时间进行向下取整,对参数1.0

frac(time)、表面法线向量以及元素浸入程度参数进行计算,采用saturate将输出的值规范在0和1之间,进而按照输出的值在多个场景模型的表面形成多个动态变化的初始元素区域,这些初始元素区域也即场景模型表面由于积水形成的水坑、水洼等,具体效果可以参见图2b,其中的白点即为烘焙得到的初始元素区域。需要说明的是,由于积水达到一定的深度才能形成涟漪等特效,因此,在烘焙初始元素区域的过程中才会考虑元素浸入程度参数,使得后续烘焙的初始元素区域中,元素浸入程度参数指示的深度越深,涟漪的效果越强。
104.随后,由于实际上水坑形成的涟漪是呈环状的,因此,需要按照预设边缘参数,将多个初始元素区域调整为预设形状。具体地,可以采用edge mask(边缘遮罩)函数,确定初始元素区域的法线向量,参考初始元素区域的法线向量对初始元素区域的边缘进行调整,从而使初始元素区域的边缘圆滑且连续,具体对初始元素区域的边缘进行调整后得到的效果可参见图2c,其中的白色边缘环状区域即为调整后的初始元素区域。
105.虽然上面为当前帧烘焙了初始元素区域,但是当原始游戏场景随着动画动起来时,初始元素区域随着时间循环变化的感觉还是很明显的,初始元素区域的出现和消失比较生硬,因此,可以在当前帧的时间上乘以上一个时间上的fade(衰弱)函数,使动画自然一些。fade函数可以有很多选择,比如幂函数、指数函数、对数函数、线性函数、三角函数等,为了节约计算时间,可以选择线性函数作为fade函数,本技术对fade函数的具体内容不进行限定。
106.再有,实际上涟漪不但自身会发生大小的变化,而且其上还会有一些小的涟漪,因此,为了使初始元素区域的变化更加的真实,可以查询第一预设变化周期,按照第一预设变化周期,在多个动态变化的初始元素区域上叠加多个动态变化的次级元素区域,其中,多个动态变化的次级元素区域与多个动态变化的初始元素区域的变化方式以及形状一致。接下来,基于预设插值函数将多个动态变化的次级元素区域与多个动态变化的初始元素区域进行融合处理,得到区域动态贴图,使得动画会按照固定周期(也即第一预设变化周期)断开,
并在初始元素区域上再加一层次级元素区域,使得涟漪上还有涟漪,时间上与初始元素区域开半个周期,用函数控制两者的融合,确保每一层动画断开时,可见性为0,实现涟漪效果的真实动态变化。
107.这样,根据初始元素区域、次级元素区域以及场景模型的颜色、法线向量、金属度、粗糙度等进行渲染,便可以得到区域动态贴图。
108.另外,在自然环境中,水滴滴落在水坑、水洼中时,会形成水花,水花效果分为底部溅水效果和上部小水花效果,因此,还可以在区域动态贴图中分别渲染用于表征底部溅水效果的第一效果区域以及用于表征上部小水花效果的第二效果区域,使得后续渲染的目标游戏场景更加贴合真是的下雨场景。具体地,在渲染底部溅水效果时,查询第二预设变化周期,在区域动态贴图中为多个动态变化的初始元素区域添加第一效果区域,使得第一效果区域在多个动态变化的初始元素区域中随着第二预设变化周期由大到小进行变化。其中,可以使用一个生命周期管理器管理第二预设变化周期,使得底部溅水效果在第二预设变化周期内只从小变大,不做位移。接下来,在渲染上部小水花效果时,需要在第一效果区域上添加第二效果区域,使第二效果区域随着第一效果区域由大到小的变化过程进行向上的减速运动,控制上部水花变大的同时,还要做一个向上的匀减速运动,达到水花的溅起落下的效果。进一步地,水花会受到原始游戏场景中光照的影响,在被光源照射时显示的更加明显,因此,需要确定原始游戏场景的场景光照以及环境光照,基于场景光照以及环境光照对第二效果区域进行渲染,使得基于pbr(physically based rendering,基于物理的渲染)中的lambert(朗伯)光照 环境光对上部小水花效果进行渲染,保证水花效果的颜色体现出场景中光源带来的影响。
109.205、读取rgb通道值中g通道的取值形成元素痕迹纹理图,读取rgb通道值中b通道的取值形成元素渐变图,并将元素痕迹纹理图与元素渐变图相乘,得到元素动态贴图。
110.在本技术实施例中,完成了用于表征涟漪效果的区域动态贴图后,由于水滴滴下、滑落时会形成水纹、水痕等,因此,还需要生成元素动态贴图,元素动态贴图也即指示了待添加元素每帧在多个场景模型上的动态效果,能够表现出水滴经过后形成的水纹。
111.元素动态贴图实际上是g通道的水滴痕迹纹理乘上滚动的b通道的水滴渐变图得到的,具体地,需要读取rgb通道值中g通道的取值形成元素痕迹纹理图,读取rgb通道值中b通道的取值形成元素渐变图,并将元素痕迹纹理图与元素渐变图相乘,得到元素动态贴图。
112.这样,通过上述步骤204至步骤205中的过程,便基于元素浸入程度参数和待添加元素的材质函数对多个场景模型进行烘焙处理,生成了用于表征涟漪动态效果的区域动态贴图以及用于表征水滴滚动纹路的元素动态贴图。后续,将这两个贴图进行融合,便可以生成雨天效果的原始游戏场景。
113.206、采用区域动态贴图和元素动态贴图对原始游戏场景进行渲染,生成烘焙有待添加元素的目标游戏场景。
114.在本技术实施例中,一般来说,水滴的涟漪只在场景模型朝上的面,而水滴滚动的纹路也只在场景模型坡度比较大的面,因此,在采用区域动态贴图和元素动态贴图对原始游戏场景进行渲染时,需要确定多个场景模型在原始游戏场景中的空间坐标,将区域动态贴图和元素动态贴图渲染至空间坐标构成的多个空间平面上。随后,以多个空间平面的法线向量为权重,将渲染至多个空间平面上的区域动态贴图和元素动态贴图进行融合,生成
目标游戏场景。具体应用的过程中,可以用场景模型在模型空间或者世界空间的空间坐标代替场景模型的uv坐标,在坐标系形成的xz平面渲染表征涟漪动态效果的区域动态贴图,在xy和yz平面渲染表征水滴滚动纹路的元素动态贴图,并在将区域动态贴图和元素动态贴图进行融合时,以法线为权重进行融合。
115.需要说明的是,由于雨天的游戏场景中有时可能雨已经停了,有时可能雨还在下,因此,若雨还在下,则可以基于待添加元素形成多个元素粒子,将多个元素粒子添加至目标游戏场景,控制多个元素粒子在目标游戏场景中由上到下降落,在目标游戏场景中形成滴落的雨丝。若雨已经停了,则无需添加降落的多个元素粒子。
116.本技术实施例提供的方法,生成描述了多个场景模型在原始游戏场景中的高低关系的场景高度图,根据场景高度图计算多个场景模型的元素浸入程度参数,进而基于元素浸入程度参数和待添加元素的材质函数对多个场景模型进行烘焙处理,生成指示了待添加元素每帧在多个场景模型上的动态效果的元素动态贴图,以及指示了待添加元素在多个场景模型上形成的元素区域每帧的动态效果的区域动态贴图,并采用元素动态贴图和区域动态贴图对原始游戏场景进行渲染,生成烘焙有待添加元素的目标游戏场景,实现对雨天场景中水洼效果以及水流效果的精确渲染,增加模型表面积水细节的丰富度,提升游戏场景的生成效率以及真实感。
117.进一步地,作为图1所述方法的具体实现,本技术实施例提供了一种游戏场景生成装置,如图3所示,所述装置包括:生成模块301,计算模块302,处理模块303和渲染模块304。
118.该生成模块301,用于生成原始游戏场景的场景高度图,所述场景高度图描述了所述原始游戏场景中的多个场景模型以及场景模型的面在所述原始游戏场景中的高低关系;
119.该计算模块302,用于根据所述场景高度图,计算所述多个场景模型的元素浸入程度参数;
120.该处理模块303,用于基于所述元素浸入程度参数和待添加元素的材质函数对所述多个场景模型进行烘焙处理,生成区域动态贴图和元素动态贴图,所述区域动态贴图指示了所述待添加元素在所述多个场景模型上形成的元素区域每帧的动态效果,所述元素动态贴图指示了所述待添加元素每帧在所述多个场景模型上的动态效果;
121.该渲染模块304,用于采用所述区域动态贴图和所述元素动态贴图对所述原始游戏场景进行渲染,生成烘焙有所述待添加元素的目标游戏场景。
122.在具体的应用场景中,该生成模块301,用于按照预设划分尺寸,将所述原始游戏场景划分为多个场景区块;在所述原始游戏场景中对所述多个场景区块中每个场景区块进行碰撞检测,生成所述每个场景区块的高度参数;基于所述多个场景区块对应的高度参数对所述多个场景模型进行烘焙,生成所述原始游戏场景的场景高度图。
123.在具体的应用场景中,该生成模块301,用于对于所述多个场景区块中每个场景区块,对所述场景区块进行碰撞检测,确定所述场景区块在所述原始游戏场景中的多个目标碰撞体,查询所述多个目标碰撞体在所述多个场景区块中所在的多个目标场景区块;在所述多个目标场景区块中确定第一目标场景区块和第二目标场景区块,所述第一目标场景区块的高度是所述多个目标场景区块中最大的,所述第二目标场景区块的高度是所述多个目标场景区块中最小的;将所述第一目标场景区块划分为预设数目的区块单元,在所述预设数目的区块单元中确定目标区块单元,所述目标区块单元的高度是所述预设数目的区块单
元中最大的;将所述目标区块单元的高度与预设高度进行比对,根据比对结果,生成所述场景区块的高度参数;重复执行上述生成高度参数的过程,分别为所述每个场景区块生成高度参数。
124.在具体的应用场景中,该生成模块301,用于当所述比对结果指示所述目标区块单元的高度小于所述预设高度时,计算所述第一目标区块的高度与所述第二目标区块的高度的第一差值,按照所述第一差值生成所述高度参数;当所述比对结果指示所述目标区块单元的高度大于等于所述预设高度时,继续将所述目标区块单元划分为所述预设数目的次级区块单元,并判断所述预设数目的次级区块单元中高度最高的次级区块单元的高度是否小于所述预设高度以及对所述高度最高的次级区块单元进行划分,直至确定高度小于所述预设高度的指定单元,计算所述指定单元的单元高度与所述第二目标区块的高度的第三差值,按照所述第三差值生成所述高度参数。
125.在具体的应用场景中,该计算模块302,用于对于所述多个场景模型中每个场景模型,在所述场景高度图中获取所述场景模型的高度参数以及遮挡系数值;确定所述场景模型的法线向量,按照预设数值对所述法线向量进行偏移处理;根据所述高度参数、所述遮挡系数值以及偏移后的所述法线向量,计算所述场景模型的元素浸入程度参数。
126.在具体的应用场景中,该处理模块303,用于确定所述待添加元素的材质函数,按照所述材质函数对所述多个场景模型进行烘焙处理,为所述多个场景模型写入顶点色;提取写入所述顶点色后的所述多个场景模型的红绿蓝rgb通道值;基于所述rgb通道值中r通道的取值以及所述元素浸入程度参数进行计算,得到所述区域动态贴图;读取所述rgb通道值中g通道的取值形成元素痕迹纹理图,读取所述rgb通道值中b通道的取值形成元素渐变图,并将所述元素痕迹纹理图与所述元素渐变图相乘,得到所述元素动态贴图。
127.在具体的应用场景中,该处理模块303,用于确定所述多个场景模型的表面法线向量,基于阿尔法侵蚀算法对所述多个场景模型的表面法线向量、当前帧以及所述元素浸入程度参数进行烘焙,在所述多个场景模型的表面形成多个动态变化的初始元素区域;按照预设边缘参数,将所述多个初始元素区域调整为预设形状;查询第一预设变化周期,按照所述第一预设变化周期,在所述多个动态变化的初始元素区域上叠加多个动态变化的次级元素区域,所述多个动态变化的次级元素区域与所述多个动态变化的初始元素区域的变化方式以及形状一致;基于预设插值函数将所述多个动态变化的次级元素区域与所述多个动态变化的初始元素区域进行融合处理,得到所述区域动态贴图。
128.在具体的应用场景中,该处理模块303,还用于查询第二预设变化周期,在所述区域动态贴图中为所述多个动态变化的初始元素区域添加第一效果区域,所述第一效果区域在所述多个动态变化的初始元素区域中随着所述第二预设变化周期由大到小进行变化;在所述第一效果区域上添加第二效果区域,所述第二效果区域随着所述第一效果区域由大到小的变化过程进行向上的减速运动;确定所述原始游戏场景的场景光照以及环境光照,基于所述场景光照以及所述环境光照对所述第二效果区域进行渲染。
129.在具体的应用场景中,该渲染模块304,用于确定所述多个场景模型在所述原始游戏场景中的空间坐标,将所述区域动态贴图和所述元素动态贴图渲染至所述空间坐标构成的多个空间平面上;以多个空间平面的法线向量为权重,将渲染至所述多个空间平面上的所述区域动态贴图和所述元素动态贴图进行融合,生成所述目标游戏场景;基于所述待添
加元素形成多个元素粒子,将所述多个元素粒子添加至所述目标游戏场景,控制所述多个元素粒子在所述目标游戏场景中由上到下降落。
130.本技术实施例提供的装置,生成描述了多个场景模型在原始游戏场景中的高低关系的场景高度图,根据场景高度图计算多个场景模型的元素浸入程度参数,进而基于元素浸入程度参数和待添加元素的材质函数对多个场景模型进行烘焙处理,生成指示了待添加元素每帧在多个场景模型上的动态效果的元素动态贴图,以及指示了待添加元素在多个场景模型上形成的元素区域每帧的动态效果的区域动态贴图,并采用元素动态贴图和区域动态贴图对原始游戏场景进行渲染,生成烘焙有待添加元素的目标游戏场景,实现对雨天场景中水洼效果以及水流效果的精确渲染,增加模型表面积水细节的丰富度,提升游戏场景的生成效率以及真实感。
131.需要说明的是,本技术实施例提供的一种游戏场景生成装置所涉及各功能单元的其他相应描述,可以参考图1和图2a中的对应描述,在此不再赘述。
132.在示例性实施例中,参见图4,还提供了一种设备,该设备包括总线、处理器、存储器和通信接口,还可以包括输入输出接口和显示设备,其中,各个功能单元之间可以通过总线完成相互间的通信。该存储器存储有计算机程序,处理器,用于执行存储器上所存放的程序,执行上述实施例中的游戏场景生成方法。
133.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述的游戏场景生成方法的步骤。
134.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本技术可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本技术的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd

rom,u盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施场景所述的方法。
135.本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本技术所必须的。
136.本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
137.上述本技术序号仅仅为了描述,不代表实施场景的优劣。
138.以上公开的仅为本技术的几个具体实施场景,但是,本技术并非局限于此,任何本领域的技术人员能思之的变化都应落入本技术的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜