发布日期:2024-09-02 浏览次数:次
本技术涉及计算机,尤其是涉及到一种三维虚拟场景的寻路方法及装置、存储介质、计算机设备。背景技术: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、在所述网格的上下两个网格均属于所述网格的可达网格的情况下,标记所述网格的可达状态标签为上下可达标签。32、根据本技术的另一方面,提供了一种三维虚拟场景的寻路装置,所述装置包括:33、寻路位置确定模块,用于响应于基于三维虚拟场景的寻路指令,确定起始位置和目标位置,其中,所述三维虚拟场景被划分成单位立方体大小的多个网格,所述网格标记有位置信息和可达状态标签,所述可达状态标签用于表征所述网格以及所述网格至上下两个网格的可达状态;34、可达网格搜索模块,用于将所述起始位置对应的网格作为当前的起点网格,利用所述位置信息和所述可达状态标签,在所述起点网格对应的相邻网格中搜索所述起点网格的可达网格,并将搜索到的可达网格作为下一个起点网格继续进行可达网格的搜索,直到搜索到所述目标位置对应的目标网格;35、寻路路径确定模块,用于基于所述起始网格、所述目标网格以及各起点网格的可达网格,确定目标寻路路径。36、在本技术实施例中,可选地,所述可达网格搜索模块,还用于:37、针对任一个起点网格,根据所述起点网格的可达状态标签,确定所述起点网格对应的可达高度信息,根据各网格的位置信息识别与所述起点网格的空间位置相邻且与所述可达高度信息匹配的相邻网格,并根据所述相邻网格的可达状态标签在所述相邻网格中确定所述起点网格的可达网格。38、在本技术实施例中,可选地,任一网格的可达状态标签包括以下其中之一:自身不可达标签、上下不可达标签、上方不可达标签、下方不可达标签、以及上下可达标签。39、在本技术实施例中,可选地,所述可达网格搜索模块,还用于:40、在所述起点网格的可达状态标签为上下可达标签的情况下,确定所述可达高度信息为向下单位高度至向上单位高度,所述单位高度为所述网格的高度;41、在所述起点网格的可达状态标签为上方不可达标签的情况下,确定所述可达高度信息为向下单位高度至0;42、在所述起点网格的可达状态标签为下方不可达标签的情况下,确定所述可达高度信息为0至向上单位高度;43、在所述起点网格的可达状态标签为上下不可达标签的情况下,基于所述起点网格的网格高度,确定所述可达高度信息为0。44、在本技术实施例中,可选地,所述可达网格搜索模块,还用于:45、确定以所述起点网格为中心网格的待搜索立方体,其中,所述待搜索立方体包括以中心网格在内的27个网格;46、在所述待搜索立方体中确定与所述可达高度信息匹配的相邻网格。47、在本技术实施例中,可选地,所述可达网格搜索模块,还用于:48、在所述相邻网格的可达状态标签为上下可达标签、且所述相邻网格对应的上方网格的可达状态标签为上方不可达标签或上下可达标签的情况下,确定所述相邻网格属于所述起点网格的可达网格;49、在所述相邻网格的可达状态标签为上下可达标签、且所述相邻网格对应的上方网格的可达状态标签为下方不可达标签或上下不可达标签或自身不可达标签的情况下,确定所述相邻网格不属于所述起点网格的可达网格;50、在所述相邻网格的可达状态标签为下方不可达标签、所述相邻网格为所述起点网格对应的同层网格或下层网格、且所述相邻网格对应的上方网格的可达状态标签为上方不可达标签或上下可达标签的情况下,确定所述相邻网格属于所述起点网格的可达网格;51、在所述相邻网格的可达状态标签为下方不可达标签、所述相邻网格为所述起点网格对应的同层网格或下层网格、且所述相邻网格对应的上方网格的可达状态标签为下方不可达标签或上下不可达标签或自身不可达标签的情况下,确定所述相邻网格不属于所述起点网格的可达网格;52、在所述相邻网格的可达状态标签为下方不可达标签、所述相邻网格为所述起点网格对应的上层网格的情况下,确实所述相邻网格不属于所述起点网格的可达网格;53、在所述相邻网格的可达状态标签为上方不可达标签、上下不可达标签或自身不大可标签的情况下,确定所述相邻网格不属于所述起点网格的可达网格。54、在本技术实施例中,可选地,所述装置还包括,对任一网格进行可达状态标签的标记模块,用于:55、根据所述网格的体素状态信息,识别所述网格是否属于自身可达网格,其中,所述体素状态信息用于表示所述网格内的体素占用情况;56、在所述网格不属于自身可达网格的情况下,标记所述网格的可达状态标签为自身不可达标签;57、在所述网格属于自身可达网格的情况下,根据所述网格对应的上下两个网格的体素状态信息,识别所述网格的上下两个网格是否属于所述网格的可达网格;58、在所述网格的上下两个网格均不属于所述网格的可达网格的情况下,标记所述网格的可达状态标签为上下不可达标签;59、在所述网格的上方网格不属于所述网格的可达网格且所述网格的下方网格属于所述网格的可达网格的情况下,标记所述网格的可达状态标签为上方不可达标签;60、在所述网格的上方网格属于所述网格的可达网格且所述网格的下方网格不属于所述网格的可达网格的情况下,标记所述网格的可达状态标签为下方不可达标签;61、在所述网格的上下两个网格均属于所述网格的可达网格的情况下,标记所述网格的可达状态标签为上下可达标签。62、依据本技术又一个方面,提供了一种存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述三维虚拟场景的寻路方法。63、依据本技术再一个方面,提供了一种计算机设备,包括存储介质、处理器及存储在存储介质上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述三维虚拟场景的寻路方法。64、借由上述技术方案,本技术实施例提供的一种三维虚拟场景的寻路方法及装置、存储介质、计算机设备,预先对三维虚拟场景进行网格划分并标记每个网格的可达状态标签和位置信息,从而基于寻路指令确定起始位置和目标位置,从起始位置所在网格开始,利用位置信息和可达状态标签逐步搜索可达网格,直到搜索到目标位置所在网格为止,即可构建出从起始位置所在网格途径多个可达网格至目标位置所在网格的目标寻路路径。本技术实施例在一个预先网格化并标注可达状态的三维虚拟场景中,利用网格的可达状态标签从起始位置出发,通过搜索可达网格链路,最终确定一条通往目标位置的合理寻路路径,能够实现精确、高效的路径规划,有助于游戏角色在复杂环境中自动规划移动路径,提升游戏的智能化程度和玩家体验,并且该方式中当游戏场景发生变化时,只需更新受影响网格的可达状态标签,无需对整个寻路算法进行大规模重构,具有良好的适应性、扩展性和易开发维护性,有助于简化游戏开发流程。65、上述说明仅是本技术技术方案的概述,为了能够更清楚了解本技术的技术手段,而可依照说明书的内容予以实施,并且为了让本技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本技术的具体实施方式。