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

地形场景生成方法、装置、电子设备及存储介质

文献发布时间:2023-06-19 11:14:36


地形场景生成方法、装置、电子设备及存储介质

技术领域

本申请涉及互联网技术领域,尤其是涉及一种地形场景生成方法、装置、电子设备及存储介质。

背景技术

随着信息技术的发展,游戏领域也随之发展,并且,众所周知,游戏场景是游戏中占比重非常大的元素,逼真的场景,往往能够感染玩家的内心世界,具有更高的沉浸感。在游戏场景中,往往会涉及很多的地形场景,例如,高山地形、海底地形等,因此为了让玩家具有更好的游戏体验,如何生成地形场景也同样成为一个关键问题。

在相关技术中,游戏开发商在游戏发布之前,即将预制好的游戏中所涉及的所有地形的图像数据封装在发布包内,传递给各个玩家,各个玩家下载发布包,在运行游戏时,根据发布包内预制好的地形数据进行渲染,以呈现对应的地形场景。

但是,在上述相关技术中,游戏开发商需要将地形数据封装在游戏的发布包内,这样将导致游戏发布包的体量较大,进一步地,由于游戏发布包的体量较大,可能导致一些内存比较小的玩家终端无法下载该游戏,进而导致用户体验较差。

发明内容

本申请目的一是提供一种地形场景生成方法、装置、电子设备及存储介质,用于解决以上至少一项技术问题。

第一方面,提供了一种地形场景生成方法,包括:

当游戏运行时,获取计算逻辑文件;

基于计算逻辑文件,生成地形模型;

其中,计算逻辑文件包含:

生成地形模型所需执行的各个算法、各个算法的执行顺序以及各个算法分别对应的参数信息。

在一种可能的实现方式中,基于计算逻辑文件,生成地形模型,之前还包括:

获取随机种子;

其中,基于计算逻辑文件,生成地形模型,包括:

基于随机种子以及计算逻辑文件,生成地形模型。

在另一种可能的实现方式中,生成地形模型,包括:

确定当前待渲染的区域;

为待渲染的区域生成地形模型。

在另一种可能的实现方式中,为待渲染的区域生成地形模型,包括:

分别生成海床基础高程和至少一个陆地区域的基础高程;

生成生态圈遮罩,并基于生态圈遮罩、海床基础高程、至少一个陆地区域的基础高程,生成全局基础高程图;

将全局基础高程图通过海滩算法以及水侵蚀算法,生成最终的全局高程图;

基于最终的全局高程图以及获取的贴图数据,为待渲染的区域生成地形模型。

在另一种可能的实现方式中,为待渲染的区域生成地形模型,包括:

分别生成丘陵区域的基础高程、山脉区域的基础高程、海床积沙区域的基础高程;

生成生态圈遮罩,并基于生态圈遮罩、丘陵区域的基础高程、山脉区域的基础高程以及海床积沙的基础高程,生成全局基础高程图;

将全局基础高程图通过海滩算法以及水侵蚀算法,生成最终的全局高程图;

基于最终的全局高程图以及获取的贴图数据,为待渲染的区域生成地形模型。

在另一种可能的实现方式中,生成丘陵区域的基础高程,包括:

获取待渲染区域中各个像素分别对应的世界坐标;

根据输入的种子以及各个像素分别对应的世界坐标,生成第一灰度图;

基于第一灰度图生成丘陵区域的基础高程。

在另一种可能的实现方式中,生成山脉区域的基础高程,包括:

获取待渲染区域对应的细分值,细分值用于确定待渲染区域被划分的区间数目;

根据输入的种子,分别在各个区间中的随机位置生成一个点;

基于输入的概率信息以及种子,确定各个区间中生成的点是否需要被擦除,并擦除确定出的需要被擦除的点;

计算每个像素与每个像素对应的预设点之间的距离,预设点为距离每个像素最近的点;

基于每个像素与每个像素对应的预设点之间的距离以及最大距离,生成第二灰度图,最大距离为像素与像素对应的预设点之间的距离中的最大距离;

基于第二灰度图生成山脉区域的基础高程。

在另一种可能的实现方式中,基于山脉区域的高程,生成海床积沙区域的基础高程,包括以下至少一项:

将第二灰度图进行反向处理,得到反向处理后的灰度图,并基于反向处理后的灰度图生成第一海床积沙区域的基础高程,第一海床积沙区域的基础高程为海底存在珊瑚区域的高程;

将第二灰度图按照预设方式进行缩放处理,得到缩放处理后的高程,并基于缩放处理后的高程,生成第二海床积沙区域的基础高程,第二海床积沙区域的基础高程为海底满足预设条件的高程。

在另一种可能的实现方式中,待渲染区域包括:至少两个地形块;

为待渲染的区域生成地形模型,包括:

通过不同的线程为至少两个地形块中的每个地形块生成对应的地形模型。

在另一种可能的实现方式中,该方法还包括:

获取玩家当前所处位置,并基于玩家当前所处位置确定至少一个第一地形块和/或至少一个第二地形块;

停止渲染至少一个第一地形块所对应的图像;以及,释放至少一个第二地形块所对应的图像数据;

第一地形块为与玩家当前所处位置之间的距离大于视距距离,且小于缓冲距离的地形块;

第二地形块为与玩家当前所处位置之间的距离大于视距距离,且小于缓冲距离的地形块。

第二方面,本申请提供了一种地形场景生成装置,包括:

第一获取模块,用于当游戏运行时,获取计算逻辑文件;

生成模块,用于基于计算逻辑文件,生成地形模型;

其中,计算逻辑文件包含:

生成地形模型所需执行的各个算法、各个算法的执行顺序以及各个算法分别对应的参数信息。

在一种可能的实现方式中,装置还包括:第二获取模块,其中,

第二获取模块,用于获取随机种子;

生成模块在基于计算逻辑文件,生成地形模型时,具体用于:基于随机种子以及计算逻辑文件,生成地形模型。

在另一种可能的实现方式中,生成模块在生成地形模型时,具体用于:

确定当前待渲染的区域;

为待渲染的区域生成地形模型。

在另一种可能的实现方式中,生成模块在为待渲染的区域生成地形模型时,具体用于:

分别生成海床基础高程和至少一个陆地区域的基础高程;

生成生态圈遮罩,并基于生态圈遮罩、海床基础高程、至少一个陆地区域的基础高程,生成全局基础高程图;

将全局基础高程图通过海滩算法以及水侵蚀算法,生成最终的全局高程图;

基于最终的全局高程图以及获取的贴图数据,为待渲染的区域生成地形模型。

在另一种可能的实现方式中,所述生成模块在为所述待渲染的区域生成所述地形模型时,具体用于:

分别生成丘陵区域的基础高程、山脉区域的基础高程、海床积沙区域的基础高程;

生成生态圈遮罩,并基于所述生态圈遮罩、所述丘陵区域的基础高程、所述山脉区域的基础高程以及所述海床积沙的基础高程,生成全局基础高程图;

将所述全局基础高程图通过海滩算法以及水侵蚀算法,生成最终的全局高程图;

基于所述最终的全局高程图以及获取的贴图数据,为所述待渲染的区域生成所述地形模型。

在另一种可能的实现方式中,生成模块在生成丘陵区域的基础高程时,具体用于:

获取待渲染区域中各个像素分别对应的世界坐标;

根据输入的种子以及各个像素分别对应的世界坐标,生成第一灰度图;

基于第一灰度图生成丘陵区域对应的基础高程。

在另一种可能的实现方式中,生成模块在生成山脉区域的基础高程时,具体用于:

获取待渲染区域对应的细分值,细分值用于确定待渲染区域被划分的区间数目;

根据输入的种子,分别在各个区间中的随机位置生成一个点;

基于输入的概率信息以及种子,确定各个区间中生成的点是否需要被擦除,并擦除确定出的需要被擦除的点;

计算每个像素与每个像素对应的预设点之间的距离,预设点为距离每个像素最近的点;

基于每个像素与每个像素对应的预设点之间的距离以及最大距离,生成第二灰度图,最大距离为像素与像素对应的预设点之间的距离中的最大距离;

基于第二灰度图生成山脉区域的基础高程。

在另一种可能的实现方式中,生成模块在生成海床积沙区域的基础高程时,具体用于以下至少一项:

将第二灰度图进行反向处理,得到反向处理后的灰度图,并基于反向处理后的灰度图生成第一海床积沙区域的基础高程,第一海床积沙区域的基础高程为海底存在珊瑚区域的高程;

将第二灰度图按照预设方式进行缩放处理,得到缩放处理后的高程,并基于缩放处理后的高程,生成第二海床积沙区域的基础高程,第二海床积沙区域的基础高程为海底满足预设条件的高程。

在另一种可能的实现方式中,待渲染区域包括:至少两个地形块;生成模块在为待渲染的区域生成地形模型时,具体用于:

通过不同的线程为至少两个地形块中的每个地形块生成对应的地形模型。

在另一种可能的实现方式中,装置还包括:第三获取模块、确定模块、渲染模块、释放数据模块,其中,

第三获取模块,用于获取玩家当前所处位置;

确定模块,用于基于玩家当前所处位置确定至少一个第一地形块和/或至少一个第二地形块;

渲染模块,用于停止渲染至少一个第一地形块所对应的图像;以及,

释放数据模块,用于释放至少一个第二地形块所对应的图像数据;

第一地形块为与玩家当前所处位置之间的距离大于视距距离,且小于缓冲距离的地形块;

第二地形块为与玩家当前所处位置之间的距离大于视距距离,且小于缓冲距离的地形块。

第三方面,提供了一种电子设备,其包括:

一个或多个处理器;

存储器;

一个或多个应用程序,其中一个或多个应用程序被存储在存储器中并被配置为由一个或多个处理器执行,一个或多个程序配置用于:执行根据第一方面以及第一方面任意可能的实现方式所示的地形场景生成的方法对应的操作。

第四方面,提供了一种计算机可读存储介质,存储介质存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现如第一方面以及第一方面任意可能的实现方式所示的地形场景生成的方法。

本申请提供了一种地形场景生成方法、装置、电子设备及存储介质,与相关技术中,游戏运行中所涉及的所有地形的图像数据封装在发布包内相比,在本申请中,玩家终端获取到计算逻辑文件,即可以根据计算逻辑文件生成地形模型,并且计算逻辑文件包含:生成地形模型所需执行的各个算法、所述各个算法的执行顺序以及所述各个算法分别对应的参数信息。而不需要如相关技术中玩家终端运行封装有所有地形的图像数据才可以得到各个地形模型,从而可以减小游戏发布包的体量,并且也可以使得更多的玩家下载运行该游戏,进而可以提升用户体验。

附图说明

图1为本申请实施例的地形场景生成方法的流程图;

图2为普通随机数噪点图;

图3为Perlin噪点图;

图4为多次迭代的perlin噪点图;

图5为利用Voronoi算法得到的示意图;

图6为当细分值为64时,地形块被分为8*8的小块的示意图;

图7为60%擦除率下生成的离散点的示意图;

图8为本申请实施例中利用Voronoi算法得到的灰度图;

图9为利用Voronoi算法得到的灰度图反向处理后得到的灰度图;

图10为本申请实施例中地形场景生成的装置结构示意图;

图11为本申请实施例中电子设备的装置结构示意图;

图12为本申请实施例中陆地海洋区域图;

图13为本申请实施例中海洋区域图。

具体实施方式

以下结合附图对本申请作进一步详细说明。

本具体实施例仅仅是对本申请的解释,其并不是对本申请的限制,本领域技术人员在阅读完本说明书后可以根据需要对本实施例做出没有创造性贡献的修改,但只要在本申请的权利要求范围内都受到专利法的保护。

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

另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。

本申请实施例提供了一种地形场景生成方法,可以由电子设备执行,如图1所示,该方法可以包括:

步骤S101、当游戏运行时,获取计算逻辑文件。

具体地,在本申请实施例中,游戏运行过程可以包括游戏初始化过程,以及玩家操作游戏的过程。

进一步地,在本申请实施例中,电子设备可以从游戏安装包中获取该计算逻辑文件。其中,计算逻辑文件包含:生成地形模型所需执行的各个算法、各个算法的执行顺序以及各个算法分别对应的参数信息。

步骤S102、基于计算逻辑文件,生成地形模型。

对于本申请实施例,地形模型可以为利用数学函数生成的地表。例如,地形模型可以山脉生态地形、丘陵生态地形、海底沙丘生态地形等。

具体地,在本申请实施例中,计算逻辑文件中的各个算法用于生成对应的地形模型。在本申请实施例中,电子设备在获取到生成地形模型所需执行的各个算法,各个算法的执行顺序以及各个算法分别对应的参数信息之后,即可以根据各个算法的执行顺序,以及各个算法分别对应的参数信息执行各个算法,即可以生成对应的地形模型。具体地,生成对应的地形模型的方式详见下述实施例。

本申请实施例提供了一种地形场景生成方法,与相关技术中,游戏运行中所涉及的所有地形的图像数据封装在发布包内相比,在本申请实施例中,玩家终端获取到计算逻辑文件,即可以根据计算逻辑文件生成地形模型,并且计算逻辑文件包含:生成地形模型所需执行的各个算法、所述各个算法的执行顺序以及所述各个算法分别对应的参数信息。而不需要如相关技术中玩家终端运行封装有所有地形的图像数据才可以得到各个地形模型,从而可以减小游戏发布包的体量,并且也可以使得更多的玩家下载运行该游戏,进而可以提升用户体验。

本申请实施例的另一种可能的实现方式中,步骤S102之前还可以包括:获取随机种子。

具体地,在本申请实施例中,使用引擎自带的随机数函数可以获取一个32位整数作为随机算法的种子。在本申请实施例中,该随机算法的种子可以在本地生成。

具体地,步骤S102具体可以包括:基于随机种子以及计算逻辑文件,生成地形模型。在本申请实施例中,使根据每一个不同的数值计算出的地形都具有一定相似性且又完全不同。具体通过随机种子以及计算逻辑文件生成对应的地形模型的方式详见下述实施例。

本申请实施例的另一种可能的实现方式,生成地形模型,包括:确定当前待渲染的区域;为待渲染的区域生成地形模型。

对于本申请实施例,在游戏初始化过程中,首先根据客户端玩家所在的位置,计算出特定目视距离能见的区域,作为当前待渲染的区域。在本申请实施例中,特定目视距离能见的区域可以为以客户端玩家所在的位置为中心,以特定目视距离为半径所确定出的区域, 或者特定目视距离能见的区域可以为根据客户端玩家当前的朝向信息,确定出的以客户端玩家所在的位置为基准,在当前朝向方向中特定目视距离范围内的区域。其他根据客户端玩家所在的位置计算出的特定目视距离能见的区域的方式均在本申请的保护范围之内,本申请实施例并不对此进行限定。

进一步地,在本申请实施例中,特定目视距离可以为预先设定的距离,也可以用客户端玩家输入的目视距离,也可以为根据当前地形、当前的有游戏场景的天气、遮挡等环境因素所确定出的目视距离。在本申请实施例中不做限定。

例如,特定目视距离可以为300米,也即在游戏初始化过程中,可以根据客户端玩家所在位置将300米内的区域作为当前待渲染的区域,也即将以客户端玩家所在位置为圆心,以300米为半径的区域作为当前待渲染的区域。

对于本申请实施例,在确定出当前待渲染的区域之后,为确定出当前待渲染的区域生成对应的地形模型,其中,为待渲染的区域生成地形模型的方式详见下述实施例。

对于本申请实施例,除了在客户端玩家第一次进入游戏时(游戏初始化过程中)生成足够大的地块供玩家探索,还需要随着玩家的位移实时更新地形块的状态(玩家操作游戏的过程跟着玩家的位移实时更新地形块的状态)。实时根据客户端玩家的世界坐标计算出应该处于当前视距内的地形块编号(区域编号),进而生成区域对应的地形模型。

具体地,为待渲染的区域生成地形模型,包括:分别生成海床基础高程和至少一个陆地区域的基础高程;生成生态圈遮罩,并基于生态圈遮罩、海床基础高程、至少一个陆地区域的基础高程,生成全局基础高程图;将全局基础高程图通过海滩算法以及水侵蚀算法,生成最终的全局高程图;基于最终的全局高程图以及获取的贴图数据,为待渲染的区域生成地形模型。

其中,在本申请实施例中,陆地区域可以包括:山脉区域、丘陵区域、草原区域等,也就是说:陆地区域的基础高程可以包括:山脉区域的基础高程、丘陵区域的基础高程、草原区域的基础高程;在本申请实施例中,以陆地区域的基础高程包括:山脉区域的基础高程和丘陵区域的基础高程为例进行介绍,具体详见下述实施例:

具体地,为待渲染的区域生成地形模型的方式,包括:步骤Sa(图中未示出)、步骤Sb(图中未示出)、步骤Sc(图中未示出)、步骤Sd(图中未示出)、步骤Se(图中未示出)以及步骤Sf(图中未示出),其中,

步骤Sa、生成丘陵区域的基础高程。

具体地,生成丘陵区域的基础高程,可以包括:获取待渲染区域中各个像素分别对应的世界坐标;根据输入的种子以及各个像素分别对应的世界坐标,生成第一灰度图;基于第一灰度图确定丘陵区域的基础高程。

对于本申请实施例,使用多次迭代的perlin噪点算法来生成地形的基础高程。Perlin算法是Ken Perlin在1983年设计出用以生成更自然和有机的图形的。该算法可以根据输入的种子和世界坐标,计算出平滑过渡的灰度图(第一灰度图)。在本申请实施例中,各个像素分别对应的世界坐标为地块坐标以及各自像素本地坐标计算出平滑过渡的灰度图。在本申请实施例中,使用perlin噪点算法得到的噪点图在平面上呈平滑过渡,更适合来模拟自然形成的地形。例如如图2和图3所示,其中图2为普通随机数噪点图,图3为perlin噪点图,通过图2和图3的对比可知,图3所示出的Perlin噪点图的数值在平面上呈现平滑过渡。

例如,使用8倍尺寸的perlin噪点图作为基底,将其深度降低至50%,再将25%深度、4倍尺寸的perlin噪点图(使用另一个种子来避免规整性)叠加上去,增加下一级细节,以此类推,直到1倍尺寸,6.25%深度的图形作为最终细节,可以合成出细节比较丰富的灰度图,且保证灰度区间在0-1之间尽量满铺。在本申请实施例中,将合成出的细节比较丰富的灰度图作为第一灰度图。在本申请实施例中,多次迭代的perlin噪点算法来生成第一灰度图的方式,并不限于举例的方式,任何通过多次迭代的perlin噪点算法来生成第一灰度图的方式均在本申请实施例的保护范围之内。其中,通过多次迭代的perlin噪点算法得到的Perlin噪点图如图4所示。

步骤Sb、生成山脉区域的基础高程;

具体地,生成山脉区域的基础高程,包括:获取待渲染区域对应的细分值,细分值用于确定待渲染区域被划分的区间数目;根据输入的种子,分别在各个区间中的随机位置生成一个点;基于输入的概率信息以及种子,确定各个区间中生成的点是否需要被擦除,并擦除确定出的需要被擦除的点;计算每个像素与每个像素对应的预设点之间的距离,预设点为距离每个像素最近的点;基于每个像素与每个像素对应的预设点之间的距离以及最大距离,生成第二灰度图,最大距离为像素与像素对应的预设点之间的距离中的最大距离;基于第二灰度图生成山脉区域的基础高程。

具体地,在本申请实施例中,使用Voronoi算法生成山脉区域的基础高程。Voronoi图是一

1、输入一个细分值(必须为2的指数幂),此值决定每个地形块会被分为多少个区间,例如,细分值为64时,地形块被分为8*8个区间,如图6所示。在本申请实施例中,待渲染区域可以为一个地形块,也可以包含至少两个地形块。在本申请实施例中并不限定。

2、输入一个种子,根据这个种子,在上述划分出的每个区间内的随机位置生成一个点,同时再根据种子和一个输入的概率计算每个各自内的点是否要被擦除,如图7所示,60%的擦除率下生成的离散点,如图7所示。

3、遍历图中每个像素(即地形高程图分辨率的一个单位),计算出它与离它最近的离散点的距离,将这个距离记录在这个像素的位置,同时统计整个图形中出现的最大距离数值,此计算步骤因为是每个像素都能独立完成的,所以很容易放入多线程进行处理。

4、当所有像素都计算完毕后,将统计出的最大距离和0作为区间,将每个像素上记录的距离标准化为一个0-1之间的数值,此时就可以生成一个如图8所示的灰度图。如图8所示的Voronoi图的特点使它非常适用于生成陡峭山脊和连绵山脉的高度图,我们在此处也是对其进行这种运用。

步骤Sc、生成海床积沙区域的基础高程;

具体地,生成海床积沙区域的基础高程,包括:将第二灰度图进行反向处理,得到反向处理后的灰度图,并基于反向处理后的灰度图生成第一海床积沙区域的基础高程,第一海床积沙区域的基础高程为海底存在珊瑚区域的高程;和/或,将第二灰度图进行按照预设方式进行缩放处理,得到缩放处理后的高程,并基于缩放处理后的高程,生成第二海床积沙区域的基础高程,第二海床积沙区域的基础高程为海底满足预设条件的高程。

对于本申请实施例,使用Voronoi算法生成海床积沙高程,将如图8所示的Voronoi图进行反向处理可以得到类似细胞状的图形,具体如图9所示,可以用来制作海底有珊瑚覆盖区域的高程图,而未反向的Voronoi图经过取值区间的缩放也可以用来制作较为平缓的海底积沙高程。

步骤Sd、生成生态圈遮罩,并基于丘陵区域的基础高程、山脉区域的基础高程以及海床积沙区域的基础高程,生成全局基础高程图;

对于本申请实施例,使用一个大尺寸且低迭代的perlin噪点算法生成生态圈遮罩,根据遮罩的不同取值区间可以获取海洋、山地、海滩、平原等不同生态圈的区域范围,再依次将其乘以上述对应区域的高程图,以获得全局基础高程图。具体地,使用一个大尺寸、低迭代的Perlin算法生成陆地海洋区域图(包含陆地区域和海洋区域),其中,生成的陆地区域和海洋区域如图12所示;具体地,从逻辑文件中获取预设数据,并基于获取到的预设数据,并通过大尺寸、低迭代的Perlin算法生成陆地海洋区域图(包含陆地区域和海洋区域)。在本申请实施例中,预设数据可以包括:噪点的尺寸、迭代次数、以及平面偏移等。

进一步地,使用一个尺寸更小、且低迭代的Perlin算法生成山脉区域,也即可以得到该待渲染区域内的山脉区域以及非山脉区域,然后使用陆地区域以及山脉区域确定出山脉的实际区域(例如,可以通过陆地区域和山脉区域的乘积得到山脉的实际区域),进而通过陆地区域以及山脉的实际区域的丘陵的实际区域(例如,可以通过陆地区域减去山脉的实际区域得到),然后,将上文的陆地区域和海洋区域的图像反向处理,得到海洋区域图,具体如图13所示。在本申请实施例中,在生成山脉区域时所使用的Perlin算法的尺寸和迭代次数可以根据实际情况进行调整,在本申请实施例中并不对Perlin算法的尺寸和迭代次数进行限制。

进一步地,在上述实施例中得到海洋实际区域图、丘陵实际区域图、山脉实际区域图之后,将海洋实际区域图以及海床积沙区域的基础高程得到实际的海床高程图;将丘陵实际区域图以及丘陵区域的基础高程,得到实际的丘陵高程图;将山脉实际区域图以及山脉区域的基础高程,得到实际的山脉高程图;然后基于上文得到的实际的海床高程图、实际的丘陵高程图以及实际的山脉高程图,得到全局基础高程图;具体地,在本申请实施例中,将海洋实际区域图作为遮罩乘以海床积沙区域的基础高程得到实际的海床高程图;将丘陵实际区域图作为遮罩乘以丘陵区域的基础高程,得到实际的丘陵高程图;将山脉实际区域图作为遮罩乘以山脉区域的基础高程图,得到实际的山脉高程图。

进一步地,在本申请实施例中,以陆地区域包含丘陵区域和山脉区域为例进行介绍,并不构成对本申请实施例的限制,例如,陆地区域还可以包含草原区域等,具体的计算方式和上述实施例类似。再者,在本申请实施例中也不限定与陆地区域包含丘陵区域和山脉区域,也可以称为第一区域和第二区域,第一区域和第二区域均可以为陆地上的任意区域。

其中,当分辨率较低时,灰度图的尺寸较大,并且尺寸比较大,高度纵深比较小,迭代次数多,则细节更加丰富。

步骤Se、将全局基础高程图通过海滩算法以及水侵蚀算法,生成最终的全局高程图;

进一步地,根据预定的海平面高度以及上述步骤计算出的全局基础高程图,将接近海平面高度且附近地形倾角小于一定阈值的区域压平为海滩(此处也会根据设计需求乘上一些生态圈区域的约束,使海滩不会出现在诸如红树林等特殊地貌,以增加地形的真实度)。

进一步地,将全局基础高程图加以水侵蚀算法,计算得出最终的全局高程图。同时在既往的运算过程中,也保存出针对当前地形的生态圈范围,低面倾角信息等额外信息,为之后的计算提供依据。

步骤Sf、基于最终的全局高程图以及获取的贴图数据,为待渲染区域生成地形模型。

对于本申请实施例,贴图数据用于显示地形模型的贴图。在本申请实施例中,基于上述得到的最终的全局高程图以及获取的贴图数据,得到区域的地形模型。

在上述实施例中介绍了每块区域生成对应的地形模型的方式,每块区域在生成对应的地形模型时可以均通过主进程来进行计算,但是为了缓解主进程的压力,也可以采用不同的线程为每块区域生成对应的地形模型。

具体地,待渲染区域包括:至少两个地形块;为待渲染的区域生成地形模型,包括:通过不同的线程为至少两个地形块中的每个地形块生成对应的地形模型。

对于本申请实施例中,每块地形块生成对应的地形模型所利用的线程可以均不相同,也可以部分相同,在本申请实施例中并不限定。进一步地,例如,将世界分为以1平方公里为单位的一个个地形块,随时根据客户端玩家的位置,计算出周边最多四个地形块需要被显示出来的地块,并以多线程同时对它们进行计算和生成。也就是说,在本申请实施例中,通过不同的线程对各个地形块分别进行计算和生成,可以降低每个线程的计算压力,并且可以提高生成各个地形块的地形模型的速度。

进一步地,为了进一步地降低各个线程的计算压力,提高生成各个地形块的的地形模型的速度,在为每个地形块生成对应的地形模型时,还可以通过不同的线程生成生态圈遮罩以及各个基础高程。主进程此时显示加载界面并展示地形生成进度,等待各线程返回计算结果,每个地形只要自身的需求数据全部计算完成,就可以自己再开一个线程,输入计算结果顺序运行海滩算法和水侵蚀算法,以进一步地降低线程压力,提高各个地形块生成地形模型的速度。进一步地,当单个地形块的所有计算完成时,为它生成一个1平方公里尺寸的unity地形,并根据计算结果输入高程数据和贴图数据,完成地形三维模型的生成。

上述实施例中涉及到的三维模型的生成可以适用于游戏初始化过程,也可以适用于玩家操作游戏的过程,当上述实施例中涉及到的三维模型的生成适用于游戏初始化过程时,在完成上述流程之后即可进入游戏界面。

上述实施例中介绍了每块区域或者每个地形块对应的地形模型的生成方式,但是由于玩家在操作游戏时,在世界中实时变化的,也即玩家所处的位置是实时变化的,当玩家变化位置后,可能当前并不需要显示某些地形块,为了缓解内存的压力以及终端的处理能力,可以停止渲染某些地形块,或者释放某些地形块的数据。

具体地,该方法还包括:获取玩家当前所处位置,并基于玩家当前所处位置确定至少一个第一地形块和/或至少一个第二地形块;停止渲染至少一个第一地形块所对应的图像;以及,释放至少一个第二地形块所对应的图像数据。

其中,第一地形块为与玩家当前所处位置之间的距离大于视距距离,且小于缓冲距离的区域块;第二地形块为与玩家当前所处位置之间的距离大于视距距离,且小于缓冲距离的区域块。

具体地,在本申请实施例中,视距距离可以为预先设定的,也可以为客户端玩家输入的;缓冲距离可以为预先设定的,也可以为客户端玩家输入的。在本申请实施例中不做限定。

对于本申请实施例,当客户端玩家在操作游戏时,客户端玩家在地图场景中不断移动,因此除了客户端玩家第一次进入游戏时生成足够大的地块供玩家探索,为了节省内存,还可以将视距外的地形块的关闭或删除。在本申请实施例中,当地形块被删除时,可以保存删除的数据的相关地形数据,以便在玩家运行到相关位置处可以尽快恢复。

具体地,实时根据客户端玩家的世界坐标计算出应该当前视距内的地形块编号,对比已生成的地形块集合,需要关闭或者删除的地形块编号;如果有地形块超出视距,但仍在缓冲距离内,则暂时关闭该地形块,节省显卡效能,并能在它再次进入视距时迅速开启,节省下运行算法的时间。如果有地形块超出了视距以及缓冲距离,则可以删除该地形块,玩家对其造成的变更信息存入客户端硬盘,但所有可以通过上述计算得出的数据都不作保存,以节省存档尺寸,当该地块再次需要显示的时候,会重新运行算法,计算出它的地形模型,然后再将玩家的变动叠加上去,保证游戏世界的统一性。

上述实施例从方法流程的角度介绍一种地形场景生成的方法,下述实施例从虚拟模块或者虚拟单元的角度介绍了一种地形场景生成的装置,具体详见下述实施例。

本申请实施例提供了一种地形场景生成的装置,如图10所示,该地形场景生成装置1000可以包括:

第一获取模块1001,用于当游戏运行时,获取计算逻辑文件;

生成模块1002,用于基于计算逻辑文件,生成地形模型;

其中,计算逻辑文件包含:

生成地形模型所需执行的各个算法、各个算法的执行顺序以及各个算法分别对应的参数信息。

本申请实施例的另一种可能的实现方式,装置1000还包括:第二获取模块,其中,

第二获取模块,用于获取随机种子;

生成模块1002在基于计算逻辑文件,生成地形模型时,具体用于:基于随机种子以及计算逻辑文件,生成地形模型。

本申请实施例的另一种可能的实现方式,生成模块1002在生成地形模型时,具体用于:

确定当前待渲染的区域;

为待渲染的区域生成地形模型。

本申请实施例的另一种可能的实现方式,所述生成模块1002在为所述待渲染的区域生成所述地形模型时,具体用于:

分别生成海床基础高程和至少一个陆地区域的基础高程;

生成生态圈遮罩,并基于所述生态圈遮罩、所述海床基础高程、所述至少一个陆地区域的基础高程,生成全局基础高程图;

将所述全局基础高程图通过海滩算法以及水侵蚀算法,生成最终的全局高程图;

基于所述最终的全局高程图以及获取的贴图数据,为所述待渲染的区域生成所述地形模型。

本申请实施例的另一种可能的实现方式,所述生成模块1002在为所述待渲染的区域生成所述地形模型时,具体用于:

分别生成丘陵区域的基础高程、山脉区域的基础高程、海床积沙区域的基础高程;

生成生态圈遮罩,并基于所述生态圈遮罩、所述丘陵区域的基础高程、所述山脉区域的基础高程以及所述海床积沙的基础高程,生成全局基础高程图;

将所述全局基础高程图通过海滩算法以及水侵蚀算法,生成最终的全局高程图;

基于所述最终的全局高程图以及获取的贴图数据,为所述待渲染的区域生成所述地形模型。

本申请实施例的另一种可能的实现方式,生成模块1002在生成丘陵区域的基础高程时,具体用于:

获取待渲染区域中各个像素分别对应的世界坐标;

根据输入的种子以及各个像素分别对应的世界坐标,生成第一灰度图;

基于第一灰度图生成丘陵区域的基础高程。

本申请实施例的另一种可能的实现方式,生成模块1002在生成山脉区域的基础高程时,具体用于:

获取待渲染区域对应的细分值,细分值用于确定待渲染区域被划分的区间数目;

根据输入的种子,分别在各个区间中的随机位置生成一个点;

基于输入的概率信息以及种子,确定各个区间中生成的点是否需要被擦除,并擦除确定出的需要被擦除的点;

计算每个像素与每个像素对应的预设点之间的距离,预设点为距离每个像素最近的点;

基于每个像素与每个像素对应的预设点之间的距离以及最大距离,生成第二灰度图,最大距离为像素与像素对应的预设点之间的距离中的最大距离;

基于第二灰度图生成山脉区域的基础高程。

本申请实施例的另一种可能的实现方式,生成模块1002在生成海床积沙区域的基础高程时,具体用于以下至少一项:

将第二灰度图进行反向处理,得到反向处理后的灰度图,并基于反向处理后的灰度图生成第一海床积沙区域的基础高程,第一海床积沙区域的基础高程为海底存在珊瑚区域的高程;

将第二灰度图进行按照预设方式进行缩放处理,得到缩放处理后的高程,并基于缩放处理后的高程,生成第二海床积沙区域的基础高程,第二海床积沙区域的基础高程为海底满足预设条件的高程。

本申请实施例的另一种可能的实现方式,待渲染区域包括:至少两个地形块;生成模块1002在为待渲染的区域生成地形模型时,具体用于:

通过不同的线程为至少两个地形块中的每个地形块生成对应的地形模型。

本申请实施例的另一种可能的实现方式,装置1000还包括:第三获取模块、确定模块、渲染模块、释放数据模块,其中,

第三获取模块,用于获取玩家当前所处位置;

确定模块,用于基于玩家当前所处位置确定至少一个第一地形块和/或至少一个第二地形块;

渲染模块,用于停止渲染至少一个第一地形块所对应的图像;以及,

释放数据模块,用于释放至少一个第二地形块所对应的图像数据;

其中,第一地形块为与玩家当前所处位置之间的距离大于视距距离,且小于缓冲距离的地形块;第二地形块为与玩家当前所处位置之间的距离大于视距距离,且小于缓冲距离的地形块。

对于本申请实施例,第一获取模块1001、第二获取模块以及第三获取模块可以同一获取模块,也可以为不同的获取模块,也可以部分为相同的获取模块,在本申请实施例中不做限定。

本申请实施例提供了一种地形场景生成装置,与相关技术中,游戏运行中所涉及的所有地形的图像数据封装在发布包内相比,在本申请实施例中,玩家终端获取到计算逻辑文件,即可以根据计算逻辑文件生成地形模型,并且计算逻辑文件包含:生成地形模型所需执行的各个算法、各个算法的执行顺序以及各个算法分别对应的参数信息。而不需要如相关技术中玩家终端运行封装有所有地形的图像数据才可以得到各个地形模型,从而可以减小游戏发布包的体量,并且也可以使得更多的玩家下载运行该游戏,进而可以提升用户体验。

在上述实施例中提供了一种地形场景生成装置,适用于上述方法实施例,在此不再赘述。

在上述实施例中分别从方法流程的角度介绍了一种地形场景生成方法,以及从虚拟模块的角度介绍了一种地形场景生成装置,下述分别介绍了一种电子设备以及计算机可读存储介质,具体详见下述实施例。

本申请实施例中提供了一种电子设备,如图11所示,图11所示的电子设备1100包括:处理器1101和存储器1103。其中,处理器1101和存储器1103相连,如通过总线1102相连。可选地,电子设备1100还可以包括收发器1104。需要说明的是,实际应用中收发器1104不限于一个,该电子设备1100的结构并不构成对本申请实施例的限定。

处理器1101可以是CPU(Central Processing Unit,中央处理器),通用处理器,DSP(Digital Signal Processor,数据信号处理器),ASIC(Application SpecificIntegrated Circuit,专用集成电路),FPGA(Field Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器1101也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。

总线1102可包括一通路,在上述组件之间传送信息。总线1102可以是PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(ExtendedIndustry Standard Architecture,扩展工业标准结构)总线等。总线1102可以分为地址总线、数据总线、控制总线等。为便于表示,图11中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

存储器1103可以是ROM(Read Only Memory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,RAM(Random Access Memory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM(Electrically ErasableProgrammable Read Only Memory,电可擦可编程只读存储器)、CD-ROM(Compact DiscRead Only Memory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。

存储器1103用于存储执行本申请方案的应用程序代码,并由处理器1101来控制执行。处理器1101用于执行存储器1103中存储的应用程序代码,以实现前述方法实施例所示的内容。

其中,电子设备包括但不限于:移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。还可以为服务器等。图11示出的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。

本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,当其在计算机上运行时,使得计算机可以执行前述方法实施例中相应内容。与现有技术相比,在本申请实施例中,玩家终端获取到计算逻辑文件,即可以根据计算逻辑文件生成对应的地形模型,并且计算逻辑文件包含:生成地形模型所需执行的各个算法、所述各个算法的执行顺序以及所述各个算法分别对应的参数信息。而不需要如相关技术中玩家终端运行封装有所有地形的图像数据才可以得到各个地形模型,从而可以减小游戏发布包的体量,并且也可以使得更多的玩家下载运行该游戏,进而可以提升用户体验。

应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

以上所述仅是本申请的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

相关技术
  • 地形场景生成方法、装置、电子设备及存储介质
  • 虚拟场景的地形编辑方法及装置、存储介质及电子设备
技术分类

06120112857569