System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及计算机,尤其是涉及到一种三维虚拟场景的寻路方法及装置、存储介质、计算机设备。
技术介绍
1、在游戏中,无论是玩家操控的角色还是由系统ai控制的角色,执行从一个地点到另一个地点的寻路任务是常态,特别是在涉及长距离移动和任务完成的过程中。针对三维游戏场景的寻路需求,现有的解决方案通常依赖于网格化搜索方法,即游戏角色基于当前所在的网格单元,探索其周围可到达的相邻网格,以此为基础规划路径。
2、当前普遍采用的寻路方法中,通过采样检测来判断网格的可达性。即对目标网格进行采样检查,以确定其是否可供角色通行。然而,这种单一的采样检测方式存在明显的局限:如果采样数量过少,可能会遗漏某些应当被标记为可通过但实际上未被检测到的网格区域,导致寻路结果不准确,游戏角色可能无法找到实际存在的可行路径。相反,若为了提高检测覆盖率而大幅度增加采样数量,虽然可以减少漏检情况,但会显著增加计算负担和处理时间,降低寻路算法的整体效率,影响游戏流畅度和玩家体验。现行的基于采样检测的三维游戏场景寻路技术在确保寻路准确性与保持高效性之间面临折衷困境,亟待进一步优化或创新以解决上述问题。
技术实现思路
1、有鉴于此,本申请实施例提供了一种三维虚拟场景的寻路方法及装置、存储介质、计算机设备,在一个预先网格化并标注可达状态的三维虚拟场景中,利用网格的可达状态标签从起始位置出发,通过搜索可达网格链路,最终确定一条通往目标位置的合理寻路路径,能够实现精确、高效的路径规划。
2、根据本申请的一个方面,
3、响应于基于三维虚拟场景的寻路指令,确定起始位置和目标位置,其中,所述三维虚拟场景被划分成单位立方体大小的多个网格,所述网格标记有位置信息和可达状态标签,所述可达状态标签用于表征所述网格以及所述网格至上下两个网格的可达状态;
4、将所述起始位置对应的网格作为当前的起点网格,利用所述位置信息和所述可达状态标签,在所述起点网格对应的相邻网格中搜索所述起点网格的可达网格,并将搜索到的可达网格作为下一个起点网格继续进行可达网格的搜索,直到搜索到所述目标位置对应的目标网格;
5、基于所述起始网格、所述目标网格以及各起点网格的可达网格,确定目标寻路路径。
6、在本申请实施例中,可选地,将所述起始位置对应的网格作为当前的起点网格,利用所述位置信息和所述可达状态标签,在所述起点网格对应的相邻网格中搜索所述起点网格的可达网格,并将搜索到的可达网格作为下一个起点网格继续进行可达网格的搜索,直到搜索到所述目标位置对应的目标网格,包括:
7、针对任一个起点网格,根据所述起点网格的可达状态标签,确定所述起点网格对应的可达高度信息,根据各网格的位置信息识别与所述起点网格的空间位置相邻且与所述可达高度信息匹配的相邻网格,并根据所述相邻网格的可达状态标签在所述相邻网格中确定所述起点网格的可达网格。
8、在本申请实施例中,可选地,任一网格的可达状态标签包括以下其中之一:自身不可达标签、上下不可达标签、上方不可达标签、下方不可达标签、以及上下可达标签。
9、在本申请实施例中,可选地,根据所述起点网格的可达状态标签,确定所述起点网格对应的可达高度信息,包括:
10、在所述起点网格的可达状态标签为上下可达标签的情况下,确定所述可达高度信息为向下单位高度至向上单位高度,所述单位高度为所述网格的高度;
11、在所述起点网格的可达状态标签为上方不可达标签的情况下,确定所述可达高度信息为向下单位高度至0;
12、在所述起点网格的可达状态标签为下方不可达标签的情况下,确定所述可达高度信息为0至向上单位高度;
13、在所述起点网格的可达状态标签为上下不可达标签的情况下,基于所述起点网格的网格高度,确定所述可达高度信息为0。
14、在本申请实施例中,可选地,识别与所述起点网格的空间位置相邻且与所述可达高度信息匹配的相邻网格,包括:
15、确定以所述起点网格为中心网格的待搜索立方体,其中,所述待搜索立方体包括以中心网格在内的27个网格;
16、在所述待搜索立方体中确定与所述可达高度信息匹配的相邻网格。
17、在本申请实施例中,可选地,根据所述相邻网格的可达状态标签在所述相邻网格中确定所述起点网格的可达网格,包括:
18、在所述相邻网格的可达状态标签为上下可达标签、且所述相邻网格对应的上方网格的可达状态标签为上方不可达标签或上下可达标签的情况下,确定所述相邻网格属于所述起点网格的可达网格;
19、在所述相邻网格的可达状态标签为上下可达标签、且所述相邻网格对应的上方网格的可达状态标签为下方不可达标签或上下不可达标签或自身不可达标签的情况下,确定所述相邻网格不属于所述起点网格的可达网格;
20、在所述相邻网格的可达状态标签为下方不可达标签、所述相邻网格为所述起点网格对应的同层网格或下层网格、且所述相邻网格对应的上方网格的可达状态标签为上方不可达标签或上下可达标签的情况下,确定所述相邻网格属于所述起点网格的可达网格;
21、在所述相邻网格的可达状态标签为下方不可达标签、所述相邻网格为所述起点网格对应的同层网格或下层网格、且所述相邻网格对应的上方网格的可达状态标签为下方不可达标签或上下不可达标签或自身不可达标签的情况下,确定所述相邻网格不属于所述起点网格的可达网格;
22、在所述相邻网格的可达状态标签为下方不可达标签、所述相邻网格为所述起点网格对应的上层网格的情况下,确实所述相邻网格不属于所述起点网格的可达网格;
23、在所述相邻网格的可达状态标签为上方不可达标签、上下不可达标签或自身不大可标签的情况下,确定所述相邻网格不属于所述起点网格的可达网格。
24、在本申请实施例中,可选地,对任一网格进行可达状态标签的标记过程包括:
25、根据所述网格的体素状态信息,识别所述网格是否属于自身可达网格,其中,所述体素状态信息用于表示所述网格内的体素占用情况;
26、在所述网格不属于自身可达网格的情况下,标记所述网格的可达状态标签为自身不可达标签;
27、在所述网格属于自身可达网格的情况下,根据所述网格对应的上下两个网格的体素状态信息,识别所述网格的上下两个网格是否属于所述网格的可达网格;
28、在所述网格的上下两个网格均不属于所述网格的可达网格的情况下,标记所述网格的可达状态标签为上下不可达标签;
29、在所述网格的上方网格不属于所述网格的可达网格且所述网格的下方网格属于所述网格的可达网格的情况下,标记所述网格的可达状态标签为上方不可达标签;
30、在所述网格的上方网格属于所述网格的可达网格且所述网格的下方网格不属于所述网格的可达网格的情况下,标记所述网格的可达状态标签为下方不可达标签;
31、在所述网格的上下两个本文档来自技高网...
【技术保护点】
1.一种三维虚拟场景的寻路方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,将所述起始位置对应的网格作为当前的起点网格,利用所述位置信息和所述可达状态标签,在所述起点网格对应的相邻网格中搜索所述起点网格的可达网格,并将搜索到的可达网格作为下一个起点网格继续进行可达网格的搜索,直到搜索到所述目标位置对应的目标网格,包括:
3.根据权利要求2所述的方法,其特征在于,任一网格的可达状态标签包括以下其中之一:自身不可达标签、上下不可达标签、上方不可达标签、下方不可达标签、以及上下可达标签。
4.根据权利要求3所述的方法,其特征在于,根据所述起点网格的可达状态标签,确定所述起点网格对应的可达高度信息,包括:
5.根据权利要求2所述的方法,其特征在于,识别与所述起点网格的空间位置相邻且与所述可达高度信息匹配的相邻网格,包括:
6.根据权利要求3所述的方法,其特征在于,根据所述相邻网格的可达状态标签在所述相邻网格中确定所述起点网格的可达网格,包括:
7.根据权利要求1至6中任一项所述的方法,其特征
8.一种三维虚拟场景的寻路装置,其特征在于,所述装置包括:
9.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法。
10.一种计算机设备,包括存储介质、处理器及存储在存储介质上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法。
...【技术特征摘要】
1.一种三维虚拟场景的寻路方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,将所述起始位置对应的网格作为当前的起点网格,利用所述位置信息和所述可达状态标签,在所述起点网格对应的相邻网格中搜索所述起点网格的可达网格,并将搜索到的可达网格作为下一个起点网格继续进行可达网格的搜索,直到搜索到所述目标位置对应的目标网格,包括:
3.根据权利要求2所述的方法,其特征在于,任一网格的可达状态标签包括以下其中之一:自身不可达标签、上下不可达标签、上方不可达标签、下方不可达标签、以及上下可达标签。
4.根据权利要求3所述的方法,其特征在于,根据所述起点网格的可达状态标签,确定所述起点网格对应的可达高度信息,包括:
5.根据权利要求2所述的方法,其特征...
【专利技术属性】
技术研发人员:苏泳,佟庆,
申请(专利权)人:完美世界互娱北京科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。