CN111714890A - 阻拦信息的生成方法和装置、存储介质、电子装置 - Google Patents
阻拦信息的生成方法和装置、存储介质、电子装置 Download PDFInfo
- Publication number
- CN111714890A CN111714890A CN202010334236.4A CN202010334236A CN111714890A CN 111714890 A CN111714890 A CN 111714890A CN 202010334236 A CN202010334236 A CN 202010334236A CN 111714890 A CN111714890 A CN 111714890A
- Authority
- CN
- China
- Prior art keywords
- scene
- collision
- collision detection
- path
- target
- 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.)
- Granted
Links
Images
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/80—Special adaptations for executing a specific game genre or game mode
- A63F13/822—Strategy games; Role-playing games
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/55—Controlling game characters or game objects based on the game progress
- A63F13/56—Computing the motion of game characters with respect to other game characters, game objects or elements of the game scene, e.g. for simulating the behaviour of a group of virtual soldiers or for path finding
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/60—Methods for processing data by generating or executing the game program
- A63F2300/64—Methods for processing data by generating or executing the game program for computing dynamical parameters of game objects, e.g. motion determination or computation of frictional forces for a virtual car
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/80—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game specially adapted for executing a specific type of game
- A63F2300/807—Role playing or strategy games
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Processing Or Creating Images (AREA)
Abstract
本申请公开了一种阻拦信息的生成方法和装置、存储介质、电子装置。其中,该方法包括:识别出虚拟场景中的第一场景对象,其中,第一场景对象为虚拟场景中待生成空间阻拦信息的对象;获取第一场景对象的碰撞检测结果,其中,碰撞检测结果是使用碰撞对象与第一场景对象的各个部分进行碰撞测试得到的;根据碰撞检测结果生成目标空间阻拦信息,其中,目标空间阻拦信息用于描述第一场景对象的各个部分的空间属性状态。本申请解决了相关技术中心使用导航网格的导航方式导致寻路自由度较低的技术问题。
Description
技术领域
本申请涉及游戏领域,具体而言,涉及一种阻拦信息的生成方法和装置、存储介质、电子装置。
背景技术
在三维游戏中,无论是玩家控制的虚拟角色还是系统控制的虚拟角色,从一个地点寻路到另一个地点是一项常见的行为,尤其是在完成各种任务,以及在需要与其他角色进行互动,例如攻击、防守和寻找遮蔽的时候,经常需要进行寻路,以去往目的地。为了便于游戏用户寻找游戏中的目标,自动寻路应运而生,自动寻路可以使游戏角色自动移动到游戏用户指定的目标位置。
三维游戏的世界空间有多种寻路实现方法,当前大部分是使用三角形面片模型的实现方法,其寻路系统多是基于三角形模型的表面寻路,通过生成导航网格进行的模型表面寻路。游戏用户选定目标点后,从起始点向目标点开始搜索最短可达路径。
在上述方案中,根据三维模型生成导航网格,然后在生成的导航网格上进行寻路移动,其主要表现是一般需要贴着导航网格移动,无法实现高度自由的寻路,无法实现上下高度的移动。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种阻拦信息的生成方法和装置、存储介质、电子装置,以至少解决相关技术中心使用导航网格的导航方式导致寻路自由度较低的技术问题。
根据本申请实施例的一个方面,提供了一种阻拦信息的生成方法,包括:识别出虚拟场景中的第一场景对象,其中,第一场景对象为虚拟场景中待生成空间阻拦信息的对象;获取第一场景对象的碰撞检测结果,其中,碰撞检测结果是使用碰撞对象与第一场景对象的各个部分进行碰撞测试得到的;根据碰撞检测结果生成目标空间阻拦信息,其中,目标空间阻拦信息用于描述第一场景对象的各个部分的空间属性状态。
根据本申请实施例的另一方面,还提供了一种阻拦信息的生成装置,包括:识别单元,用于识别出虚拟场景中的第一场景对象,其中,第一场景对象为虚拟场景中待生成空间阻拦信息的对象;获取单元,用于获取第一场景对象的碰撞检测结果,其中,碰撞检测结果是使用碰撞对象与第一场景对象的各个部分进行碰撞测试得到的;生成单元,用于根据碰撞检测结果生成目标空间阻拦信息,其中,目标空间阻拦信息用于描述第一场景对象的各个部分的空间属性状态。
根据本申请实施例的另一方面,还提供了一种存储介质,该存储介质包括存储的程序,程序运行时执行上述的方法。
根据本申请实施例的另一方面,还提供了一种电子装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器通过计算机程序执行上述的方法。
在本申请实施例中,在处理空旷的空间寻路时,并没有使用相关技术中导航网格的方式,通过对虚拟场景中的目标场景对象进行碰撞检测,生成空间阻拦信息(即场景空间描述数据),使用预先制作的场景空间描述数据,可以预先知道三维空间中每个小块区域的空间属性,然后使用寻路算法进行寻路,无需实时使用射线检测,从而提高空间(可以是陆地、水域、空中等)的寻路效率和寻路自由度和寻路自由度,可以解决相关技术中心使用导航网格的导航方式导致寻路自由度较低的技术问题,游戏场景中全方位寻路的技术效果。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的阻拦信息的生成方法的硬件环境的示意图;
图2是根据本申请实施例的一种可选的阻拦信息的生成方法的流程图;
图3是根据本申请实施例的一种可选的阻拦信息的生成方法的流程图;
图4是根据本申请实施例的一种可选的桥梁的示意图;
图5是根据本申请实施例的一种可选的水域的示意图;
图6是根据本申请实施例的一种可选的碰撞对象的示意图;
图7是根据本申请实施例的一种可选的阻拦信息的示意图;
图8是根据本申请实施例的一种可选的优化线路的示意图;
图9是根据本申请实施例的一种可选的场景对象的示意图;
图10是根据本申请实施例的一种可选的阻拦信息的生成装置的示意图;以及,
图11是根据本申请实施例的一种终端的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本申请实施例的一方面,提供了一种阻拦信息的生成方法的方法实施例。
可选地,在本实施例中,上述阻拦信息的生成方法可以应用于如图1所示的由终端101和服务器103所构成的硬件环境中。如图1所示,服务器103通过网络与终端101进行连接,可用于为终端或终端上安装的客户端提供服务(如游戏服务等),可在服务器上或独立于服务器设置数据库105,用于为服务器103提供数据存储服务,上述网络包括但不限于:广域网、城域网或局域网,终端101并不限定于PC、手机、平板电脑等。
本申请实施例的阻拦信息的生成方法可以由服务器103来执行,也可以由服务器103和终端101共同执行。图2是根据本申请实施例的一种可选的阻拦信息的生成方法的流程图,如图2所示,该方法可以包括以下步骤:
步骤S202,服务器识别出虚拟场景中的第一场景对象,第一场景对象为虚拟场景中待生成空间阻拦信息的对象。
在虚拟场景中,存在多种类型的场景对象,如自然场景对象(如地面、河流、山川、植物、没有填充物体的空间)、建筑场景对象(如住宅、体育场、商场)等。
步骤S204,服务器获取第一场景对象的碰撞检测结果,碰撞检测结果是使用碰撞对象与第一场景对象的各个部分进行碰撞测试得到的。
碰撞检测可以通过坐标来计算,如判断两个矩形是否发生碰撞,就是判断它们是否有重合部分,判断是否有重合部分时可以直接判断,也可以间接判断,即判断什么时候不重合,先理清楚不重合的情况,那么反过来就是重合的情况了,如上述矩形不重合的情况包括:移动矩形在静止矩形的上方、移动矩形在静止矩形的下方、移动矩形在静止矩形的左边、移动矩形在静止矩形的右边。其他形状或者三维形状的原理与此类似,不再赘述。
步骤S206,服务器根据碰撞检测结果生成目标空间阻拦信息,目标空间阻拦信息用于描述第一场景对象的各个部分的空间属性状态。
相关技术中多是先根据三维模型生成导航网格,然后在生成的导航网格上进行寻路移动的,其主要表现是一般需要贴着导航网格移动,无法实现高度自由的寻路,如果希望实现上下高度的移动,需要辅以三维射线检测作为辅助碰撞的手段,其计算效率较低。
同时,就算辅以三维射线作为辅助碰撞检测,基于导航网格的移动寻路也无法实现游戏世界中的水中移动浮沉等行为,因为美术在制作水域空间时,并不是将其作为一个模型来进行制作,美术只制作了水面表现,而水域内部是没有实体的空间或者悬浮阻挡等内容,从而不能形成导航网格,而导航网格的寻路只能依赖导航网格贴在网格表面进行寻路,即使辅之以射线检测,也只能检测空间属性是空旷还是碰撞,但是无法实现寻找的功能,无法进行未知空间路径的预先寻路。
在本申请的技术方案中,在处理空旷的空间寻路时,并没有使用相关技术中导航网格的方式,通过对虚拟场景中的目标场景对象进行碰撞检测,生成空间阻拦信息(即场景空间描述数据),使用预先制作的场景空间描述数据,可以预先知道三维空间中每个小块区域的空间属性,然后使用寻路算法进行寻路,无需实时使用射线检测,从而提高空间(可以是陆地、水域、空中等)的寻路效率和寻路自由度,可以解决相关技术中心使用导航网格的导航方式导致寻路自由度较低的技术问题,游戏场景中全方位寻路的技术效果。下面结合图2所示的步骤进一步详述本申请的技术方案:
在步骤S202提供的技术方案中,识别出虚拟场景中的第一场景对象,第一场景对象为虚拟场景中待生成空间阻拦信息的对象。
在上述实施例中,识别出虚拟场景中的第一场景对象可以采用如下步骤1-步骤3所示的方案来实现:
步骤1,对虚拟场景中的需要生成空间描述数据的目标场景对象进行标记。
例如,采用神经网络模型的方式来实现,对于需要识别的几类场景对象,获取正样本(预先标记出有这几类场景对象的图像)和负样本(标记有不属于这几类场景对象的图像),利用正样本和负样本对神经网络模型进行训练,进而利用训练得到的神经网络模型进行目标场景对象的识别,并标记出来。
若需要识别的目标场景对象的数量较少,也可以采用人工识别的方式直接标记出来。
步骤2,对于标记好的虚拟场景,可以在虚拟场景中查找标记信息。
步骤3,将虚拟场景中标记信息所标记的对象作为第一场景对象。
在步骤S204提供的技术方案中,获取第一场景对象的碰撞检测结果,碰撞检测结果是使用碰撞对象与第一场景对象的各个部分进行碰撞测试得到的。
在上述实施例中,获取第一场景对象的碰撞检测结果包括按照如下步骤1-步骤2进行多轮碰撞检测:
步骤1,确定本轮碰撞检测使用的第一碰撞对象,多轮碰撞检测中任意两轮使用的碰撞对象不同,此处的不同是指形状不同,如长宽高中的至少一个不同。
可选地,确定本轮碰撞检测使用的第一碰撞对象包括:在本轮碰撞检测为第一轮碰撞检测的情况下,获取预设的碰撞对象为本轮碰撞检测使用的第一碰撞对象,如获取初始状态(如大小为0.5*0.5*1000的Box)的碰撞对象;在本轮碰撞检测不是第一轮碰撞检测的情况下,对前一轮碰撞检测使用的第二碰撞对象进行预处理,得到本轮碰撞检测使用的第一碰撞对象,进行预处理得到的第一碰撞对象与第一场景对象的碰撞接触面小于第二碰撞对象与第一场景对象的碰撞接触面,如第二轮碰撞时对第一轮的碰撞对象Box(0.5*0.5*1000)高度递归折半为第二轮使用碰撞对象Box(0.5*0.5*500),以此类推。
步骤2,在本轮碰撞检测的过程中,使用同一个第一碰撞对象对第一场景对象的各个部分进行碰撞检测。
可选地,使用第一碰撞对象对第一场景对象的各个部分进行碰撞检测可包括如下步骤21-步骤22:
步骤21,在本次碰撞检测是本轮碰撞检测的第一次碰撞检测的情况下,按照预设方式确定第一场景对象中的第一部分,并使用第一碰撞对象对第一部分进行碰撞检测。此处的预设方式可以是在目标场景对象的表面随机选择一个,也可以是按照约定的顺序(如从左到右、从上到下的顺序)选择第一个。
步骤22,在本次碰撞检测不是本轮碰撞检测的第一次碰撞检测的情况下,根据第二部分确定第一场景对象中的第三部分,并使用第一碰撞对象对第三部分进行碰撞检测,其中,第二部分是前一次碰撞检测时所检测的部分,第三部分与第二部分不同。
对于每个目标对象而言,每一轮检测可覆盖整个对象的表面,如果有需要还可以检测其内部,如某个表面的部分表明可以穿过,则继续检测这个部分的纵深部分。可选地,根据第二部分确定第一场景对象中的第三部分包括如下两个可能性:
其一是,在对第二部分进行碰撞检测的结果表明第二部分未被第一碰撞对象穿过的情况下,确定与第二部分相邻且与第二部分位于相同的目标平面内的部分为第三部分,即如果目标场景对象的某个表面部分为不可通过,则继续检测相邻的其他表面的部分;
其二是,在对第二部分进行碰撞检测的结果表明第二部分被第一碰撞对象穿过的情况下,可以根据需要确定与第二部分相邻且与第二部分位于目标平面内的部分为第三部分,或确定与第二部分相邻且位于第二部分的预设方向上的部分为第三部分,其中,预设方向垂直于目标平面,换言之,如果目标场景对象的某个表面部分为可通过,则除了需要继续检测相邻的其他表面的部分外还需要检测该部分的纵深部分,如在X轴、Y轴以及Z轴组成的三维坐标系中,目标场景对象为立方体,当前检测的X轴、Y轴组成的平面内的部分时,若该平面内的部分可以穿过,则继续检测可穿过部分的纵深部分(这部分的X轴和Y轴坐标保持不变,Z轴坐标发生变化)。
若上述目标平面为X轴和Y轴所在的平面或者与该平面平行的平面时,预设方向就是Z轴所在的方向或者Z轴平行线的方向;上述目标平面为X轴和Z轴所在的平面或者与该平面平行的平面时,预设方向就是Y轴所在的方向或者Y轴平行线的方向;上述目标平面为Y轴和Z轴所在的平面或者与该平面平行的平面时,预设方向就是X轴所在的方向或者X轴平行线的方向。
在步骤S206提供的技术方案中,根据碰撞检测结果生成目标空间阻拦信息,目标空间阻拦信息用于描述第一场景对象的各个部分的空间属性状态,即相当于空间阻拦信息记载了空间块是否允许虚拟场景中的角色通过的空间属性信息。
可选地,在本申请的技术方案中还可以包括如下步骤S208-S210(未在图2中示出):
步骤S208,在根据碰撞检测结果生成目标空间阻拦信息之后,根据目标空间阻拦信息确定虚拟场景中的目标路径。
在上述实施例中,根据目标空间阻拦信息确定虚拟场景中的目标路径包括如下步骤1-步骤3:
步骤1,在虚拟场景的路径网络中选择以第一位置为起点并以第二位置为终点的路径为目标路径之前,按照如下方式创建虚拟场景的路径网络:定位出虚拟场景中的多个场景路点;建立多个场景路点中相邻的场景路点之间的连接路径,得到路径网络。
可选地,定位出虚拟场景中的多个场景路点包括以下至少之一:定位出虚拟场景中陆地上的场景路点;定位出虚拟场景中空域内的场景路点;定位出虚拟场景中水域内的场景路点,这些场景路点为游戏中玩家角色出现的高频路点,如桥头桥尾、路口、中转点、拐点等。
步骤2,获取第一位置和第二位置,第一位置为目标角色当前所在的位置,第二位置为目标角色的目标位置。
步骤3,在虚拟场景的路径网络中选择以第一位置为起点并以第二位置为终点的路径为目标路径,虚拟场景的路径网络是根据目标空间阻拦信息确定的。
可选地,在虚拟场景的路径网络中选择以第一位置为起点并以第二位置为终点的路径为目标路径可包括如下步骤31-步骤32:
步骤31,从虚拟场景的多个场景路点中查找距离第一位置最近的第一场景路点、距离第二位置最近的第二场景路点。
步骤32,确定第一段路径、第二段路径以及第三段路径,并将第一段路径、第二段路径以及第三段路径连接成的目标路径,其中,第一段路径为第一位置与第一场景路点之间的路径,第二段路径为第一场景路点与第二场景路点之间的路径,第三段路径为第二场景路点与第二位置之间的路径。
在上述实施例中,确定第二段路径包括:在虚拟场景的路径网络中搜寻以第一场景路点为起点并以第二场景路点为终点的候选路径;在候选路径为一条的情况下,将候选路径作为第二段路径;在候选路径为多条的情况下,从候选路径中选取出路径长度最短的为第二段路径,例如,尽量选择其中两点间路径为最长直线,尽量不执行锐角转折,转折时尽量使用贝塞尔曲线,从而使得得到多条寻路路径中的较短路径。
在上述实施例中,若第一位置与第一场景路点之间的距离非常短,则第一段路径几乎可以忽略不计,若第一位置与第一场景路点之间的距离不短,则可以采用拟合的方式将第一位置拟合到第二段路径的延伸路径中,对于第三位置,与第一位置的处理方式类似,不再赘述。
可选地,在虚拟场景的路径网络中搜寻以第一场景路点为起点并以第二场景路点为终点的候选路径的过程中,在游戏场景中,部分场景对象的属性会随着时间、游戏进程、环境等发生变化,例如场景对象“门”则可能存在开启或者关闭状态,开启时允许通过,闭合时不允许通过,场景对象“吊桥”则可能存在“落下”和“吊起”状态,落下时允许通过,吊起时不允许通过,这种情况下可以采用本申请的如下步骤1-步骤3来实现灵活的处理:
步骤1,在搜寻到的路径穿过虚拟场景中的第二场景对象(即属性会随着时间、游戏进程、环境等发生变化的场景对象)的情况下,获取第二场景对象的配置信息。
步骤2,在配置信息表明允许穿过的情况下,将搜寻到的路径作为候选路径。
步骤3,在配置信息表明不允许穿过的情况下,丢弃搜寻到的穿过第二场景对象的路径。
步骤S210,向虚拟场景中的目标角色推荐目标路径。
利用本申请的技术方案,主要实现了真实的三维空间寻路,支持在模型表面和场景空间内进行寻路,可以采取一定程度的预处理提高寻路效率和玩家的寻路体验,实现游戏世界中较真实的陆地、水底、天空的感受。
作为一种可选的实施例,下文结合图3和具体的实施方式进一步详述本申请的技术方案。
步骤S302,美术制作场景模型时标记出模型阻挡,如水面。
美术场景制作时,可标记出物件(即场景对象)的碰撞器Collider,如图4所示的桥梁,可标记出其网格碰撞体MeshCollider,以供工具生成阻挡信息;如图5所示的水域,美术在编辑场景时标记出其网格碰撞体MeshCollider和Water。
步骤S304,工具扫描场景生成的空间阻挡信息。
用工具生成场景阻挡信息,此工具为具备上述功能的场景阻挡生成工具,主要工作原理是,扫描出目标场景对象,以固定大小的一个碰撞体Box(0.5*0.5*1000)(即预设的碰撞对象)去做碰撞检测,并且其高度递归折半做碰撞检测,直到其折半高度小于0.01,然后根据碰撞检测的结果统计所有产生碰撞的情况,如图6所示。
经过全场景每个坐标进行碰撞检测,可以得出整个场景的空间阻挡信息,空间阻挡信息是一份描述场景中任意一个点是什么属性的数据,在程序运行时,可以不依赖场景实时演算即可知道任意一点的空间属性,是水域、是空域、还是地表可行走点,还是一个阻挡,通过空间阻挡信息,可以高效的检索空间中任一点的空间属性,其可视化结果如图7所示(其中的喇叭图案表示该位置有相应的声音表现)。
图7所示为这个场景中的桥梁和水面在阻挡信息内的展示。白块是场景中的阻挡(左边地表看起来缺少阻挡是因为可视化显示时的浮点数误差使之在地表下方显示了,其数据本身没有问题),当寻路或者角色移动时,是不能穿过阻挡内容的,但是可以贴着阻挡移动,玩家如果移动到了水域范围,则会有游泳等相应的表现,没有标记的开阔空间,就是空域,玩家在空域环境中就会进行跳跃或飞行。无论是地面、水域、还是空域,在移动过程中会实时监测玩家角色的空间属性做不同的处理,在寻路时可以根据阻挡数据信息根据算法计算出可用路径。
步骤S306,通过干预设计优化寻路路径。
优化寻路路径:因为通过生成空间阻挡数据,在移动寻路时使用的是A*算法,该路径可能有效,但是和场景关系的匹配度不高,策划需求更符合场景感受的寻路路径,在此基础上,本方案加入了可选的干预寻路路径,策划、美术人员或者机器自动通过工具配置一份场景路点信息,如图8所示。
图8是干预路径的可视化展示,在配置了干预路径后,寻路算法将分解计算量较大的长距离寻路,适当使用优化的路径,使整个寻路过程和场景交互更自然流畅。
图8中的部分路径(较细的灰色线条)是进行干预后的地面路径,可以看出在一个玩家从河流左岸到右岸进行寻路时,尽可能的经过桥梁,而不是横跨河流游泳而过。图8中的部分路径(较粗的黑色线条)表示进行干预后的飞行路径,主要是玩家在寻路时,如果飞行路径的效率更高,可以进行飞行寻路。如果仅仅使用A*寻路不进行干预,虽然可以寻路成功,但是其路径可能会比较奇怪,不能满足希望寻路更自然的需求。而且,因为进行了路径干预,所以当进行一次场景内的远距离寻路时,会优先根据干预路径进行分解,根据干预路径和路径点的相对位置,尝试根据干预路径对起点到终点进行分解,其分解过程中会尽量不进行大于180度的转折,会尽量向最远目标点直线前进等优化。
这种干预路径和分解路径的方法,相对于导航网格寻路,其受控制程度更高,表现更自然,效率也较好。
步骤S308,游戏运行时的动态寻路及寻路感受优化。
在实际运行中执行路径寻路时,可以采用多重优化机制,例如发现并实时更改路径为最长直线、不执行锐角转折、转折时使用贝塞尔曲线、存在多条寻路路径时使用较短路径等优化措施。
该方案支持动态阻挡机制,即是将一份小块的阻挡数据单独存储,在寻路运算时,根据这块阻挡数据的逻辑开关来决定是否引入计算。这样一来,就可以制作类似开门关门的阻挡效果了。
如图9所示,可根据逻辑开关来判断是否参与运算,美术人员在制作场景时,将这一部分标记出来(如图9中间部分黑色方框所在区域),之后用工具生成阻挡数据时即可将这部分数据单独隔离,以便识别和运算。
该方案也支持空中和水域标记,如图7所示,其中标记出了水域,水域为水面到水底之间的区域,未展示部分即是空域,水域与空域的移动寻路可使用三维A*寻路,从而可以借助干预优化实现更加高效的三维移动。
采用本申请的技术方案,能高效的描述场景空间的联通情况,能高效的处理三维寻路,能大幅提高游戏世界的游戏感受。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
根据本申请实施例的另一个方面,还提供了一种用于实施上述阻拦信息的生成方法的阻拦信息的生成装置。图10是根据本申请实施例的一种可选的阻拦信息的生成装置的示意图,如图10所示,该装置可以包括:
识别单元1001,用于识别出虚拟场景中的第一场景对象,其中,所述第一场景对象为所述虚拟场景中待生成空间阻拦信息的对象;
获取单元1003,用于获取所述第一场景对象的碰撞检测结果,其中,所述碰撞检测结果是使用碰撞对象与所述第一场景对象的各个部分进行碰撞测试得到的;
生成单元1005,用于根据所述碰撞检测结果生成目标空间阻拦信息,其中,所述目标空间阻拦信息用于描述所述第一场景对象的各个部分的空间属性状态。
需要说明的是,该实施例中的识别单元1001可以用于执行本申请实施例中的步骤S202,该实施例中的获取单元1003可以用于执行本申请实施例中的步骤S204,该实施例中的生成单元1005可以用于执行本申请实施例中的步骤S206。
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现。
相关技术中多是先根据三维模型生成导航网格,然后在生成的导航网格上进行寻路移动的,其主要表现是一般需要贴着导航网格移动,无法实现高度自由的寻路,如果希望实现上下高度的移动,需要辅以三维射线检测作为辅助碰撞的手段,其计算效率较低。
同时,就算辅以三维射线作为辅助碰撞检测,基于导航网格的移动寻路也无法实现游戏世界中的水中移动浮沉等行为,因为美术在制作水域空间时,并不是将其作为一个模型来进行制作,美术只制作了水面表现,而水域内部是没有实体的空间或者悬浮阻挡等内容,从而不能形成导航网格,而导航网格的寻路只能依赖导航网格贴在网格表面进行寻路,即使辅之以射线检测,也只能检测空间属性是空旷还是碰撞,但是无法实现寻找的功能,无法进行未知空间路径的预先寻路。
通过上述模块,在处理空旷的空间寻路时,并没有使用相关技术中导航网格的方式,通过对虚拟场景中的目标场景对象进行碰撞检测,生成空间阻拦信息(即场景空间描述数据),使用预先制作的场景空间描述数据,可以预先知道三维空间中每个小块区域的空间属性,然后使用寻路算法进行寻路,无需实时使用射线检测,从而提高空间(可以是陆地、水域、空中等)的寻路效率和寻路自由度,可以解决相关技术中心使用导航网格的导航方式导致寻路自由度较低的技术问题,游戏场景中全方位寻路的技术效果。
可选地,所述获取单元包括:确定模块,用于确定本轮碰撞检测使用的第一碰撞对象,其中,所述多轮碰撞检测中任意两轮使用的碰撞对象不同;检测模块,用于在本轮碰撞检测的过程中,使用所述第一碰撞对象对所述第一场景对象的各个部分进行碰撞检测。
可选地,所述确定模块包括:获取子模块,用于在本轮碰撞检测为第一轮碰撞检测的情况下,获取预设的碰撞对象为本轮碰撞检测使用的所述第一碰撞对象;处理子模块,用于在本轮碰撞检测不是第一轮碰撞检测的情况下,对前一轮碰撞检测使用的第二碰撞对象进行预处理,得到本轮碰撞检测使用的所述第一碰撞对象,其中,进行预处理得到的所述第一碰撞对象与所述第一场景对象的碰撞接触面小于所述第二碰撞对象与所述第一场景对象的碰撞接触面。
可选地,所述检测模块包括:第一检测子模块,用于在本次碰撞检测是本轮碰撞检测的第一次碰撞检测的情况下,按照预设方式确定所述第一场景对象中的第一部分,并使用所述第一碰撞对象对所述第一部分进行碰撞检测;第二检测子模块,用于在本次碰撞检测不是本轮碰撞检测的第一次碰撞检测的情况下,根据第二部分确定所述第一场景对象中的第三部分,并使用所述第一碰撞对象对所述第三部分进行碰撞检测,其中,所述第二部分是前一次碰撞检测时所检测的部分,所述第三部分与所述第二部分不同。
可选地,所述第二检测子模块还用于:在对所述第二部分进行碰撞检测的结果表明所述第二部分未被所述第一碰撞对象穿过的情况下,确定与所述第二部分相邻且与所述第二部分位于相同的目标平面内的部分为所述第三部分;在对所述第二部分进行碰撞检测的结果表明所述第二部分被所述第一碰撞对象穿过的情况下,确定与所述第二部分相邻且与所述第二部分位于所述目标平面内的部分为所述第三部分,或,确定与所述第二部分相邻且位于所述第二部分的预设方向上的部分为所述第三部分,其中,所述预设方向垂直于所述目标平面。
可选地,所述识别单元包括:查找模块,用于在所述虚拟场景中查找标记信息;识别模块,用于将所述虚拟场景中所述标记信息所标记的对象作为所述第一场景对象。
可选地,上述所述装置还包括:寻路单元,用于在根据所述碰撞检测结果生成目标空间阻拦信息之后,根据所述目标空间阻拦信息确定所述虚拟场景中的目标路径;推荐单元,用于向所述虚拟场景中的目标角色推荐所述目标路径。
可选地,所述寻路单元包括:位置获取模块,用于获取第一位置和第二位置,其中,所述第一位置为所述目标角色当前所在的位置,所述第二位置为所述目标角色的目标位置;寻路模块,用于在所述虚拟场景的路径网络中选择以所述第一位置为起点并以所述第二位置为终点的路径为所述目标路径,其中,所述虚拟场景的路径网络是根据所述目标空间阻拦信息确定的。
可选地,所述装置还包括:定位单元,用于在所述虚拟场景的路径网络中选择以所述第一位置为起点并以所述第二位置为终点的路径为所述目标路径之前,定位出所述虚拟场景中的多个场景路点;网络创建单元,用于建立所述多个场景路点中相邻的场景路点之间的连接路径,得到所述路径网络。
可选地,所述定位单元还用于执行以下至少之一:定位出所述虚拟场景中陆地上的场景路点;定位出所述虚拟场景中空域内的场景路点;定位出所述虚拟场景中水域内的场景路点。
可选地,所述寻路模块包括:查找子模块,用于从所述虚拟场景的多个场景路点中查找距离所述第一位置最近的第一场景路点、距离所述第二位置最近的第二场景路点;寻路子模块,用于确定第一段路径、第二段路径以及第三段路径,并将所述第一段路径、所述第二段路径以及所述第三段路径连接成所述目标路径,其中,所述第一段路径为所述第一位置与所述第一场景路点之间的路径,所述第二段路径为所述第一场景路点与所述第二场景路点之间的路径,所述第三段路径为所述第二场景路点与所述第二位置之间的路径。
可选地,所述寻路子模块还用于:在所述虚拟场景的路径网络中搜寻以所述第一场景路点为起点并以所述第二场景路点为终点的候选路径;在所述候选路径为一条的情况下,将所述候选路径作为所述第二段路径;在所述候选路径为多条的情况下,从所述候选路径中选取出路径长度最短的为所述第二段路径。
可选地,所述寻路模块还用于:在搜寻到的路径穿过所述虚拟场景中的第二场景对象的情况下,获取所述第二场景对象的配置信息;在所述配置信息表明允许穿过的情况下,将搜寻到的路径作为所述候选路径;在所述配置信息表明不允许穿过的情况下,丢弃搜寻到的穿过所述第二场景对象的路径。
在实际运行中执行路径寻路时,可以采用多重优化机制,例如发现并实时更改路径为最长直线、不执行锐角转折、转折时使用贝塞尔曲线、存在多条寻路路径时使用较短路径等优化措施。
该方案支持动态阻挡机制,即是将一份小块的阻挡数据单独存储,在寻路运算时,根据这块阻挡数据的逻辑开关来决定是否引入计算。这样一来,就可以制作类似开门关门的阻挡效果了。可根据逻辑开关来判断是否参与运算,美术人员在制作场景时,将这一部分标记出来,之后用工具生成阻挡数据时即可将这部分数据单独隔离,以便识别和运算;该方案也支持空中和水域标记。
采用本申请的技术方案,能高效的描述场景空间的联通情况,能高效的处理三维寻路,能大幅提高游戏世界的游戏感受。
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现,其中,硬件环境包括网络环境。
根据本申请实施例的另一个方面,还提供了一种用于实施上述阻拦信息的生成方法的服务器或终端。
图11是根据本申请实施例的一种终端的结构框图,如图11所示,该终端可以包括:一个或多个(图11中仅示出一个)处理器1101、存储器1103、以及传输装置1105,如图11所示,该终端还可以包括输入输出设备1107。
其中,存储器1103可用于存储软件程序以及模块,如本申请实施例中的阻拦信息的生成方法和装置对应的程序指令/模块,处理器1101通过运行存储在存储器1103内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的阻拦信息的生成方法。存储器1103可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器1103可进一步包括相对于处理器1101远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
上述的传输装置1105用于经由一个网络接收或者发送数据,还可以用于处理器与存储器之间的数据传输。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置1105包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置1105为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
其中,具体地,存储器1103用于存储应用程序。
处理器1101可以通过传输装置1105调用存储器1103存储的应用程序,以执行下述步骤:
识别出虚拟场景中的第一场景对象,其中,第一场景对象为虚拟场景中待生成空间阻拦信息的对象;
获取第一场景对象的碰撞检测结果,其中,碰撞检测结果是使用碰撞对象与第一场景对象的各个部分进行碰撞测试得到的;
根据碰撞检测结果生成目标空间阻拦信息,其中,目标空间阻拦信息用于描述第一场景对象的各个部分的空间属性状态。
处理器1101还用于执行下述步骤:
在对第二部分进行碰撞检测的结果表明第二部分未被第一碰撞对象穿过的情况下,确定与第二部分相邻且与第二部分位于相同的目标平面内的部分为第三部分;
在对第二部分进行碰撞检测的结果表明第二部分被第一碰撞对象穿过的情况下,确定与第二部分相邻且与第二部分位于目标平面内的部分为第三部分,或,确定与第二部分相邻且位于第二部分的预设方向上的部分为第三部分,其中,预设方向垂直于目标平面。
采用本申请实施例,提供了一种“识别出虚拟场景中的第一场景对象,其中,第一场景对象为虚拟场景中待生成空间阻拦信息的对象;获取第一场景对象的碰撞检测结果,碰撞检测结果是使用碰撞对象与第一场景对象的各个部分进行碰撞测试得到的;根据碰撞检测结果生成目标空间阻拦信息,目标空间阻拦信息用于描述第一场景对象的各个部分的空间属性状态”的方案。在处理空旷的空间寻路时,并没有使用相关技术中导航网格的方式,通过对虚拟场景中的目标场景对象进行碰撞检测,生成空间阻拦信息(即场景空间描述数据),使用预先制作的场景空间描述数据,可以预先知道三维空间中每个小块区域的空间属性,然后使用寻路算法进行寻路,无需实时使用射线检测,从而提高空间(可以是陆地、水域、空中等)的寻路效率和寻路自由度,可以解决相关技术中心使用导航网格的导航方式导致寻路自由度较低的技术问题,游戏场景中全方位寻路的技术效果。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
本领域普通技术人员可以理解,图11所示的结构仅为示意,终端可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile InternetDevices,MID)、PAD等终端设备。图11其并不对上述电子装置的结构造成限定。例如,终端还可包括比图11中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图11所示不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(RandomAccess Memory,RAM)、磁盘或光盘等。
本申请的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于执行阻拦信息的生成方法的程序代码。
可选地,在本实施例中,上述存储介质可以位于上述实施例所示的网络中的多个网络设备中的至少一个网络设备上。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:
识别出虚拟场景中的第一场景对象,其中,第一场景对象为虚拟场景中待生成空间阻拦信息的对象;
获取第一场景对象的碰撞检测结果,其中,碰撞检测结果是使用碰撞对象与第一场景对象的各个部分进行碰撞测试得到的;
根据碰撞检测结果生成目标空间阻拦信息,其中,目标空间阻拦信息用于描述第一场景对象的各个部分的空间属性状态。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:
在对第二部分进行碰撞检测的结果表明第二部分未被第一碰撞对象穿过的情况下,确定与第二部分相邻且与第二部分位于相同的目标平面内的部分为第三部分;
在对第二部分进行碰撞检测的结果表明第二部分被第一碰撞对象穿过的情况下,确定与第二部分相邻且与第二部分位于目标平面内的部分为第三部分,或,确定与第二部分相邻且位于第二部分的预设方向上的部分为第三部分,其中,预设方向垂直于目标平面。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
本发明实施例还包括在下列编号条款中规定的这些和其他方面:
1.一种阻拦信息的生成方法,其中,包括:
识别出虚拟场景中的第一场景对象,其中,所述第一场景对象为所述虚拟场景中待生成空间阻拦信息的对象;
获取所述第一场景对象的碰撞检测结果,其中,所述碰撞检测结果是使用碰撞对象与所述第一场景对象的各个部分进行碰撞测试得到的;
根据所述碰撞检测结果生成目标空间阻拦信息,其中,所述目标空间阻拦信息用于描述所述第一场景对象的各个部分的空间属性状态。
2.根据条款1所述的方法,其中,获取所述第一场景对象的碰撞检测结果包括按照如下方式进行多轮碰撞检测:
确定本轮碰撞检测使用的第一碰撞对象,其中,所述多轮碰撞检测中任意两轮使用的碰撞对象不同;
在本轮碰撞检测的过程中,使用所述第一碰撞对象对所述第一场景对象的各个部分进行碰撞检测。
3.根据条款2所述的方法,其中,确定本轮碰撞检测使用的第一碰撞对象包括:
在本轮碰撞检测为第一轮碰撞检测的情况下,获取预设的碰撞对象为本轮碰撞检测使用的所述第一碰撞对象;
在本轮碰撞检测不是第一轮碰撞检测的情况下,对前一轮碰撞检测使用的第二碰撞对象进行预处理,得到本轮碰撞检测使用的所述第一碰撞对象,其中,进行预处理得到的所述第一碰撞对象与所述第一场景对象的碰撞接触面小于所述第二碰撞对象与所述第一场景对象的碰撞接触面。
4.根据条款2所述的方法,其中,使用所述第一碰撞对象对所述第一场景对象的各个部分进行碰撞检测包括:
在本次碰撞检测是本轮碰撞检测的第一次碰撞检测的情况下,按照预设方式确定所述第一场景对象中的第一部分,并使用所述第一碰撞对象对所述第一部分进行碰撞检测;
在本次碰撞检测不是本轮碰撞检测的第一次碰撞检测的情况下,根据第二部分确定所述第一场景对象中的第三部分,并使用所述第一碰撞对象对所述第三部分进行碰撞检测,其中,所述第二部分是前一次碰撞检测时所检测的部分,所述第三部分与所述第二部分不同。
5.根据条款4所述的方法,其中,根据第二部分确定所述第一场景对象中的第三部分包括:
在对所述第二部分进行碰撞检测的结果表明所述第二部分未被所述第一碰撞对象穿过的情况下,确定与所述第二部分相邻且与所述第二部分位于相同的目标平面内的部分为所述第三部分;
在对所述第二部分进行碰撞检测的结果表明所述第二部分被所述第一碰撞对象穿过的情况下,确定与所述第二部分相邻且与所述第二部分位于所述目标平面内的部分为所述第三部分,或,确定与所述第二部分相邻且位于所述第二部分的预设方向上的部分为所述第三部分,其中,所述预设方向垂直于所述目标平面。
6.根据条款1所述的方法,其中,识别出虚拟场景中的第一场景对象包括:
在所述虚拟场景中查找标记信息;
将所述虚拟场景中所述标记信息所标记的对象作为所述第一场景对象。
7.根据条款1至6中任意一项所述的方法,其中,在根据所述碰撞检测结果生成目标空间阻拦信息之后,所述方法还包括:
根据所述目标空间阻拦信息确定所述虚拟场景中的目标路径;
向所述虚拟场景中的目标角色推荐所述目标路径。
8.根据条款7所述的方法,其中,根据所述目标空间阻拦信息确定所述虚拟场景中的目标路径包括:
获取第一位置和第二位置,其中,所述第一位置为所述目标角色当前所在的位置,所述第二位置为所述目标角色的目标位置;
在所述虚拟场景的路径网络中选择以所述第一位置为起点并以所述第二位置为终点的路径为所述目标路径,其中,所述虚拟场景的路径网络是根据所述目标空间阻拦信息确定的。
9.根据条款8所述的方法,其中,在所述虚拟场景的路径网络中选择以所述第一位置为起点并以所述第二位置为终点的路径为所述目标路径之前,所述方法还包括按照如下方式创建所述虚拟场景的路径网络:
定位出所述虚拟场景中的多个场景路点;
建立所述多个场景路点中相邻的场景路点之间的连接路径,得到所述路径网络。
10.根据条款9所述的方法,其中,定位出所述虚拟场景中的多个场景路点包括以下至少之一:
定位出所述虚拟场景中陆地上的场景路点;
定位出所述虚拟场景中空域内的场景路点;
定位出所述虚拟场景中水域内的场景路点。
11.根据条款8所述的方法,其中,在所述虚拟场景的路径网络中选择以所述第一位置为起点并以所述第二位置为终点的路径为所述目标路径包括:
从所述虚拟场景的多个场景路点中查找距离所述第一位置最近的第一场景路点和距离所述第二位置最近的第二场景路点;
确定第一段路径、第二段路径以及第三段路径,并将所述第一段路径、所述第二段路径以及所述第三段路径连接成所述目标路径,其中,所述第一段路径为所述第一位置与所述第一场景路点之间的路径,所述第二段路径为所述第一场景路点与所述第二场景路点之间的路径,所述第三段路径为所述第二场景路点与所述第二位置之间的路径。
12.根据条款11所述的方法,其中,确定所述第二段路径包括:
在所述虚拟场景的路径网络中搜寻以所述第一场景路点为起点并以所述第二场景路点为终点的候选路径;
在所述候选路径为一条的情况下,将所述候选路径作为所述第二段路径;
在所述候选路径为多条的情况下,从所述候选路径中选取出路径长度最短的为所述第二段路径。
13.根据条款11所述的方法,其中,在所述虚拟场景的路径网络中搜寻以所述第一场景路点为起点并以所述第二场景路点为终点的候选路径的过程中,所述方法包括:
在搜寻到的路径穿过所述虚拟场景中的第二场景对象的情况下,获取所述第二场景对象的配置信息;
在所述配置信息表明允许穿过的情况下,将搜寻到的路径作为所述候选路径;
在所述配置信息表明不允许穿过的情况下,丢弃搜寻到的穿过所述第二场景对象的路径。
14.一种阻拦信息的生成装置,其中,包括:
识别单元,用于识别出虚拟场景中的第一场景对象,其中,所述第一场景对象为所述虚拟场景中待生成空间阻拦信息的对象;
获取单元,用于获取所述第一场景对象的碰撞检测结果,其中,所述碰撞检测结果是使用碰撞对象与所述第一场景对象的各个部分进行碰撞测试得到的;
生成单元,用于根据所述碰撞检测结果生成目标空间阻拦信息,其中,所述目标空间阻拦信息用于描述所述第一场景对象的各个部分的空间属性状态。
15.根据条款14所述的装置,其中,所述获取单元包括:
确定模块,用于确定本轮碰撞检测使用的第一碰撞对象,其中,多轮碰撞检测中任意两轮使用的碰撞对象不同;
检测模块,用于在本轮碰撞检测的过程中,使用所述第一碰撞对象对所述第一场景对象的各个部分进行碰撞检测。
16.根据条款15所述的装置,其中,所述确定模块包括:
获取子模块,用于在本轮碰撞检测为第一轮碰撞检测的情况下,获取预设的碰撞对象为本轮碰撞检测使用的所述第一碰撞对象;
处理子模块,用于在本轮碰撞检测不是第一轮碰撞检测的情况下,对前一轮碰撞检测使用的第二碰撞对象进行预处理,得到本轮碰撞检测使用的所述第一碰撞对象,其中,进行预处理得到的所述第一碰撞对象与所述第一场景对象的碰撞接触面小于所述第二碰撞对象与所述第一场景对象的碰撞接触面。
17.根据条款15所述的装置,其中,所述检测模块包括:
第一检测子模块,用于在本次碰撞检测是本轮碰撞检测的第一次碰撞检测的情况下,按照预设方式确定所述第一场景对象中的第一部分,并使用所述第一碰撞对象对所述第一部分进行碰撞检测;
第二检测子模块,用于在本次碰撞检测不是本轮碰撞检测的第一次碰撞检测的情况下,根据第二部分确定所述第一场景对象中的第三部分,并使用所述第一碰撞对象对所述第三部分进行碰撞检测,其中,所述第二部分是前一次碰撞检测时所检测的部分,所述第三部分与所述第二部分不同。
18.根据条款17所述的装置,其中,所述第二检测子模块还用于:
在对所述第二部分进行碰撞检测的结果表明所述第二部分未被所述第一碰撞对象穿过的情况下,确定与所述第二部分相邻且与所述第二部分位于相同的目标平面内的部分为所述第三部分;
在对所述第二部分进行碰撞检测的结果表明所述第二部分被所述第一碰撞对象穿过的情况下,确定与所述第二部分相邻且与所述第二部分位于所述目标平面内的部分为所述第三部分,或,确定与所述第二部分相邻且位于所述第二部分的预设方向上的部分为所述第三部分,其中,所述预设方向垂直于所述目标平面。
19.根据条款14所述的装置,其中,所述识别单元包括:
查找模块,用于在所述虚拟场景中查找标记信息;
识别模块,用于将所述虚拟场景中所述标记信息所标记的对象作为所述第一场景对象。
20.根据条款14至19中任意一项所述的装置,其中,所述装置还包括:
寻路单元,用于在根据所述碰撞检测结果生成目标空间阻拦信息之后,根据所述目标空间阻拦信息确定所述虚拟场景中的目标路径;
推荐单元,用于向所述虚拟场景中的目标角色推荐所述目标路径。
21.根据条款20所述的装置,其中,所述寻路单元包括:
位置获取模块,用于获取第一位置和第二位置,其中,所述第一位置为所述目标角色当前所在的位置,所述第二位置为所述目标角色的目标位置;
寻路模块,用于在所述虚拟场景的路径网络中选择以所述第一位置为起点并以所述第二位置为终点的路径为所述目标路径,其中,所述虚拟场景的路径网络是根据所述目标空间阻拦信息确定的。
22.根据条款21所述的装置,其中,所述装置还包括:
定位单元,用于在所述虚拟场景的路径网络中选择以所述第一位置为起点并以所述第二位置为终点的路径为所述目标路径之前,定位出所述虚拟场景中的多个场景路点;
网络创建单元,用于建立所述多个场景路点中相邻的场景路点之间的连接路径,得到所述路径网络。
23.根据条款22所述的装置,其中,所述定位单元还用于执行以下至少之一:
定位出所述虚拟场景中陆地上的场景路点;
定位出所述虚拟场景中空域内的场景路点;
定位出所述虚拟场景中水域内的场景路点。
24.根据条款21所述的装置,其中,所述寻路模块包括:
查找子模块,用于从所述虚拟场景的多个场景路点中查找距离所述第一位置最近的第一场景路点、距离所述第二位置最近的第二场景路点;
寻路子模块,用于确定第一段路径、第二段路径以及第三段路径,并将所述第一段路径、所述第二段路径以及所述第三段路径连接成所述目标路径,其中,所述第一段路径为所述第一位置与所述第一场景路点之间的路径,所述第二段路径为所述第一场景路点与所述第二场景路点之间的路径,所述第三段路径为所述第二场景路点与所述第二位置之间的路径。
25.根据条款24所述的装置,其中,所述寻路子模块还用于:
在所述虚拟场景的路径网络中搜寻以所述第一场景路点为起点并以所述第二场景路点为终点的候选路径;
在所述候选路径为一条的情况下,将所述候选路径作为所述第二段路径;
在所述候选路径为多条的情况下,从所述候选路径中选取出路径长度最短的为所述第二段路径。
26.根据条款24所述的装置,其中,所述寻路模块还用于:
在搜寻到的路径穿过所述虚拟场景中的第二场景对象的情况下,获取所述第二场景对象的配置信息;
在所述配置信息表明允许穿过的情况下,将搜寻到的路径作为候选路径;
在所述配置信息表明不允许穿过的情况下,丢弃搜寻到的穿过所述第二场景对象的路径。
27.一种存储介质,其中,所述存储介质包括存储的程序,其中,所述程序运行时执行上述条款1至13任一项中所述的方法。
28.一种电子装置,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其中,所述处理器通过所述计算机程序执行上述条款1至13任一项中所述的方法。
Claims (10)
1.一种阻拦信息的生成方法,其特征在于,包括:
识别出虚拟场景中的第一场景对象,其中,所述第一场景对象为所述虚拟场景中待生成空间阻拦信息的对象;
获取所述第一场景对象的碰撞检测结果,其中,所述碰撞检测结果是使用碰撞对象与所述第一场景对象的各个部分进行碰撞测试得到的;
根据所述碰撞检测结果生成目标空间阻拦信息,其中,所述目标空间阻拦信息用于描述所述第一场景对象的各个部分的空间属性状态。
2.根据权利要求1所述的方法,其特征在于,获取所述第一场景对象的碰撞检测结果包括按照如下方式进行多轮碰撞检测:
确定本轮碰撞检测使用的第一碰撞对象,其中,所述多轮碰撞检测中任意两轮使用的碰撞对象不同;
在本轮碰撞检测的过程中,使用所述第一碰撞对象对所述第一场景对象的各个部分进行碰撞检测。
3.根据权利要求2所述的方法,其特征在于,确定本轮碰撞检测使用的第一碰撞对象包括:
在本轮碰撞检测为第一轮碰撞检测的情况下,获取预设的碰撞对象为本轮碰撞检测使用的所述第一碰撞对象;
在本轮碰撞检测不是第一轮碰撞检测的情况下,对前一轮碰撞检测使用的第二碰撞对象进行预处理,得到本轮碰撞检测使用的所述第一碰撞对象,其中,进行预处理得到的所述第一碰撞对象与所述第一场景对象的碰撞接触面小于所述第二碰撞对象与所述第一场景对象的碰撞接触面。
4.根据权利要求2所述的方法,其特征在于,使用所述第一碰撞对象对所述第一场景对象的各个部分进行碰撞检测包括:
在本次碰撞检测是本轮碰撞检测的第一次碰撞检测的情况下,按照预设方式确定所述第一场景对象中的第一部分,并使用所述第一碰撞对象对所述第一部分进行碰撞检测;
在本次碰撞检测不是本轮碰撞检测的第一次碰撞检测的情况下,根据第二部分确定所述第一场景对象中的第三部分,并使用所述第一碰撞对象对所述第三部分进行碰撞检测,其中,所述第二部分是前一次碰撞检测时所检测的部分,所述第三部分与所述第二部分不同。
5.根据权利要求4所述的方法,其特征在于,根据第二部分确定所述第一场景对象中的第三部分包括:
在对所述第二部分进行碰撞检测的结果表明所述第二部分未被所述第一碰撞对象穿过的情况下,确定与所述第二部分相邻且与所述第二部分位于相同的目标平面内的部分为所述第三部分;
在对所述第二部分进行碰撞检测的结果表明所述第二部分被所述第一碰撞对象穿过的情况下,确定与所述第二部分相邻且与所述第二部分位于所述目标平面内的部分为所述第三部分,或,确定与所述第二部分相邻且位于所述第二部分的预设方向上的部分为所述第三部分,其中,所述预设方向垂直于所述目标平面。
6.根据权利要求1所述的方法,其特征在于,识别出虚拟场景中的第一场景对象包括:
在所述虚拟场景中查找标记信息;
将所述虚拟场景中所述标记信息所标记的对象作为所述第一场景对象。
7.根据权利要求1至6中任意一项所述的方法,其特征在于,在根据所述碰撞检测结果生成目标空间阻拦信息之后,所述方法还包括:
根据所述目标空间阻拦信息确定所述虚拟场景中的目标路径;
向所述虚拟场景中的目标角色推荐所述目标路径。
8.一种阻拦信息的生成装置,其特征在于,包括:
识别单元,用于识别出虚拟场景中的第一场景对象,其中,所述第一场景对象为所述虚拟场景中待生成空间阻拦信息的对象;
获取单元,用于获取所述第一场景对象的碰撞检测结果,其中,所述碰撞检测结果是使用碰撞对象与所述第一场景对象的各个部分进行碰撞测试得到的;
生成单元,用于根据所述碰撞检测结果生成目标空间阻拦信息,其中,所述目标空间阻拦信息用于描述所述第一场景对象的各个部分的空间属性状态。
9.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,所述程序运行时执行上述权利要求1至7任一项中所述的方法。
10.一种电子装置,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器通过所述计算机程序执行上述权利要求1至7任一项中所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010334236.4A CN111714890B (zh) | 2020-04-24 | 2020-04-24 | 阻拦信息的生成方法和装置、存储介质、电子装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010334236.4A CN111714890B (zh) | 2020-04-24 | 2020-04-24 | 阻拦信息的生成方法和装置、存储介质、电子装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111714890A true CN111714890A (zh) | 2020-09-29 |
CN111714890B CN111714890B (zh) | 2023-04-21 |
Family
ID=72564190
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010334236.4A Active CN111714890B (zh) | 2020-04-24 | 2020-04-24 | 阻拦信息的生成方法和装置、存储介质、电子装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111714890B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006092222A (ja) * | 2004-09-24 | 2006-04-06 | Sega Corp | オブジェクト配置方法、ゲーム装置、画像処理装置及び画像処理方法 |
CN102306106A (zh) * | 2011-08-30 | 2012-01-04 | 盛趣信息技术(上海)有限公司 | 虚拟空间导航图自动生成方法与系统及其寻路方法与系统 |
CN106075906A (zh) * | 2016-06-03 | 2016-11-09 | 腾讯科技(深圳)有限公司 | 一种模拟对象的寻路方法、场景的搭建方法和对应的装置 |
US20180253891A1 (en) * | 2017-03-01 | 2018-09-06 | Nintendo Co., Ltd. | Storage medium, image processing system, image processing apparatus and image processing method |
CN109966741A (zh) * | 2019-05-09 | 2019-07-05 | 腾讯科技(深圳)有限公司 | 位置更新方法、装置、设备及存储介质 |
CN110047143A (zh) * | 2019-03-04 | 2019-07-23 | 南昌大学 | 一种基于空间细分与动态包围盒的连续碰撞检测方法 |
CN110388912A (zh) * | 2018-04-16 | 2019-10-29 | 杭州海康机器人技术有限公司 | 规划飞行设备的飞行路径的方法、装置及存储介质 |
-
2020
- 2020-04-24 CN CN202010334236.4A patent/CN111714890B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006092222A (ja) * | 2004-09-24 | 2006-04-06 | Sega Corp | オブジェクト配置方法、ゲーム装置、画像処理装置及び画像処理方法 |
CN102306106A (zh) * | 2011-08-30 | 2012-01-04 | 盛趣信息技术(上海)有限公司 | 虚拟空间导航图自动生成方法与系统及其寻路方法与系统 |
CN106075906A (zh) * | 2016-06-03 | 2016-11-09 | 腾讯科技(深圳)有限公司 | 一种模拟对象的寻路方法、场景的搭建方法和对应的装置 |
US20180253891A1 (en) * | 2017-03-01 | 2018-09-06 | Nintendo Co., Ltd. | Storage medium, image processing system, image processing apparatus and image processing method |
CN110388912A (zh) * | 2018-04-16 | 2019-10-29 | 杭州海康机器人技术有限公司 | 规划飞行设备的飞行路径的方法、装置及存储介质 |
CN110047143A (zh) * | 2019-03-04 | 2019-07-23 | 南昌大学 | 一种基于空间细分与动态包围盒的连续碰撞检测方法 |
CN109966741A (zh) * | 2019-05-09 | 2019-07-05 | 腾讯科技(深圳)有限公司 | 位置更新方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111714890B (zh) | 2023-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Bastani et al. | Roadtracer: Automatic extraction of road networks from aerial images | |
CN110523081A (zh) | 导航寻路路径的规划方法及装置 | |
CN110772791B (zh) | 三维游戏场景的路线生成方法、装置和存储介质 | |
US9488492B2 (en) | Real-time system for multi-modal 3D geospatial mapping, object recognition, scene annotation and analytics | |
CN104548598B (zh) | 一种虚拟现实场景中寻路的方法 | |
CN110180182A (zh) | 碰撞检测方法、装置、存储介质及电子装置 | |
Kallmann et al. | Navigation meshes and real-time dynamic planning for virtual worlds | |
CN106843230A (zh) | 应用于移动设备的虚拟墙系统及其实现方法 | |
CN108268971B (zh) | 路径的搜索方法、装置、处理器和电子装置 | |
CN111728535B (zh) | 一种生成清扫路径的方法、装置、电子设备及存储介质 | |
CN102279874A (zh) | 用于交互制图的快速边路由 | |
CN102324041B (zh) | 像素归类方法、关节体姿态识别方法及鼠标指令生成方法 | |
CN110135644A (zh) | 一种用于目标搜索的机器人路径规划方法 | |
CN108334523A (zh) | 道路场景地图的构建方法和装置 | |
CN113244619B (zh) | 数据处理方法、装置、设备及存储介质 | |
CN111562787A (zh) | 机器人全覆盖路径规划区域划分方法、装置、介质及设备 | |
Mekni | Automated generation of geometrically-precise and semantically-informed virtual geographic environments populated with spatially-reasoning agents | |
CN111427341B (zh) | 一种基于概率地图的机器人最短预期时间目标搜索方法 | |
CN111714890A (zh) | 阻拦信息的生成方法和装置、存储介质、电子装置 | |
Mekni et al. | Hierarchical path planning for multi-agent systems situated in informed virtual geographic environments | |
Schwertfeger | Robotic mapping in the real world: Performance evaluation and system integration | |
Landi et al. | Spot the difference: A novel task for embodied agents in changing environments | |
CN112337093B (zh) | 一种虚拟对象的分簇方法、装置、存储介质和电子装置 | |
CN113856201A (zh) | 一种游戏地貌创建方法、系统、存储介质及计算设备 | |
CN113968235A (zh) | 一种障碍物的区域层级确定方法、装置、设备和介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |