一种虚拟现实场景中寻路的方法

文档序号:8234940阅读:423来源:国知局
一种虚拟现实场景中寻路的方法
【技术领域】
[0001]本申请涉及计算机三维虚拟场景模拟技术领域,尤其涉及一种虚拟现实场景中寻路的方法。
【背景技术】
[0002]寻路问题是各类游戏中角色寻路、三维虚拟场景中运动目标的路径规划、机器人寻路、车载导航系统、车辆路径问题(VRP,vehicle routing problem)等多领域中的关键技术之一,相关的寻路算法的研宄与应用也是长期的研宄热点。
[0003]现有技术中常见的寻路算法包括广度优先搜索(BFS,Breadth First Search),深度优先搜索(DFS,Depth First Search),启发式搜索算法等等。深度优先是按照一定的顺序前查找完一个分支,再查找另一个分支,直到找到目标或到达步数为止;广度优先一般是找周围所有点记录下来,然后在对每个点找它们周围所有未找过的点,然后再如此循环下去直到找到目标为止。启发式搜索一般是对每个搜索位置进行评估,找到最好的位置,再从这个位置如此循环进行搜索直到目标。
[0004]现有技术中常用的A* (A-Star)寻路算法属于启发式搜索方法,公式表示为:f (η)=g (n) +h (η)。
[0005]其中,f (η)是从初始点经由节点η到目标点的估价函数;
[0006]g(n)是在状态空间中从初始节点到η节点的实际代价;
[0007]h(n)是从η到目标节点最佳路径的估计代价。
[0008]保证找到最短路径(最优解的)条件,关键在于估价函数h(n)的选取:估价值h(n)〈 = η到目标节点的距离实际值,这种情况下,搜索的点数多,搜索范围大,效率低。但能得到最优解。并且如果h(n) [(!(!!沁即距离估计!^!!)等于最短距离,那么搜索将严格沿着最短路径进行,此时的搜索效率是最高的。
[0009]A*寻路算法的检索过程如图1所示,首先将场景划分为一定大小的栅格方块,方块中的数字相当于坐标。假设物体要从方块A运动到方块B,深灰色方块表示寻路过程中搜索到的方块,浅灰色方块表示实际经过的方块,灰色实线表示A*寻到的最优解。传统的A*寻路是一种“面”的寻路方式,这样多次的重复计算,会在短时间内占用非常多的系统资源,而且随着寻路越长,这种消耗是平方数上升的。其他的寻路算法虽然对传统的A*有优化,但是都是这种基于“面”的算法,寻路过程中对计算机资源占用较高。
[0010]目前,在游戏中使用的寻路系统大多分两个方案:短距离寻路,泛指当距离不超过一个计算机屏幕的寻路,使用改良的A*寻路;长距离寻路,比如大于一个到两个计算机屏幕的寻路,使用相应配套的数据解析寻路,比如在虚拟世界内设置几个导航的灯塔,或者在制作地图的时候添加固定的寻路点。这样做法的劣势在于多维护了一部分远距离寻路的数据,多维护了一套不通用的远距离寻路算法。由于不同公司的特定数据不一致,那么远距离寻路算法同样不会一致。这大大增加的开发量,延长开发时间,增加维护成本,大大提高了项目风险。

【发明内容】

[0011]本申请提供了一种虚拟现实场景中寻路的方法,对于远近距离可以采用统一的方法,并且占用资源较少。
[0012]本申请实施例提供的一种虚拟现实场景中寻路的方法,包括:
[0013]A、记录当前点作为起始点坐标,记录终点坐标,以从起始点指向终点的方向作为寻路方向;
[0014]B、判断当前寻路方向上的下一个网格类型属于类型2还是类型3,若属于类型2,执行步骤C ;若属于类型3,则执行步骤D ;类型2表示周围无阻挡的搜索节点;类型3表示周围有阻挡的搜索节点;
[0015]C、沿着当前寻路方向移动一个网格,然后返回步骤B ;
[0016]D、分出两个寻路分支,分别沿着顺时针风向以及逆时针方向试图绕过阻挡点,这时建立两个线程,分别维护寻路偏转角度和旋转系数;
[0017]E、判断是否有一个寻路分支绕过阻挡点,若是,执行步骤207;否则,若两个分支均已停止,则结束本流程,若还至少存在一个进行中的寻路分支,执行步骤F ;
[0018]F、对于任一个寻路分支,按照当前方向朝着可移动的网格移动,并计算当前的寻路偏转角度和旋转系数;如果寻路偏转角度越来越大,则试图向着减小寻路偏转角度的方向偏转,如果不能,表示终点不可达,停止该寻路分支;检查旋转系数的值,若超出阈值则停止该寻路分支;然后返回步骤E ;
[0019]G、终止另一个寻路分支;
[0020]H、判断是否到达终点,若是,结束本流程,否则返回步骤A。
[0021]较佳地,步骤E所述判断依据是下一个寻路节点坐标比阻挡点离终点近,或者偏转角度变小,表明已经绕过该阻挡点。
[0022]从以上技术方案可以看出,通过人们现实找位置的方法得到灵感,在系统内部维护了一个寻路偏转角度和旋转系数,不断地前进和矫正玩家的方向,直到到达目标点或者目标点不可达为止。本申请方案提高了远距离寻路的效率,并且对于短距离寻路和长距离寻路通用,从而简化了开发和维护成本。并且提高了玩家体验。
【附图说明】
[0023]图1为现有技术中的A*寻路算法的检索过程示意图;
[0024]图2为本申请实施例提供的寻路的方法流程示意图;
[0025]图3为依据本申请实施例方案进行寻路过程中遇到阻挡的示意图。
【具体实施方式】
[0026]人们在现实世界中寻路时,会利用已知的经验来更快速地找出到达目的地的路径,利用参照物来确定是否走对了方向。本申请提供的寻路方法模仿现实寻路的上述特点,其原理为:当寻路发起后,寻路系统就计算玩家当前移动方向和目标的角度,内部记录一个旋转系数;寻路系统开始沿着玩家行走的方向,向着目的地寻路,途中发现可以移动的格子,立刻加入的移动路径中,不再记录周围可能的格子,然后动态地计算和目标的偏转角度和旋转系数,最终到达目标点。所述偏转角度就是玩家移动方向和当前点到目标点之间的角度;旋转系数是寻路物体自转的角度,相当于拧发条转的圈数,是用来在复杂地形寻路里优化路径用的参数。
[0027]寻路的地图数据一般是网格状的或者是树状的叶子节点,总体归类为带有阻挡的网格状形式,每个网格成为一个节点。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1