CN104548598B - 一种虚拟现实场景中寻路的方法 - Google Patents
一种虚拟现实场景中寻路的方法 Download PDFInfo
- Publication number
- CN104548598B CN104548598B CN201410852326.7A CN201410852326A CN104548598B CN 104548598 B CN104548598 B CN 104548598B CN 201410852326 A CN201410852326 A CN 201410852326A CN 104548598 B CN104548598 B CN 104548598B
- Authority
- CN
- China
- Prior art keywords
- pathfinding
- branch
- point
- type
- deflection angle
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Navigation (AREA)
- Processing Or Creating Images (AREA)
Abstract
本申请公开了一种虚拟现实场景中寻路的方法,通过人们现实找位置的方法得到灵感,在系统内部维护了一个寻路偏转角度和旋转系数,不断地前进和矫正玩家的方向,直到到达目标点或者目标点不可达为止。本申请方案提高了远距离寻路的效率,并且对于短距离寻路和长距离寻路通用,从而简化了开发和维护成本。并且提高了玩家体验。
Description
技术领域
本申请涉及计算机三维虚拟场景模拟技术领域,尤其涉及一种虚拟现实场景中寻路的方法。
背景技术
寻路问题是各类游戏中角色寻路、三维虚拟场景中运动目标的路径规划、机器人寻路、车载导航系统、车辆路径问题(VRP,vehicle routing problem)等多领域中的关键技术之一,相关的寻路算法的研究与应用也是长期的研究热点。
现有技术中常见的寻路算法包括广度优先搜索(BFS,Breadth First Search),深度优先搜索(DFS,Depth First Search),启发式搜索算法等等。深度优先是按照一定的顺序前查找完一个分支,再查找另一个分支,直到找到目标或到达步数为止;广度优先一般是找周围所有点记录下来,然后在对每个点找它们周围所有未找过的点,然后再如此循环下去直到找到目标为止。启发式搜索一般是对每个搜索位置进行评估,找到最好的位置,再从这个位置如此循环进行搜索直到目标。
现有技术中常用的A*(A-Star)寻路算法属于启发式搜索方法,公式表示为:f(n)=g(n)+h(n)。
其中,f(n)是从初始点经由节点n到目标点的估价函数;
g(n)是在状态空间中从初始节点到n节点的实际代价;
h(n)是从n到目标节点最佳路径的估计代价。
保证找到最短路径(最优解的)条件,关键在于估价函数h(n)的选取:估价值h(n)<=n到目标节点的距离实际值,这种情况下,搜索的点数多,搜索范围大,效率低。但能得到最优解。并且如果h(n)=d(n),即距离估计h(n)等于最短距离,那么搜索将严格沿着最短路径进行,此时的搜索效率是最高的。
A*寻路算法的检索过程如图1所示,首先将场景划分为一定大小的栅格方块,方块中的数字相当于坐标。假设物体要从方块A运动到方块B,深灰色方块表示寻路过程中搜索到的方块,浅灰色方块表示实际经过的方块,灰色实线表示A*寻到的最优解。传统的A*寻路是一种“面”的寻路方式,这样多次的重复计算,会在短时间内占用非常多的系统资源,而且随着寻路越长,这种消耗是平方数上升的。其他的寻路算法虽然对传统的A*有优化,但是都是这种基于“面”的算法,寻路过程中对计算机资源占用较高。
目前,在游戏中使用的寻路系统大多分两个方案:短距离寻路,泛指当距离不超过一个计算机屏幕的寻路,使用改良的A*寻路;长距离寻路,比如大于一个到两个计算机屏幕的寻路,使用相应配套的数据解析寻路,比如在虚拟世界内设置几个导航的灯塔,或者在制作地图的时候添加固定的寻路点。这样做法的劣势在于多维护了一部分远距离寻路的数据,多维护了一套不通用的远距离寻路算法。由于不同公司的特定数据不一致,那么远距离寻路算法同样不会一致。这大大增加的开发量,延长开发时间,增加维护成本,大大提高了项目风险。
发明内容
本申请提供了一种虚拟现实场景中寻路的方法,对于远近距离可以采用统一的方法,并且占用资源较少。
本申请实施例提供的一种虚拟现实场景中寻路的方法,包括:
A、记录当前点作为起始点坐标,记录终点坐标,以从起始点指向终点的方向作为寻路方向;
B、判断当前寻路方向上的下一个网格类型属于类型2还是类型3,若属于类型2,执行步骤C;若属于类型3,则执行步骤D;类型2表示周围无阻挡的搜索节点;类型3表示周围有阻挡的搜索节点;
C、沿着当前寻路方向移动一个网格,然后返回步骤B;
D、分出两个寻路分支,分别沿着顺时针风向以及逆时针方向试图绕过阻挡点,这时建立两个线程,分别维护寻路偏转角度和旋转系数;
E、判断是否有一个寻路分支绕过阻挡点,若是,执行步骤207;否则,若两个分支均已停止,则结束本流程,若还至少存在一个进行中的寻路分支,执行步骤F;
F、对于任一个寻路分支,按照当前方向朝着可移动的网格移动,并计算当前的寻路偏转角度和旋转系数;如果寻路偏转角度越来越大,则试图向着减小寻路偏转角度的方向偏转,如果不能,表示终点不可达,停止该寻路分支;检查旋转系数的值,若超出阈值则停止该寻路分支;然后返回步骤E;
G、终止另一个寻路分支;
H、判断是否到达终点,若是,结束本流程,否则返回步骤A。
较佳地,步骤E所述判断依据是下一个寻路节点坐标比阻挡点离终点近,或者偏转角度变小,表明已经绕过该阻挡点。
从以上技术方案可以看出,通过人们现实找位置的方法得到灵感,在系统内部维护了一个寻路偏转角度和旋转系数,不断地前进和矫正玩家的方向,直到到达目标点或者目标点不可达为止。本申请方案提高了远距离寻路的效率,并且对于短距离寻路和长距离寻路通用,从而简化了开发和维护成本。并且提高了玩家体验。
附图说明
图1为现有技术中的A*寻路算法的检索过程示意图;
图2为本申请实施例提供的寻路的方法流程示意图;
图3为依据本申请实施例方案进行寻路过程中遇到阻挡的示意图。
具体实施方式
人们在现实世界中寻路时,会利用已知的经验来更快速地找出到达目的地的路径,利用参照物来确定是否走对了方向。本申请提供的寻路方法模仿现实寻路的上述特点,其原理为:当寻路发起后,寻路系统就计算玩家当前移动方向和目标的角度,内部记录一个旋转系数;寻路系统开始沿着玩家行走的方向,向着目的地寻路,途中发现可以移动的格子,立刻加入的移动路径中,不再记录周围可能的格子,然后动态地计算和目标的偏转角度和旋转系数,最终到达目标点。所述偏转角度就是玩家移动方向和当前点到目标点之间的角度;旋转系数是寻路物体自转的角度,相当于拧发条转的圈数,是用来在复杂地形寻路里优化路径用的参数。
寻路的地图数据一般是网格状的或者是树状的叶子节点,总体归类为带有阻挡的网格状形式,每个网格成为一个节点。
这些节点根据是否可以行走分为阻挡点和非阻挡点,寻路过程就是绕过阻挡点达到目的地的过程。
在寻路过程中,把非阻挡点分为3类:
类型1:初始搜索节点;即寻路开始的节点;
类型2:周围无阻挡的搜索节点;即是周围8个格子中没有阻挡部分;
类型3:周围有阻挡的搜索节点;周围8个格子中至少存在一个阻挡点。
本申请提供的寻路方法只需要知道玩家寻路的方向和开始的地点即可,连终点都可以不知道(被认为是一种特殊情况,终点在无限远处)。无论是2d寻路还是3d寻路,都是通用的。本申请方案只需要维护两个变量:
寻路偏转角度:
初始的值是寻路点到终点的方向和当前移动方向的夹角,范围在0到180度,超过180度的换算成0到180度,当是同一方向的时候,是0度,反方向的时候是180度。当前移动方向即为当在所在网格的中心到移动的下一个网格中心连线的方向。在寻路过程中,寻路偏转角度可能变大或者变小,总体趋势是向变小的方向偏转。
旋转系数:
初始值和偏转角度值以及寻路的具体情况有关,范围是0到无穷大,向变小的方向偏转。旋转系数主要用在当寻路不可达到时,比如起点在一个封闭的圆内,而终点在圆外,这个时候寻路会沿着圆不停绕圈,每次检查旋转系数,如果过大就停下来,或者向相反的方向试探。最坏的结果是传统的A*算法。
本申请实施例提供的寻路的方法流程如图2所示,包括如下步骤:
步骤201:记录当前点作为起始点坐标,记录终点坐标,以从起始点指向终点的方向作为寻路方向,开始本次寻路。
步骤202:判断当前寻路方向上的下一个网格类型属于类型2还是类型3,若属于类型2,执行步骤203;若属于类型3,则执行步骤204;
步骤203:沿着寻路方向移动一个网格,然后返回步骤202。
步骤204:分出两个寻路分支,分别沿着顺时针风向以及逆时针方向试图绕过阻挡点,同时建立两个线程,分别维护寻路偏转角度和旋转系数。
步骤205:判断是否有一个寻路分支绕过阻挡点,若是,执行步骤207;否则,若两个分支均已停止,则结束本流程,若还至少存在一个进行中的寻路分支,执行步骤206。所述判断依据是下一个寻路节点坐标比阻挡点离终点近,或者偏转角度变小(因为当遇到阻挡点的时候绕着走,一定会发生偏转角度的变化,其中使用偏转角度变小更节省时间),表明已经绕过该阻挡点。
步骤206:对于任一个寻路分支,按照当前方向(顺时针或逆时针)朝着可移动的网格移动,并计算当前的寻路偏转角度和旋转系数;如果寻路偏转角度越来越大,则每次寻路会试图向着终点偏转,如果不能,表示终点不可达,结束该分支;检查旋转系数的值,若超出阈值则停止该寻路分支。然后返回步骤205。
步骤207:终止另一个寻路分支,将剩下的寻路分支作为当前寻路方向。
步骤208:判断是否到达终点,若是,结束本流程,否则返回步骤201。
从以上流程可以看出,每次绕过阻挡点后,以当前点为起点,重新确定寻路方向,开始新一次寻路,因此实际从起点到终点是由多次寻路过程组成的。以如图3所示路径为例,假设从起点走到终点,一开始如果方向就是向着终点的,那么按照本申请的寻路方法就会向着终点走,直到遇到墙壁,这时产生两种可能,向A还是向B,这种情况下如果向A走,还是会碰到墙壁,然后又会产生两个选择,这时依然会撞到墙壁,然后又产生两个选择,这样有可能陷入死循环中,旋转系数就是当产生这种循环的时候递增,系统发现旋转系数递增,就是选择不同的路径,这样虽然会有多走的问题,但是比A*寻路好很多。最终会达到终点。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请的保护范围,凡在本申请技术方案的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (2)
1.一种虚拟现实场景中寻路的方法,其特征在于,包括:
A、记录当前点作为起始点坐标,记录终点坐标,以从起始点指向终点的方向作为寻路方向;
B、判断当前寻路方向上的下一个网格类型属于类型2还是类型3,若属于类型2,执行步骤C;若属于类型3,则执行步骤D;类型2表示周围无阻挡的搜索节点;类型3表示周围有阻挡的搜索节点;
C、沿着当前寻路方向移动一个网格,然后返回步骤B;
D、分出两个寻路分支,分别沿着顺时针风向以及逆时针方向试图绕过阻挡点,这时建立两个线程,分别维护寻路偏转角度和旋转系数,所述偏转角度是当前寻路点到终点的方向和当前移动方向的夹角,旋转系数是寻路物体自转的角度;
E、判断是否有一个寻路分支绕过阻挡点,若是,执行步骤G;否则,若两个分支均已停止,则结束本流程,若还至少存在一个进行中的寻路分支,执行步骤F;
F、对于任一个寻路分支,按照当前方向朝着可移动的网格移动,并计算当前的寻路偏转角度和旋转系数;如果寻路偏转角度越来越大,则试图向着减小寻路偏转角度的方向偏转,如果不能,表示终点不可达,停止该寻路分支;检查旋转系数的值,若超出阈值则停止该寻路分支;然后返回步骤E;
G、终止另一个寻路分支;
H、判断是否到达终点,若是,结束本流程,否则返回步骤A。
2.根据权利要求1所述的方法,其特征在于,步骤E所述判断依据是下一个寻路节点坐标比阻挡点离终点近,或者偏转角度变小,表明已经绕过该阻挡点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410852326.7A CN104548598B (zh) | 2014-12-31 | 2014-12-31 | 一种虚拟现实场景中寻路的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410852326.7A CN104548598B (zh) | 2014-12-31 | 2014-12-31 | 一种虚拟现实场景中寻路的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104548598A CN104548598A (zh) | 2015-04-29 |
CN104548598B true CN104548598B (zh) | 2017-08-08 |
Family
ID=53066327
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410852326.7A Active CN104548598B (zh) | 2014-12-31 | 2014-12-31 | 一种虚拟现实场景中寻路的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104548598B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106933223B (zh) * | 2015-12-30 | 2020-06-26 | 深圳市朗驰欣创科技股份有限公司 | 一种机器人自主导航方法及系统 |
CN107433039A (zh) * | 2016-05-26 | 2017-12-05 | 齐游网络科技(上海)有限公司 | Ai动态自动寻路方法 |
CN108211360B (zh) * | 2016-12-14 | 2021-08-10 | 盛趣信息技术(上海)有限公司 | 多人在线网络游戏的跨地图寻路方法 |
WO2018130135A1 (zh) * | 2017-01-13 | 2018-07-19 | 腾讯科技(深圳)有限公司 | 一种控制模拟对象寻路的方法、装置及服务器 |
WO2018223343A1 (zh) * | 2017-06-08 | 2018-12-13 | 深圳市乃斯网络科技有限公司 | 游戏中定位路径规划方法及系统 |
CN107463264B (zh) * | 2017-08-16 | 2020-07-14 | 福建天晴在线互动科技有限公司 | 一种vr场景复位的方法和终端 |
CN107727098A (zh) * | 2017-09-26 | 2018-02-23 | 上海大学 | 一种依次巡查多个目标位置的无人水面艇路径规划方法 |
CN107744663B (zh) * | 2017-10-19 | 2020-10-13 | 阿里巴巴(中国)有限公司 | 人工智能ai单位的寻路方法及装置 |
CN107982917B (zh) * | 2017-11-21 | 2020-10-16 | 北京广同川临场互动科技有限公司 | 一种3d游戏的人物路径搜索方法 |
CN108089707A (zh) * | 2017-12-21 | 2018-05-29 | 清华大学 | 基于虚拟现实的室内疏散环境中npc系统的同步方法和装置 |
CN108229734A (zh) * | 2017-12-26 | 2018-06-29 | 北京像素软件科技股份有限公司 | 路径规划方法及装置 |
CN108245888A (zh) | 2018-02-09 | 2018-07-06 | 腾讯科技(深圳)有限公司 | 虚拟对象控制方法、装置及计算机设备 |
CN108434741A (zh) * | 2018-03-15 | 2018-08-24 | 网易(杭州)网络有限公司 | 虚拟现实中的移动控制方法及装置 |
CN109432777B (zh) * | 2018-10-26 | 2021-11-12 | 网易(杭州)网络有限公司 | 路径生成方法及装置、电子设备、存储介质 |
CN110812844B (zh) * | 2019-11-06 | 2023-04-07 | 网易(杭州)网络有限公司 | 一种游戏中的寻路方法、终端及可读存储介质 |
CN113457153A (zh) * | 2021-06-24 | 2021-10-01 | 深圳市瑞立视多媒体科技有限公司 | 一种基于虚拟引擎的载具平面移动控制方法和装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1037188A2 (en) * | 1999-03-16 | 2000-09-20 | Hitachi, Ltd. | Three-dimensional map drawing method and navigation apparatus |
CN1938562A (zh) * | 2004-03-31 | 2007-03-28 | 英国电讯有限公司 | 寻路系统 |
CN101241507A (zh) * | 2008-01-17 | 2008-08-13 | 腾讯科技(深圳)有限公司 | 一种地图寻路方法及系统 |
CN102589558A (zh) * | 2011-01-07 | 2012-07-18 | 北京高德泰信科技有限公司 | 导航方法、导航终端和导航系统 |
CN104156459A (zh) * | 2014-08-20 | 2014-11-19 | 焦点科技股份有限公司 | 一种基于相同开销网格的高效寻路的方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4909991B2 (ja) * | 2005-09-12 | 2012-04-04 | タパング,カルロス | フレーム毎かつピクセル毎コンピュータ映像用カメラフレーム合致モデル生成グラフィックス画像 |
-
2014
- 2014-12-31 CN CN201410852326.7A patent/CN104548598B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1037188A2 (en) * | 1999-03-16 | 2000-09-20 | Hitachi, Ltd. | Three-dimensional map drawing method and navigation apparatus |
CN1938562A (zh) * | 2004-03-31 | 2007-03-28 | 英国电讯有限公司 | 寻路系统 |
CN101241507A (zh) * | 2008-01-17 | 2008-08-13 | 腾讯科技(深圳)有限公司 | 一种地图寻路方法及系统 |
CN102589558A (zh) * | 2011-01-07 | 2012-07-18 | 北京高德泰信科技有限公司 | 导航方法、导航终端和导航系统 |
CN104156459A (zh) * | 2014-08-20 | 2014-11-19 | 焦点科技股份有限公司 | 一种基于相同开销网格的高效寻路的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104548598A (zh) | 2015-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104548598B (zh) | 一种虚拟现实场景中寻路的方法 | |
CN106371445B (zh) | 一种基于拓扑地图的无人车规划控制方法 | |
CN109974725B (zh) | 一种路网拓扑构建方法、导航路径计算方法及装置 | |
CN108827278B (zh) | 导航方法及设备 | |
CN109478062A (zh) | 用于无人机的wwan无线电链路质量导航 | |
CN109163722B (zh) | 一种仿人机器人路径规划方法及装置 | |
CN108775902A (zh) | 基于障碍物虚拟膨胀的伴随机器人路径规划方法及系统 | |
CN107564012A (zh) | 面向未知环境的增强现实方法及装置 | |
CN102901500A (zh) | 基于概率a星与智能体混合的飞行器最优路径确定方法 | |
CN103439972A (zh) | 一种动态复杂环境下的移动机器人路径规划方法 | |
CN103186710B (zh) | 最优路径搜索方法及系统 | |
CN106843230A (zh) | 应用于移动设备的虚拟墙系统及其实现方法 | |
CN108444490B (zh) | 基于可视图和a*算法深度融合的机器人路径规划方法 | |
CN108268971B (zh) | 路径的搜索方法、装置、处理器和电子装置 | |
CN110006429A (zh) | 一种基于深度优化的无人船航迹规划方法 | |
CN105844364A (zh) | 基于启发函数的服务机器人最优路径规划方法 | |
CN109582032B (zh) | 多旋翼无人机在复杂环境下的快速实时避障路径选择方法 | |
CN106774425A (zh) | 一种无人机飞行导航的方法及系统 | |
CN109432776A (zh) | 一种空间自由寻路方法 | |
Anbuselvi et al. | Path finding solutions for grid based graph | |
CN116764225B (zh) | 一种高效寻路的处理方法、装置、设备及介质 | |
CN108079580A (zh) | 一种寻路方法及终端 | |
CN115862416B (zh) | 一种路径规划方法、装置、电子设备及存储介质 | |
CN112231428A (zh) | 一种融合战场态势信息的车辆路径规划方法 | |
Simard et al. | Bounding an optimal search path with a game of cop and robber on graphs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |