水体配置方法、装置、设备和存储介质与流程
本发明涉及数据处理技术领域,尤其涉及一种水体配置方法、装置、设备和存储介质。
背景技术:
为了让游戏更加逼真的模拟真实世界,可以在游戏环境中设置水体。而为了丰富游戏环境的多样性和复杂性,可以不单单把所有水体都设置为具有相一致的逻辑数据,可以进一步按照水深将水体划分为深水、中水和浅水等,按照水体特性将水体划分为岩浆、沼泽、温泉等。其中,逻辑数据反映了水体的不同属性,具有不同逻辑数据的水体具有不同的游戏效果。
一片水域对应着多个地块,在水体由程序生成并渲染完毕后,需要技术人员手动划分区域。对于每个属于水体的地块,需要技术人员手动配置水体的逻辑数据。一个地块对应的水体逻辑数据不唯一,在水体逻辑数据较为复杂的情况下,需要技术人员多次进行配置。水体配置的效率和质量依赖技术人员的经验和能力。在水域面积广,水体情况复杂的情况下,数据配置的效率极低,配置错误的发生难以避免。
相关技术还提出了一种配置水体的方法。在该方法中,需要先制作大量配置好逻辑数据的包含水体的模块化地图以及建立素材库,制作水体时从素材库中选取合适的地图模块进行拼接。对于该方法,需要为各种水体准备大量的模块化素材储备,储备阶段仍然要对每个水体进行人工配置。如果最终拼接的水体类型和样式较多,模块的重复利用率就低。如果水体类型和样式较少,游戏场景的重复率就高,做出某个湖泊的水性质特殊、和其他水域完全不同这种游戏场景的成本就极高,满足不了游戏场景的多样化、特色化的需求。
技术实现要素:
本发明实施例提供一种水体配置方法、装置、设备和存储介质,用以实现减少配置水体的工作量,降低配置过程中产生错误的概率,为技术人员节省创建水体的时间,让技术人员把更多的时间用在丰富水体环境上。
第一方面,本发明实施例提供一种水体配置方法,该方法包括:
获取地图中设定的水体的水源点,由所述水源点出发搜索所述水源点相邻的搜索点;
基于所述地图中包含的各水面点与对应的水下地面点之间的高度差,在所述搜索点中确定与所述水源点同属于所述水体的目标水面点;
对所述目标水面点对应的地块进行拼接并添加材质,得到从所述水源点出发的水体;
基于所述目标水面点与对应的地下水面之间的高度差,确定所述水体的逻辑数据。
可选地,所述基于所述地图中包含的各水面点与对应的水下地面点之间的高度差,在所述搜索点中确定与所述水源点同属于所述水体的目标水面点,包括:
确定预设数量的与待检测水面点相邻接的第一搜索点,所述待检测水面点在首次检测与所述水源点同属于所述水体的目标水面点的过程中为所述水源点;
计算所述第一搜索点与对应的水下地面点之间的第一高度差;
若所述第一高度差满足预设条件,则确定所述第一搜索点为所述水体覆盖的目标水面点,确定所述预设数量的与所述第一搜索点相邻接的第二搜索点,将所述第二搜索点确定为所述待检测水面点,转至执行所述确定预设数量的与待检测水面点相邻接的第一搜索点的步骤。
可选地,所述若所述第一高度差满足预设条件,则确定所述第一搜索点为所述水体覆盖的目标水面点,包括:
若所述第一高度差大于第一预设阈值,则确定所述第一搜索点为所述水体覆盖的目标水面点;
所述方法还包括:
若所述第一高度差小于或者等于所述第一预设阈值,则标记已检查所述第一搜索点。
可选地,所述逻辑数据包括水体的水深区域类型,所述基于所述目标水面点与对应的地下水面之间的高度差,确定所述水体的逻辑数据,包括:
若所述目标水面点中的任一水面点与对应的地下水面之间的高度差小于第二预设阈值,则所述任一水面点属于浅水;
若所述目标水面点中的任一水面点与对应的地下水面之间的高度差大于或者等于所述第二预设阈值、且小于或者等于第三预设阈值,则所述任一水面点属于中水;
若所述目标水面点中的任一水面点与对应的地下水面之间的高度差大于所述第三预设阈值,则所述任一水面点属于深水;
基于所述目标水面点中各水面点所属的水深类型,将所述水体划分为浅水区域、中水区域以及深水区域。
可选地,所述方法还包括:
获取输入的所述水体覆盖的各地块分别对应的水域属性;
基于输入的水域属性,对应于所述水体覆盖的各地块配置所述水体的水域属性。
可选地,所述方法还包括:
若所述水体覆盖的任一地块对应的水域属性为允许游泳,则允许目标操控对象在所述任一地块对应的水域中进行游泳操作,并根据所述任一地块对应的水域的游泳参数,确定所述游泳参数对应的游泳动作特效以及游泳音效。
可选地,所述方法还包括:
若所述水体覆盖的地块属于道路且所述道路被所述水体覆盖,则在计算寻路数据时将被所述水体覆盖的道路删除;
若所述水体覆盖的任一地块对应的水域属性为禁止游泳的深水区域,则在计算寻路数据时将所述任一地块设置为禁止通行。
可选地,所述方法还包括:
根据所述水体的水域属性,设置目标操控对象对应的对抗对象在所述地图中的随机生成位置范围,所述位置范围外禁止生成陆生属性的对抗对象;
若所述对抗对象的物种属性为陆生属性,则在所述位置范围内随机生成所述对抗对象。
第二方面,本发明实施例提供一种水体配置装置,包括:
获取模块,获取地图中设定的水体的水源点,由所述水源点出发搜索所述水源点相邻的搜索点;
确定模块,基于所述地图中包含的各水面点与对应的水下地面点之间的高度差,在所述搜索点中确定与所述水源点同属于所述水体的目标水面点;
拼接模块,用于对所述目标水面点对应的地块进行拼接并添加材质,得到从所述水源点出发的水体;
所述确定模块,用于基于所述目标水面点与对应的地下水面之间的高度差,确定所述水体的逻辑数据。
可选地,所述确定模块,用于:
确定预设数量的与待检测水面点相邻接的第一搜索点,所述待检测水面点在首次检测与所述水源点同属于所述水体的目标水面点的过程中为所述水源点;
计算所述第一搜索点与对应的水下地面点之间的第一高度差;
若所述第一高度差满足预设条件,则确定所述第一搜索点为所述水体覆盖的目标水面点,确定所述预设数量的与所述第一搜索点相邻接的第二搜索点,将所述第二搜索点确定为所述待检测水面点,转至执行所述确定预设数量的与待检测水面点相邻接的第一搜索点的步骤。
可选地,所述确定模块,用于:
若所述第一高度差大于第一预设阈值,则确定所述第一搜索点为所述水体覆盖的目标水面点;
若所述第一高度差小于或者等于所述第一预设阈值,则标记已检查所述第一搜索点。
可选地,所述逻辑数据包括水体的水深区域类型,所述确定模块,用于:
若所述目标水面点中的任一水面点与对应的地下水面之间的高度差小于第二预设阈值,则所述任一水面点属于浅水;
若所述目标水面点中的任一水面点与对应的地下水面之间的高度差大于或者等于所述第二预设阈值、且小于或者等于第三预设阈值,则所述任一水面点属于中水;
若所述目标水面点中的任一水面点与对应的地下水面之间的高度差大于所述第三预设阈值,则所述任一水面点属于深水;
基于所述目标水面点中各水面点所属的水深类型,将所述水体划分为浅水区域、中水区域以及深水区域。
可选地,所述装置还包括配置模块,所述配置模块,用于:
获取输入的所述水体覆盖的各地块分别对应的水域属性;
基于输入的水域属性,对应于所述水体覆盖的各地块配置所述水体的水域属性。
可选地,所述配置模块,还用于:
若所述水体覆盖的任一地块对应的水域属性为允许游泳,则允许目标操控对象在所述任一地块对应的水域中进行游泳操作,并根据所述任一地块对应的水域的游泳参数,确定所述游泳参数对应的游泳动作特效以及游泳音效。
可选地,所述配置模块,还用于:
若所述水体覆盖的地块属于道路且所述道路被所述水体覆盖,则在计算寻路数据时将被所述水体覆盖的道路删除;
若所述水体覆盖的任一地块对应的水域属性为禁止游泳的深水区域,则在计算寻路数据时将所述任一地块设置为禁止通行。
可选地,所述配置模块,还用于:
根据所述水体的水域属性,设置目标操控对象对应的对抗对象在所述地图中的随机生成位置范围,所述位置范围外禁止生成陆生属性的对抗对象;
若所述对抗对象的物种属性为陆生属性,则在所述位置范围内随机生成所述对抗对象。
第三方面,本发明实施例提供一种电子设备,其中包括处理器和存储器,其中,所述存储器上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器至少可以实现第一方面中的水体配置方法。
第四方面,本发明实施例提供了一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器至少可以实现第一方面中的水体配置方法。
采用本发明,可以从水源点出发自动根据水面点与对应的水下地面之间的高度差生成水体,且在生成水体的过程中,自动确定水体的逻辑数据。通过这样的方式,可以避免再让技术人员手动划分水域并手动配置每个地块的逻辑数据,进而可以减少配置水体的工作量,降低配置过程中产生错误的概率。通过这样的方式,还可以为技术人员节省创建水体的时间,有利于让技术人员把更多的时间用在丰富水体环境上。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种水体配置方法的流程图示意图;
图2为本发明实施例提供的一种水源点设置界面示意图;
图3为本发明实施例提供的一种水体的效果示意图;
图4为本发明实施例提供的一种包括不同水深水域的水体示意图;
图5为本发明实施例提供的一种地图编辑界面示意图;
图6为本发明实施例提供的一种游泳类型配置界面示意图;
图7为本发明实施例提供的一种mask-swimable的效果示意图;
图8为本发明实施例提供的另一种水体配置方法的流程图示意图;
图9为本发明实施例提供的一种水体配置装置的结构示意图;
图10为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种。
取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
另外,下述各方法实施例中的步骤时序仅为一种举例,而非严格限定。
图1为本发明实施例提供的一种水体配置方法的流程图,如图1所示,该方法包括如下步骤:
101、获取地图中设定的水体的水源点,由水源点出发搜索水源点相邻的搜索点。
102、基于地图中包含的各水面点与对应的水下地面点之间的高度差,在搜索点中确定与水源点同属于水体的目标水面点。
103、对目标水面点对应的地块进行拼接并添加材质,得到从水源点出发的水体。
104、基于目标水面点与对应的地下水面之间的高度差,确定水体的逻辑数据。
为了便于理解,可以将一个水体视为一个封闭的轮廓,在该封闭的轮廓中充盈着水体,一个水体中有一个水源。
在实际应用中,如图2所示,策划人员可以在地面坐标系中选定水源点,该水源点可以作为水体中的一个点,具体可以输入水源点坐标位置,还可以输入该水源点对应的水面高度。在设定好水源点之后,假设水从该设定的水源点流出并充满整个水体,水充满水体的过程可以通过漫水算法和广度优先搜索算法确定。
在选定水源点之后,假设地图是由许多小的方格组成的,每个小的方格有四个顶点,水源点就是某个小的方格中的一个顶点。可以从该水源点出发,根据该水源点搜索其周围的搜索点,然后在这些搜索点中选取与水源点属于同一水体的目标水面点。
实际应用中,可以建立搜索队列,将需要所搜的搜索点放入搜索队列中,不是地图中所有的点都需要搜索,只有那些满足一定条件的点才会放入搜索队列中进行搜索。搜索队列中的搜索点具有排列顺序,排列在先的会被先进行搜索,排列在后的会被后进行搜索。
可以理解的是,假设地面坐标系中设置有多个水面点,每个水面点对应有水面高度,水面高度可以是水面点和对应的水下地面点之间的高度差,可以基于各水面点分别对应的水面高度,确定各水面点中的任一水面点是否和水源点属于同一水体。如果各水面点中的任一水面点和水源点属于同一水体,那么该任一水面点可以作为从水源点出发的水体覆盖的目标水面点。如果各水面点中的任一水面点和水源点不属于同一水体,那么该任一水面点则不作为从水源点出发的水体覆盖的目标水面点。
需要说明的是,确定任一水面点是否是从水源点出发的水体覆盖的目标水面点的具体实现方式会在后面进行介绍,在此暂不赘述。
在确定出从水源点出发的水体覆盖的所有目标水面点之后,将目标水面点对应的地块进行拼接,可以创建出水体的多细节层次(levelsofdetail,lod)模型,然后添加材质,即可生成水体。其中,地块为游戏场景中组成地面的最小单位。一种生成水体的效果图可以见图3所示。
需要说明的是,水体具有不同属性,可以对应有不同逻辑数据,水体的逻辑数据可以包括celltype、mask、cellmask以及cellpass等。这些逻辑数据表示的含义以及具体作用会在后面进行介绍,在此暂不赘述。在生成水体的同时,还可以根据各目标水面点的水面高度,自动生成水体的逻辑数据。
在生成水体以及自动创建水体的逻辑数据之后,就可以使用该水体进行游戏,玩家操控的目标操控对象可以和水体产生不同的交互。根据玩家的操控以及水体的逻辑数据,可以给出不同的游戏效果反应与特效音效。
下面介绍确定任一水面点是否是从水源点出发的水体覆盖的目标水面点的过程。
可选地,基于地图中包含的各水面点与对应的水下地面点之间的高度差,确定从水源点出发的水体覆盖的目标水面点的过程可以实现为:确定预设数量的与待检测水面点相邻接的第一搜索点,待检测水面点在首次检测水体覆盖的目标水面点的过程中为水源点;计算第一搜索点与对应的水下地面点之间的第一高度差;若第一高度差满足预设条件,则确定第一搜索点为水体覆盖的目标水面点,确定预设数量的与第一搜索点相邻接的第二搜索点,将第二搜索点确定为待检测水面点,转至执行确定预设数量的与待检测水面点相邻接的第一搜索点的步骤。
可选地,上述若第一高度差满足预设条件,则确定第一搜索点为水体覆盖的目标水面点的过程可以实现为:若第一高度差大于第一预设阈值,则确定第一搜索点为水体覆盖的目标水面点。相应地,若第一高度差小于或者等于第一预设阈值,则标记已检查第一搜索点。
在实际应用中,可以设置水体列表,和水源点属于同一水体的目标水面点可以记录在该水体列表中,这样查询水体列表中的目标水面点,就能够知道同一水体中都包括哪些水面点。
可以理解的是,可以确定水源点与对应的水下地面之间的高度差,若该高度差大于0,则可以将该水源点标记为已检查,将该水源点加入水体列表,若该高度差小于或者等于0,则该水源点是不符合设计要求的,终止水体生成的过程,并报错。若水源点是符合设计要求的,则可以执行后续检测其他点的步骤。
在检测其他点的过程中,可以以水源点作为待检测水面点,确定预设数量的与待检测水面点相邻接的第一搜索点。在一种可能的实现方式中,例如可以将水源点周围相邻的4个相邻接的第一搜索点放入搜索队列。可以取出搜索队列中排列在第一位的第一搜索点a1。若a1与对应的水下地面之间的高度差大于0,则可以标记a1已经过检查,并将a1放入水体列表,同时还可以确定预设数量的与第一搜索点相邻接的第二搜索点b1、b2……,将第二搜索点确定为待检测水面点,将第二搜索点放入搜索队列的末尾。在一种可能的实现方式中,例如可以将a1周围相邻的4个相邻接的第二搜索点放入搜索队列。若a1与对应的水下地面之间的高度差小于或者等于0,则可以标记a1已经过检查,并不做其他处理。
之后可以依次访问搜索队列中的每个待检测水面点,就可以将全图范围内从水源点出发的水体能够蔓延的所有目标水面点都确定出来,并将确定出的这些目标水面点记录在水体列表中。
在生成水体的同时,还可以根据各目标水面点的水面高度,自动生成水体的逻辑数据。逻辑数据可以包括水体的水深区域类型,自动生成水体的逻辑数据的过程可以实现为:若目标水面点中的任一水面点与对应的地下水面之间的高度差小于第二预设阈值,则任一水面点属于浅水;若目标水面点中的任一水面点与对应的地下水面之间的高度差大于或者等于第二预设阈值、且小于或者等于第三预设阈值,则任一水面点属于中水;若目标水面点中的任一水面点与对应的地下水面之间的高度差大于第三预设阈值,则任一水面点属于深水;基于目标水面点中各水面点所属的水深类型,将水体划分为浅水区域、中水区域以及深水区域。
在实际应用中,可以根据水体覆盖的各地块对应的水面深度,自动将连续的水体划分为3种不同水深区域,包括浅水区域、中水区域以及深水区域。如果水面深度在0.5米以下,则为浅水区域。如果水面深度在0.5-1.5米之间,则为中水区域。如果水面深度在1.5米以上,则为深水区域。如图4所示,图4展示一个地图,在该地面上是水体,图4中的一片水体包括多种水深区域,以白色或者不同浓度的阴影表示水的深浅。
不同水深区域在游戏中具有不同交互效果。例如,可以让玩家操控的目标操控对象在浅水中行走速度放慢,可以让目标操控对象在中水或者深水中游泳等。
除了可以设置水体的水深区域类型之外,可选地,还可以获取输入的水体覆盖的各地块分别对应的水域属性;基于输入的水域属性,对应于水体覆盖的各地块配置水体的水域属性。
在实际应用中,水体的水域属性可以对应于其覆盖的各地块进行记录。如图5所示,策划人员可以在地图编辑界面中填写浅水类型、中水类型、深水类型、提示类型、提示范围等数值。可以将一个连续水域的地块在水体生成时按水面高度赋予不同的配置的celltype,从而可以实现在一片连续的水体中,根据水深给玩家提供不同的玩法,对目标操控对象施加不同的影响。策划人员仅仅需要在设计水体时配置不同地块对应的celltype,就可以将不同地块对应的celltype与特定的水体关联起来。其中,celltype是一种地块的属性,用于区分水域属性,如常规水域,岩浆等,不同celltype可以匹配不同的游泳动作和特效音效等交互反馈。实际应用中,策划人员可以通过地图编辑界面增减、调整各种celltype的值。
在一种可能的实现方式中,可以设置目标操控对象在湖边浅滩并不费力地淌水行走,在较深的水域目标操控对象会展现全身湿透且移动速度大大降低的效果。如果在下一个游戏版本中,希望展现同一片湖水被污染严重的情况,则可以仅仅改动对应水域属性的值,再重新生成水体,就能够将该湖水改为充满剧毒的沼泽。
可选地,若水体覆盖的任一地块对应的水域属性为允许游泳,则允许目标操控对象在任一地块对应的水域中进行游泳操作,并根据任一地块对应的水域的游泳参数,确定游泳参数对应的游泳动作特效以及游泳音效。
如前面所述,并不是所有水深水域都设置为可以让目标操控对象游泳。如果水体的逻辑数据勾选了可以让目标操控对象游泳时,在自动生成水体时,如图6所示,可以自动将中水水域和深水水域的celltype赋值为游泳类型的值。在图6中,游泳类型被赋值为18。可以理解的是,不同的celltype赋值可以对应不同的游泳动作及特效音效。一种mask-swimable地图的示意效果可以见图7所示。
可以通过设置中水和深水对应的地块的mask中的swimable属性来禁止或者允许目标操控对象游泳。其中,mask为一种地块的属性,可以记录水域是否可以游泳、行走、飞行、建造等,用于区分逻辑状态。当swimable属性为true时,表示允许目标操控对象和非玩家角色(nonplayercharacter,npc)在对应的地块上处于某特定状态。例如,如果目标操控对象从swimable为true的区域进入swimable为false的区域,在游戏中表现为目标操控对象从水中游上岸边,姿态从游泳切换为走路的过程。如果一只陆生野兽落入水域区域,则需要开始划水游泳,进入水域区域的陆生野兽可能设置为无法再像在陆地上一样去做出伤害力极大的攻击动作。
此外,在中水和深水地块上生成水下逻辑块,可以使目标操控对象和水上npc的服务器高度位于水面附近。其中,逻辑块为具有服务器高度的空地块。
在计算寻路数据的过程中,如果设计人员勾选了使用mask的选项,在生成水体的过程中,可以自动调整地块的mask和cellpass属性,自动修正寻路数据。cellpass是一种地块的属性,可以记录一片区域是否可以通行,用于寻路数据。
可选地,若水体覆盖的地块属于道路且道路被水体覆盖,则在计算寻路数据时将被水体覆盖的道路删除;若水体覆盖的任一地块对应的水域属性为禁止游泳的深水区域,则在计算寻路数据时将任一地块设置为禁止通行。
例如,被水覆盖的road(道路标记,计算寻路时优先级高于普通地块)会被擦除,不可游泳的深水地块属性改为unpass(客户端不可通过标记,在ai和寻路判断中该处不可通行)和unwalkable(服务器不可通过标记,所有对象不可进入或通过该地块,可以理解为是无限高度的空气墙)。
下面介绍生态数据的确定方式。可选地,可以根据水体的水域属性,设置目标操控对象对应的对抗对象在地图中的随机生成位置范围,位置范围外禁止生成陆生属性的对抗对象;若对抗对象的物种属性为陆生属性,则在位置范围内随机生成对抗对象。
在实际应用中,在生成水体的过程中,可以自动调整地块的cellmask的值。cellmask是一种地块的属性,可以记录区域是否可对对抗对象进行攻击,还可以记录区域是否属于沼泽或其他生态区域类型。通过调整cellmask的值,可以控制符合设计要求的对对抗对象进行攻击的位置范围。例如,在自动随机生成陆生属性的对抗对象时,通过参照cellmask的值,能够达到禁止将具有陆生属性的对抗对象随机生成在海底中。
综上,如图8所示,是生成水体以及在生成水体的过程中确定水体的逻辑数据的总流程示意图。首先,可以新建水体,然后策划人员可以输入配置数据,接着可以将水源点加入到搜索队列中,并选水源点为当前点。随后,可以判断参考平面与当前点地块的高度差是否小于或者等于0。如果参考平面与当前点地块的高度差小于或者等于0,则可以记录当前点为已生成逻辑数据的非法点,转至执行判断搜索队列是否为空的步骤。如果参考平面与当前点地块的高度差大于0,则可以判断参考平面与当前点地块的高度差是否小于或者等于0.5。
如果参考平面与当前点地块的高度差小于或者等于0.5,则可以将配置数据中浅水类型的值赋值到该地块的celltype。然后,可以判断配置数据中是否勾选了使用mask的选项。如果配置数据中勾选了使用mask的选项,则可以自动将当前点所在地块的mask属性设置为符合浅水区定义的值,然后记录当前点为已生成逻辑数据的合法点,并放入水体列表中。如果配置数据中未勾选使用mask的选项,则直接转至记录当前点为已生成逻辑数据的合法点并放入水体列表中的步骤。
如果参考平面与当前点地块的高度差大于0.5,则可以判断参考平面与当前点地块的高度差是否小于或者等于1.5.如果参考平面与当前点地块的高度差小于或者等于1.5,则判断配置数据中是否勾选了游泳水的选项。如果配置数据中未勾选游泳水的选项,则可以将配置数据中中水类型的值赋值到该地块的celltype。然后,可以判断配置数据中是否勾选了使用mask的选项。如果配置数据中勾选了使用mask的选项,则可以自动将当前点所在地块的mask属性设置为符合中水区定义的值。接着,可以记录当前点为已生成逻辑数据的合法点,并放入水体列表中。如果配置数据中未勾选使用mask的选项,则直接转至记录当前点为已生成逻辑数据的合法点并放入水体列表中的步骤。
如果参考平面与当前点地块的高度差小于或者等于1.5,则可以将配置数据中深水类型的值赋值到该地块的celltype。然后,可以判断配置数据中是否勾选了游泳水。如果配置数据中未勾选游泳水,则可以将配置数据中深水类型的值赋值到该地块的celltype。接着,可以判断配置数据中是否勾选了使用mask的选项。如果配置数据中勾选了使用mask的选项,则可以自动将当前点所在地块的mask属性设置为符合深水区定义的值。然后,可以根据配置数据中的提示范围,搜索合法地块,将提示类型的值赋值到该地块对应的属性。最后,可以记录当前点为已生成逻辑数据的合法点,并放入水体列表中。如果配置数据中未勾选使用mask的选项,则直接转至记录当前点为已生成逻辑数据的合法点并放入水体列表中的步骤。
如果配置数据中勾选了游泳水的选项,则可以将配置数据中游泳水类型的值赋值到该地块的celltype,自动生成水下逻辑块。然后,可以判断配置数据中是否勾选了使用mask的选项。如果配置数据中勾选了使用mask的选项,则可以自动将当前点所在地块的mask属性设置为符合游泳区定义的值。然后,可以记录当前点为已生成逻辑数据的合法点,并放入水体列表中。如果配置数据中未勾选使用mask的选项,则直接转至记录当前点为已生成逻辑数据的合法点并放入水体列表中的步骤。
在记录当前点为已生成逻辑数据的合法点并放入水体列表之后,可以判断邻接点中是否有未生成逻辑数据的点。如果邻接点中有未生成逻辑数据的点,则将这些点都加入到搜索队列的尾部,选定搜索队列中的下一个点作为当前点。如果邻接点中不存在未生成逻辑数据的点,则判断搜索队列是否为空。
如果搜索队列不为空,则可以判断水体列表是否不为空。如果水体列表为空,则生成水体失败,打印错误报告。如果水体列表不空,则可以按照水体列表中的点创建水体,且根据配置数据设置lod和材质,最终水体创建完毕。
采用本发明,可以从水源点出发自动根据水面点与对应的水下地面之间的高度差生成水体,且在生成水体的过程中,自动确定水体的逻辑数据。通过这样的方式,可以避免再让技术人员手动划分水域并手动配置每个地块的逻辑数据,进而可以减少配置水体的工作量,降低配置过程中产生错误的概率。通过这样的方式,还可以为技术人员节省创建水体的时间,有利于让技术人员把更多的时间用在丰富水体环境上。
以下将详细描述本发明的一个或多个实施例的水体配置装置。本领域技术人员可以理解,这些水体配置装置均可使用市售的硬件组件通过本方案所教导的步骤进行配置来构成。
图9为本发明实施例提供的一种水体配置装置的结构示意图,如图9所示,该装置包括:
获取模块91,用于获取地图中设定的水体的水源点,由所述水源点出发搜索所述水源点相邻的搜索点;
确定模块92,用于基于所述地图中包含的各水面点与对应的水下地面点之间的高度差,在所述搜索点中确定与所述水源点同属于所述水体的目标水面点;
拼接模块93,用于对所述目标水面点对应的地块进行拼接并添加材质,得到从所述水源点出发的水体;
所述确定模块92,用于基于所述目标水面点与对应的地下水面之间的高度差,确定所述水体的逻辑数据。
可选地,所述确定模块92,用于:
确定预设数量的与待检测水面点相邻接的第一搜索点,所述待检测水面点在首次检测与所述水源点同属于所述水体的目标水面点的过程中为所述水源点;
计算所述第一搜索点与对应的水下地面点之间的第一高度差;
若所述第一高度差满足预设条件,则确定所述第一搜索点为所述水体覆盖的目标水面点,确定所述预设数量的与所述第一搜索点相邻接的第二搜索点,将所述第二搜索点确定为所述待检测水面点,转至执行所述确定预设数量的与待检测水面点相邻接的第一搜索点的步骤。
可选地,所述确定模块92,用于:
若所述第一高度差大于第一预设阈值,则确定所述第一搜索点为所述水体覆盖的目标水面点;
若所述第一高度差小于或者等于所述第一预设阈值,则标记已检查所述第一搜索点。
可选地,所述逻辑数据包括水体的水深区域类型,所述确定模块92,用于:
若所述目标水面点中的任一水面点与对应的地下水面之间的高度差小于第二预设阈值,则所述任一水面点属于浅水;
若所述目标水面点中的任一水面点与对应的地下水面之间的高度差大于或者等于所述第二预设阈值、且小于或者等于第三预设阈值,则所述任一水面点属于中水;
若所述目标水面点中的任一水面点与对应的地下水面之间的高度差大于所述第三预设阈值,则所述任一水面点属于深水;
基于所述目标水面点中各水面点所属的水深类型,将所述水体划分为浅水区域、中水区域以及深水区域。
可选地,所述装置还包括配置模块,所述配置模块,用于:
获取输入的所述水体覆盖的各地块分别对应的水域属性;
基于输入的水域属性,对应于所述水体覆盖的各地块配置所述水体的水域属性。
可选地,所述配置模块,还用于:
若所述水体覆盖的任一地块对应的水域属性为允许游泳,则允许目标操控对象在所述任一地块对应的水域中进行游泳操作,并根据所述任一地块对应的水域的游泳参数,确定所述游泳参数对应的游泳动作特效以及游泳音效。
可选地,所述配置模块,还用于:
若所述水体覆盖的地块属于道路且所述道路被所述水体覆盖,则在计算寻路数据时将被所述水体覆盖的道路删除;
若所述水体覆盖的任一地块对应的水域属性为禁止游泳的深水区域,则在计算寻路数据时将所述任一地块设置为禁止通行。
可选地,所述配置模块,还用于:
根据所述水体的水域属性,设置目标操控对象对应的对抗对象在所述地图中的随机生成位置范围,所述位置范围外禁止生成陆生属性的对抗对象;
若所述对抗对象的物种属性为陆生属性,则在所述位置范围内随机生成所述对抗对象。
图9所示装置可以执行前述图1至图8所示实施例中提供的水体配置方法,详细的执行过程和技术效果参见前述实施例中的描述,在此不再赘述。
在一个可能的设计中,上述图9所示水体配置装置的结构可实现为一电子设备,如图10所示,该电子设备可以包括:处理器91、存储器92。其中,所述存储器92上存储有可执行代码,当所述可执行代码被所述处理器91执行时,使所述处理器91至少可以实现如前述图1至图8所示实施例中提供的水体配置方法。
可选地,该电子设备中还可以包括通信接口93,用于与其他设备进行通信。
另外,本发明实施例提供了一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器至少可以实现如前述图1至图8所示实施例中提供的水体配置方法。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助加必需的通用硬件平台的方式来实现,当然也可以通过硬件和软件结合的方式来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以计算机产品的形式体现出来,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例提供的水体配置方法可以由某种程序/软件来执行,该程序/软件可以由网络侧提供,前述实施例中提及的电子设备可以将该程序/软件下载到本地的非易失性存储介质中,并在其需要执行前述水体配置方法时,通过cpu将该程序/软件读取到内存中,进而由cpu执行该程序/软件以实现前述实施例中所提供的水体配置方法,执行过程可以参见前述图1至图8中的示意。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
起点商标作为专业知识产权交易平台,可以帮助大家解决很多问题,如果大家想要了解更多知产交易信息请点击 【在线咨询】或添加微信 【19522093243】与客服一对一沟通,为大家解决相关问题。
此文章来源于网络,如有侵权,请联系删除