确定路径的方法及装置的制造方法_2

文档序号:8285938阅读:来源:国知局
083]以起点为圆心、以起点到动态阻隔物之间的距离为半径作圆;
[0084]判断优化后的路径与圆是否有交点;
[0085]若优化后的路径与圆有交点,则采用栅格确定方式在起点及交点之间确定路径,并根据确定结果判断本次确定的路径是否为正确的路径。
[0086]作为一种可选的实施例,根据确定结果判断本次确定的路径是否为正确的路径,包括:
[0087]若采用栅格确定方式在起点及交点之间不能确定一条路径,则判断本次确定的路径为不正确的路径;
[0088]若采用栅格确定方式在起点及交点之间能够确定一条路径,则判断本次确定的路径为正确的路径。
[0089]作为一种可选的实施例,判断确定的路径为正确的路径之后,还包括:
[0090]获取采用栅格确定方式在起点到交点之间确定的路径,将采用栅格确定方式在起点到交点之间确定的路径与优化得到的路径中交点到终点之间的路径进行拼接,得到一条支持动态阻挡的路径。
[0091]本发明实施例提供的方法,通过获取预先生成的矩形网络,并确定本次待确定路径的起点及终点所属的栅格之后,根据起点及终点所属的栅格中存储的矩形网格的邻接信息确定起点在矩形网络中对应的矩形网格及终点在矩形网络中对应的矩形网格,进而根据起点对应的矩形网格及终点对应的矩形网格确定初始路径。由于矩形网格的邻接边较多且矩形网格与栅格兼容,因而提高了确定路径的速度及精度。
[0092]结合上述实施例,本发明实施例提供了一种确定路径的方法,参见图2,本发明实施例提供的方法流程包括:
[0093]201:获取预先生成的矩形网络。
[0094]目前开发的游戏类应用大多为场景游戏类应用,每个场景游戏类应用均对应一个实施环境,当用户使用场景游戏类应用时,需要在该场景游戏类应用的实施环境中完成相应的任务。然而场景类游戏类应用的实施环境较为抽象,用户在根据抽象的实施环境去完成具体任务的难度较大,用户体验效果不佳,因此,为了直观地展现每个场景游戏类应用的实施环境,以提升用户的体验效果,可用场景地图来描述场景游戏类应用的实施环境。其中,场景地图为表征游戏类应用实施环境的数据结构。场景地图由正方形的栅格组成,不同的正方形的栅格具有不同的属性信息,通过每个正方形的栅格的属性信息可以确定该栅格对应的实施环境的不同地貌。其中,属性信息包括但不限于栅格所表征的游戏类应用对应的地形描述数据等,本实施例不对属性信息作具体的限定。例如,若正方形的栅格的属性信息为河流的地形描述数据,则可确定该栅格对应的实施环境为河流;若正方形的栅格的属性信息为草地的地形描述数据,则可确定该栅格对应的实施环境为草地。
[0095]另外,由于游戏类应用的实施场景中包含的地形区域较为丰富,有用于表征实施环境为高山的地形区域,有用于表征实施环境为海洋的地形区域,也有用于表征实施环境为草地的地形区域等,而本实施例提供的方法所确定的路径主要是为游戏类应用中的执行主体确定的,且游戏类应用的执行主体在游戏类应用的实施环境中并不是所有的区域均可穿越,因此,为了便于后续确定路径,在本实施例中将游戏类应用的执行主体能够穿越的区域成为可行走区域,将游戏类应用的执行主体不能穿越的区域成为不可行走区域。
[0096]进一步地,由于速度是衡量游戏类应用带给用户体验效果的重要指标,而传统的基于场景地图中的栅格确定路径的方法在确定路径时,需要逐个栅格进行确定,当场景地图中的栅格数量较大时,采用传统的路径确定方法确定路径时速度较慢,用户体验效果不佳,因此,为了提升用户的体验效果,本实施例提供的方法在确定路径时基于预先生成的矩形网络进行确定。由于矩形网络由第一预设数量个矩形网格邻接构成,且每个矩形网格又由多个正方形的栅格组成,因此,较单一根据正方形的栅格确定路径的速度要快。其中,第一预设数量可以为10个、20个、60个等,本实施例不对矩形网络中包括的矩形网格的数量作具体的限定。
[0097]进一步地,由于本实施例提供的方法在确定路径时主要是基于预先生成的矩形网络,因此,在确定路径之前,需要先获取预先生成的矩形网络。具体地,关于获取预先生成的矩形网络的方式,包括但不限于如下步骤:
[0098]第一步,获取场景地图,场景地图由第二预设数量个正方形的栅格组成;
[0099]其中,第二预设数量可以为100个、200个、500个等,本实施例不对第二预设数量作具体的限定。
[0100]第二步,在场景地图的所有栅格中随机选取一个栅格,采用递归方式以选取的栅格为起点在场景地图上进行扩张,得到一个以选取的栅格为起点且面积最大的矩形网格,将面积最大的矩形网格中包含的栅格作为处理过的栅格。
[0101]为了将场景地图中的可行走区域最大化的呈现出来,本实施例提供的方法以上述第一步获取到的场景地图为基础,将在获取到的场景地图的所有栅格中随机选取一个栅格,并采用递归方式以选取的栅格为起点在场景地图上不断进行扩张,直至得到一个以选取的栅格为起点且面积最大的矩形网格。其中,递归方式为将需要解决的问题转化为规模缩小了的同类问题的子问题,然后递归调用函数(或过程)来表示问题的解的一种方式。
[0102]需要说明的是,由于场景地图由第二预设数量个正方形的栅格组成,且每个正方形的栅格具有不同的属性信息以表示覆盖的区域是否为可行走区域,而场景游戏类应用需要用户确定的路径为跨越可行走区域的路径,因此,在采用递归方式以选取的栅格为起点在场景地图上进行扩张时,应保证扩张到的区域为场景地图中的可行走区域。当以选取的栅格为起点在场景地图上进行扩张时,若待扩张的区域为可行走区域,则可以选取的栅格为起点在场景地图上向该待扩张区域进行扩张;若待扩张的区域为不可行走区域,则本次扩张停止。
[0103]具体地,采用递归方式以选取的栅格为起点在场景地图上进行扩张,得到一个以选取的栅格为起点且面积最大的矩形网格,包括但不限于如下方式:
[0104]I)、以选取的栅格为起点在场景地图上进行扩张,得到满足第一预设条件的第一矩形;
[0105]由于场景地图中并不是所有的区域都是可行走区域,如场景地区中表征实施环境为湖泊的区域为不可行走区域,场景地图中实施环境为草地的区域为可行走区域,而游戏类应用为用户设定的路径寻找任务希望用户寻找到的路径穿越的区域为可行走区域,且本实施例中的矩形网格及由矩形网格组成的矩形网络中所包含的区域应为可行走区域,因此,在以选取的栅格为起点在场景地图上进行扩张时,需要保证扩张得到的第一矩形满足第一预设条件。其中,第一预设条件包括但不限于矩形的最大长宽比、扩张到的区域是否为可行走区域等,本实施例不对第一预设条件作具体的限定。关于以选取的栅格为起点在场景地图上扩张的方式,包括但不限于如下方式:
[0106]首先,以选取的场景地图为基础建立直角坐标系;
[0107]其次,以选取的栅格为起点在场景地图中向X轴、Y轴正方向进行整体扩张。
[0108]需要说明的是,为了便于后续步骤中根据本步骤中生成的矩形网络确定路径,本发明实施例中设定每个正方形的栅格的边长为I个单位,且以栅格或得到的矩形网格为基础进行扩张时,每次扩张均以栅格为单位进行扩张。
[0109]对于上述过程,为了便于理解,下面将以一个具体的例子进行详细地解释说明。
[0110]图3为场景地图,I为在场景地图中随机选的一个栅格,设定矩形的最大长宽比为2:1。在以选取的栅格为起点进行扩张时,以将栅格I先向X轴正方向扩张、后向Y轴正方向扩张为例,当将栅格I为起点向X轴正方向扩张一个单位时,可得到一个长为2个单位、宽为I个单位的矩形。由于该矩形的长宽比为2:1,恰为矩形的最大长宽比,因此,此时无法将得到的矩形以栅格I为起点向X轴正方向扩张,但可将得到的矩形以栅格I为起点向Y轴正方向扩张。当将得到的矩形向Y轴正方向扩张4个单位时,可得到一个长为4个单位、宽为2个单位的新矩形。由于该新矩形的长宽比为2:1,恰为矩形的最大长宽比,因此,此时无法将新矩形以栅格I为起点向Y轴正方向扩张,但可将新矩形以栅格I为起点向X轴正方向进行扩张。重复执行上述扩张过程,直至以栅格I为起点向X轴正方向及Y轴正方向扩张的过程中遇到不可行走区域。获取以栅格I为起点扩张得到的最后的矩形,并将该矩形作为第一矩形。
[0111]2)、以第一矩形中除起点所在栅格之外的每个栅格为起点分别进行扩张,并将扩张得到的各个矩形与第一矩形进行合并,得到满足第一预设条件的第二矩形;
[0112]为了得到满足第一预设条件且面积最大的矩形,在得到第一矩形之后,本实施例提供的方法还将以第一矩形中除起点所在栅格之外的每个栅格为起点进行扩张。由于第一矩形中包含着除起点以外的多个栅格,因此,通过以第一矩形中除起点所在栅格之外的每个栅格为起点进行扩张可得到多个满足第一预设条件的矩形。由于得到的多个满足第一预设条件的矩形与第一矩形邻接,因此,可将得到的多个满足第一预设条件的矩形与第一矩形进行合并,从而得到满足第一预设条件的第二矩形。例如,以上述图3中得到的第一矩形为基础,在以第一矩形中除起点之外的每个栅格为起点进行扩张,可得到多个以第一矩形中除起点之外的每个栅格为起点的矩形。由于这些矩形是以图3中的第一矩形中除起点之外的栅格为起点进行扩张得到的,因此,得到的多个满足第一预设条件的栅格为第一矩形的邻接矩形,此时可将得到的多个满足第一预设条件的矩形与第一矩形进行合并,合并后得到的矩形可参见图4,该矩形即为满足第一预设条件的第二矩形。
[0113]3)、获取第一矩形的面积及第二矩形的面积,并将第二矩形的面积与第一矩形的面积进行比较,若第二矩形的面积大于第一矩形的面积,则判断第二矩形是否满足第二预设条件,如果第二矩形不满足第二预设条件,则按照对第一矩形的处理方式处理第二矩形,依次循环,直至获取到满足第二预设条件的矩形,并将满足第二预设条件的矩形作为以选取的栅格为起点且面积最大的矩形网格。
[0114]由于第二矩形是以第一矩形中除起点之外的栅格为基础进行扩张得到的,在以第一矩形中除起点之外的栅格为基础进行扩张时,可能存在以下两种情况:以第一矩形中除起点之前的栅格为基础进行扩张得到的第二矩形面积比第一矩形面积大,以第一矩形中除起点之前的栅格为基础进行扩张得到的第二矩形面积与第一矩形面积相等,而本实施例中以第一矩形中除起点之外的栅格为基础进行扩张的目的是为了得到比第一矩形面积更大的矩形,因此,在以第一矩形中除起点之外的栅格为基础进行扩张得到第二矩形之后,还需要获取第一矩形的面积及第二矩形的面积,并将第二矩形的面积与第一矩形的面积进行比较,当第二矩形的面积大于第一矩形的面积,说明第二矩形中包含的可行走区域要比第一矩形中包含的可行走区域要大,此时若第二矩形不满足第二预设条件,则将按照对第一矩形的处理方式处理第二矩形。具体地,可以第二矩形中除起点所在栅格之外的每个栅格为起点分别进行扩张,并将扩张得到的各个矩形与第二矩形进行合并,得到满足第一预设条件的第三矩形,判断得到的第三矩形的面积是否大于第二矩形的面积,当第三矩形的面积大于第二矩形的面积且第三矩形不满足第二预设条件,则以第三矩形中除起点所在栅格之外的每个栅格为起点分别进行扩张,并将扩张得到的各个矩形与第三矩形进行合并,得到满足第一预设条件的第四矩形,依次循环,直至获取到满足第二预设条件的矩形,并将满足第二预设条件的矩形作为以选取的栅格为起点且面积最大的矩形网格。其中,第二预设条件包括但不限于扩张次数达到预设次数、扩张后的矩形面积与扩张前的矩形面积差小于预设阈值,本实施例不对第二预设条件作具体的限定。具体地,预设次数可以为3次、5次、6次等,本实施例不对预设次数作具体的限定。预设阈值可以为I个栅格的面积、2个栅格的面积、3个栅格的面积等,本实施例不对预设阈值作具体的限定。
[0115]另外,为了便于区分矩形网格内与矩形网格外的栅格,在本实施例中将矩形网格内的栅格作为处理过的栅格,将矩形网格外的栅格作为未处理的栅格。
[0116]4)、依次在场景地图的所有未处理的栅格中随机选取一个未处理的栅格,采用递归方式以选取的栅格为起点在场景地图上向其他未处理的栅格所在的区域进行扩张,得到一个以选取的栅格为起点且面积最大的矩形网格,直至场景地图的所有栅格均被处理;
[0117]上述过程仅以对场景地图中的一个未处理的栅格进行扩张处理得到一个以选取的栅格为起点且面积最大的矩形网格为例进行说明的,对于场景地图中的其他未处理的栅格均可采用上述方法以选取的栅格为起点在场景地图上向其他未处理的栅格所在的区域进行扩张,直至场景地图中的所有表征可行走区域的栅格均被处理,从而得到多个以选取的栅格为起点且面积最大的矩形网格。
[0118]5)获取得到的所有矩形网格,并根据得到的所有矩形网格生成矩形网络。
[0119]虽然通过上述过程可得到多个矩形网格,但得到的各个矩形网格之间彼此是独立的,此时可通过获取各个矩形网格的邻接边信息,并将邻接边信息保存到邻接的矩形网格中,从而使得邻接的矩形网格之间彼此联通,最终得到一个矩形网络。其中,邻接边信息包括但不限于矩形网格的属性信息及矩形网格的每条边上邻接的其他矩形网格的属性信息等,本实施例不对邻接边信息作具体的限定。其中,属性信息包括但不限于矩形的ID、边长等信息。
[0120]进一步地,由于本实施例提供的方法所确定的路径为起点到终点之间的路
当前第2页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1