CN111202986A - 游戏中虚拟赛道的生成方法、装置、处理器及电子装置 - Google Patents

游戏中虚拟赛道的生成方法、装置、处理器及电子装置 Download PDF

Info

Publication number
CN111202986A
CN111202986A CN201911402603.3A CN201911402603A CN111202986A CN 111202986 A CN111202986 A CN 111202986A CN 201911402603 A CN201911402603 A CN 201911402603A CN 111202986 A CN111202986 A CN 111202986A
Authority
CN
China
Prior art keywords
virtual
track
road
length
virtual road
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
Application number
CN201911402603.3A
Other languages
English (en)
Other versions
CN111202986B (zh
Inventor
刘炜炜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Netease Hangzhou Network Co Ltd
Original Assignee
Netease Hangzhou Network Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Netease Hangzhou Network Co Ltd filed Critical Netease Hangzhou Network Co Ltd
Priority to CN201911402603.3A priority Critical patent/CN111202986B/zh
Publication of CN111202986A publication Critical patent/CN111202986A/zh
Application granted granted Critical
Publication of CN111202986B publication Critical patent/CN111202986B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/60Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/80Special adaptations for executing a specific game genre or game mode
    • A63F13/803Driving vehicles or craft, e.g. cars, airplanes, ships, robots or tanks
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features 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/80Features 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/8017Driving on land or water; Flying

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本发明公开了一种游戏中虚拟赛道的生成方法、装置、处理器及电子装置。该方法包括:基于端点数据生成初始虚拟赛道,其中,初始虚拟赛道由多个虚拟路段拼接而成,多个虚拟路段中每个虚拟路段由两个相邻端点确定;按照预设间距在多个虚拟路段中每个虚拟路段上生成多个路点,得到目标虚拟赛道,并在游戏场景内显示目标虚拟赛道。本发明解决了相关技术中所提供的竞速类游戏中采用的虚拟赛道生成方式效率较低、准确性较差,无法实现虚拟赛道相关的复杂计算的技术问题。

Description

游戏中虚拟赛道的生成方法、装置、处理器及电子装置
技术领域
本发明涉及计算机领域,具体而言,涉及一种游戏中虚拟赛道的生成方法、装置、处理器及电子装置。
背景技术
当今时代,电子游戏领域已经开启商业娱乐模式,竞速游戏逐步成为游戏市场的主流游戏项目之一。随着科学技术与设备性能的不断提升,竞速游戏的表现力也得到极大地增强。竞速赛道从早期简单的直线赛道和环形赛道,逐渐向更加写实、复杂以及更具挑战性的方向演变,同时在单纯的驾驶模式之外,还加入了许多新的玩法。在游戏过程中,虚拟车辆的实时排名、当前进度、驾驶辅助以及其他围绕赛道设计的玩法、功能,对道路信息均存在较大程度的依赖。因此,需要在游戏内引入一套机制,其可以快速将虚拟车辆在三维空间中的坐标位置映射为虚拟赛道上的特定位置,并进一步提取附近虚拟赛道的走向、宽度等数据,以便完成虚拟赛道和玩法相关的计算。
相关技术中提供了一种标定道路信息的方法。通过设置检查点,即在虚拟赛道的关键位置(其通常是虚拟赛道走向发生明显变化的转弯处)设置标记,然后再根据虚拟车辆经过的检查点数量以及到下一个检查点之间的距离,便可以推算出虚拟车辆在虚拟赛道上所处的位置。
然而,上述方式中所存在的缺陷在于:检查点的设置通常较为稀疏。为此,一种升级方案便是将检查点的密度提高,转变成沿道路紧密排列的路点,通常是沿虚拟赛道中心线进行分布。随着虚拟车辆位置的不断更新,不断刷新对应的路点,由此便可以将虚拟车辆的坐标映射成虚拟赛道进度。路点的方法由于采样率高,可以较为完整地还原虚拟赛道数据,因此在竞速游戏中较多采用这种路点方式。路点的编辑既可以由人工手动标记每个路点的位置与朝向,也可以通过射线检测定位虚拟赛道两侧的空气墙,从而计算出虚拟赛道中心点的坐标与朝向,然后沿道路方向预测下一路点的位置,并重复上述射线检测的过程,对预测的路点进行调整和修正,从而沿虚拟赛道自动生成路点。
鉴于上述检查点方法对虚拟赛道的描述能力较弱,仅适用于简单赛道,而且难以描述检查点之间的虚拟赛道几何信息,通常只能近似为一条虚拟线段,因此,虽然在大量直线虚拟赛道拼接而成的游戏场景中表现较好,但是在弯道较多的复杂赛道上则难以设置,并且容易产生计算误差。
另外,相关技术中所提供的路点自动生成方法虽然能够克服了检查点方法所带来的缺陷,但是路点方法仅能够生成一个散点序列。如果是一条单行的虚拟赛道,则这种方法确实足以实现虚拟赛道相关的各种计算。但是,在实际游戏场景中,存在很多分支路径,进而无法采用单一的散点序列来覆盖所有虚拟赛道。此外,上述路点自动生成方法还难以处理岔路口的情况,其原因在于:路口处的空气墙布局存在诸多不确定性,由此会给虚拟赛道中心点的判定造成很大干扰。而如果全部采用手动标定的实现方式,则又会导致效率低下,不适合快节奏的开发进程。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明至少部分实施例提供了一种游戏中虚拟赛道的生成方法、装置、处理器及电子装置,以至少解决相关技术中所提供的竞速类游戏中采用的虚拟赛道生成方式效率较低、准确性较差,无法实现虚拟赛道相关的复杂计算的技术问题。
根据本发明其中一实施例,提供了一种游戏中虚拟赛道的生成方法,包括:
基于端点数据生成初始虚拟赛道,其中,初始虚拟赛道由多个虚拟路段拼接而成,多个虚拟路段中每个虚拟路段由两个相邻端点确定;按照预设间距在多个虚拟路段中每个虚拟路段上生成多个路点,得到目标虚拟赛道,并在游戏场景内显示目标虚拟赛道。
可选地,基于端点数据生成初始虚拟赛道包括:获取步骤,获取已创建的端点,并为已创建的第一端点分配对应的第一控制点,其中,第一端点与第一控制点之间的相对位置依据与上一个创建的第二端点的位置来确定;调整步骤,依据第一端点、第一控制点、第二端点以及与第二端点对应的第二控制点的位置变化来调整第二端点与第一端点之间虚拟路段的曲线形状,拟合得到当前虚拟路段;处理步骤,判断是否存在尚未处理的已创建的端点,如果是,则返回获取步骤,如果否,则对拟合得到的全部虚拟路段进行首尾拼接处理,生成初始虚拟赛道。
可选地,基于端点数据生成初始虚拟赛道还包括:利用当前虚拟路段两侧的空气墙和路面模型的碰撞体对第二端点和/或第一端点的位置进行修正。
可选地,基于端点数据生成初始虚拟赛道还包括:采用默认值来设定首个创建的端点与对应控制点之间的相对位置。
可选地,在基于端点数据生成初始虚拟赛道之后,还包括:对端点数据中包含的全部端点进行拓扑排序处理,记录每个端点预先配置的第一标识与排序后的第二标识之间的映射关系,得到排序结果;按照排序结果重新遍历全部端点,将全部端点中的部分端点的第一标识修改为第二标识,并将处理后端点数据存储至预设数组。
可选地,按照预设间距在多个虚拟路段中每个虚拟路段上生成多个路点,得到目标虚拟赛道包括:确定步骤,按照预设间距确定多个路点中每个路点在当前虚拟路段上对应的曲线长度;计算步骤,基于曲线长度推算每个路点在当前虚拟路段上的插值点坐标,生成多个路点;处理步骤,判断是否存在尚未生成路点的虚拟路段,如果是,则返回确定步骤,如果否,则得到目标虚拟赛道。
可选地,按照预设间距在多个虚拟路段中每个虚拟路段上生成多个路点,得到目标虚拟赛道还包括:如果当前虚拟路段上最后一个生成的路点与第一端点之间的第一长度小于预设间距,则将下一个虚拟路段上的首个生成的路点对应的曲线长度设置为第二长度,其中,第二长度为预设间距与第一长度的差值;如果多条虚拟路段同时汇入第一端点,则计算多条虚拟路段中每条虚拟路段上最后一个生成的路点与第一端点之间的长度均值,得到第三长度,并且在第三长度小于预设间距时,将下一个虚拟路段上的首个生成的路点对应的曲线长度设置为第四长度,其中,第四长度为预设间距与第三长度的差值。
可选地,在按照预设间距在多个虚拟路段中每个虚拟路段上生成多个路点,得到目标虚拟赛道之后,还包括:采用键值对的方式对每个虚拟路段上生成的多个路点的信息进行存储,其中,键值对的键为每个虚拟路段的首尾端点标识组合,键值对的值为每个虚拟路段上生成的多个路点构成的路点序列,多个路点的信息包括:每个路点的位置信息和朝向信息。
根据本发明其中一实施例,还提供了一种游戏中虚拟赛道的生成装置,包括:
第一生成模块,用于基于端点数据生成初始虚拟赛道,其中,初始虚拟赛道由多个虚拟路段拼接而成,多个虚拟路段中每个虚拟路段由两个相邻端点确定;第二生成模块,用于按照预设间距在多个虚拟路段中每个虚拟路段上生成多个路点,得到目标虚拟赛道,并在游戏场景内显示目标虚拟赛道。
可选地,第一生成模块包括:获取单元,用于获取已创建的端点,并为已创建的第一端点分配对应的第一控制点,其中,第一端点与第一控制点之间的相对位置依据与上一个创建的第二端点的位置来确定;调整单元,用于依据第一端点、第一控制点、第二端点以及与第二端点对应的第二控制点的位置变化来调整第二端点与第一端点之间虚拟路段的曲线形状,拟合得到当前虚拟路段;处理单元,用于判断是否存在尚未处理的已创建的端点,如果是,则返回获取单元,如果否,则对拟合得到的全部虚拟路段进行首尾拼接处理,生成初始虚拟赛道。
可选地,第一生成模块还包括:修正单元,用于利用当前虚拟路段两侧的空气墙和路面模型的碰撞体对第二端点和/或第一端点的位置进行修正。
可选地,第一生成模块还包括:设定单元,用于采用默认值来设定首个创建的端点与对应控制点之间的相对位置。
可选地,上述装置还包括:排序模块,用于对端点数据中包含的全部端点进行拓扑排序处理,记录每个端点预先配置的第一标识与排序后的第二标识之间的映射关系,得到排序结果;处理模块,用于按照排序结果重新遍历全部端点,将全部端点中的部分端点的第一标识修改为第二标识,并将处理后端点数据存储至预设数组。
可选地,第二生成模块包括:确定单元,用于按照预设间距确定多个路点中每个路点在当前虚拟路段上对应的曲线长度;计算单元,用于基于曲线长度推算每个路点在当前虚拟路段上的插值点坐标,生成多个路点;第一处理单元,用于判断是否存在尚未生成路点的虚拟路段,如果是,则返回确定单元,如果否,则得到目标虚拟赛道。
可选地,第二生成模块还包括:第二处理单元,用于如果当前虚拟路段上最后一个生成的路点与第一端点之间的第一长度小于预设间距,则将下一个虚拟路段上的首个生成的路点对应的曲线长度设置为第二长度,其中,第二长度为预设间距与第一长度的差值;第三处理单元,用于如果多条虚拟路段同时汇入第一端点,则计算多条虚拟路段中每条虚拟路段上最后一个生成的路点与第一端点之间的长度均值,得到第三长度,并且在第三长度小于预设间距时,将下一个虚拟路段上的首个生成的路点对应的曲线长度设置为第四长度,其中,第四长度为预设间距与第三长度的差值。
可选地,上述装置还包括:存储模块,用于采用键值对的方式对每个虚拟路段上生成的多个路点的信息进行存储,其中,键值对的键为每个虚拟路段的首尾端点标识组合,键值对的值为每个虚拟路段上生成的多个路点构成的路点序列,多个路点的信息包括:每个路点的位置信息和朝向信息。
根据本发明其中一实施例,还提供了一种存储介质,存储介质中存储有计算机程序,其中,计算机程序被设置为运行时执行上述任一项中的游戏中虚拟赛道的生成方法。
根据本发明其中一实施例,还提供了一种处理器,处理器用于运行程序,其中,程序被设置为运行时执行上述任一项中的游戏中虚拟赛道的生成方法。
根据本发明其中一实施例,还提供了一种电子装置,包括存储器和处理器,存储器中存储有计算机程序,处理器被设置为运行计算机程序以执行上述任一项中的游戏中虚拟赛道的生成方法。
在本发明至少部分实施例中,采用基于端点数据生成初始虚拟赛道,该初始虚拟赛道由多个虚拟路段拼接而成,多个虚拟路段中每个虚拟路段由两个相邻端点确定的方式,通过按照预设间距在多个虚拟路段中每个虚拟路段上生成多个路点,得到目标虚拟赛道并在游戏场景内显示目标虚拟赛道,达到了既可以充分发挥路点自动生成方式对虚拟赛道信息的描述能力,又可以满足复杂赛道需求的目的,从而实现了通过路点配置在结构简单与结构复杂的虚拟赛道上均能够灵活和准确地发挥作用,满足竞速类游戏在虚拟赛道上的功能扩展需求、获得的游戏数据也更加可靠的技术效果,进而解决了相关技术中所提供的竞速类游戏中采用的虚拟赛道生成方式效率较低、准确性较差,无法实现虚拟赛道相关的复杂计算的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明其中一实施例的游戏中虚拟赛道的生成方法的流程图;
图2是根据本发明其中一可选实施例的贝塞尔曲线的示意图;
图3是根据本发明其中一实施例的基于虚拟赛道的游戏数据获取方法的流程图;
图4是根据本发明其中一可选实施例的路点更新失败的示意图;
图5是根据本发明其中一实施例的游戏中虚拟赛道的生成装置的结构框图;
图6是根据本发明其中一可选实施例的游戏中虚拟赛道的生成装置的结构框图;
图7是根据本发明其中一实施例的基于虚拟赛道的游戏数据获取装置的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先,对本发明至少部分实施例中出现的参数信息做出如下解释:
Pi:端点坐标,其为一个三维向量,端点即预先编辑生成的点,用以标识一个虚拟路段的起点和终点。每个端点除了记录坐标数据之外,还会记录子节点信息,即,与当前端点直接相连的后继端点,下标i是端点的全局编号,其为每个端点的唯一标识。
Ci:贝塞尔曲线的控制点坐标,其为一个三维向量,下标i与端点的下标相对应,贝塞尔曲线的形状可以通过两个端点和两个控制点来确定。
si:虚拟路段,即两个相邻端点之间的虚拟赛道,逻辑上可以抽象为连接两个端点的贝塞尔曲线。这里的下标i与端点的编号没有对应关系,仅用来区分不同的虚拟路段。虚拟路段编号需要同时使用起点信息和终点信息来生成。假设si的两个端点分别为Pj和Pk,则该虚拟路段可以采用起点编号和终点编号形成的二元组(j,k)来唯一标识。
di:虚拟路段内经过插值计算生成的路点,下标i是路点在当前虚拟路段内的编号,非全局唯一,与端点编号也没有关系,仅用来标识路点在当前虚拟路段内的序号。每个虚拟路段上的路点编号都是从0开始,顺序递增至n-1,n为当前虚拟路段内生成的路点总数。
根据本发明其中一实施例,提供了一种游戏中虚拟赛道的生成方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
该方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,移动终端可以包括一个或多个处理器(处理器可以包括但不限于中央处理器(CPU)、图形处理器(GPU)、数字信号处理(DSP)芯片、微处理器(MCU)或可编程逻辑器件(FPGA)等的处理装置)和用于存储数据的存储器。可选地,上述移动终端还可以包括用于通信功能的传输设备以及输入输出设备。本领域普通技术人员可以理解,上述结构描述仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端还可包括比上述结构描述更多或者更少的组件,或者具有与上述结构描述不同的配置。
存储器可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的游戏中虚拟赛道的生成方法对应的计算机程序,处理器通过运行存储在存储器内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的游戏中虚拟赛道的生成方法。存储器可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器可进一步包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输设备用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输设备包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
显示设备可以例如触摸屏式的液晶显示器(LCD)和触摸显示器(也被称为“触摸屏”或“触摸显示屏”)。该液晶显示器可使得用户能够与移动终端的用户界面进行交互。在一些实施例中,上述移动终端具有图形用户界面(GUI),用户可以通过触摸触敏表面上的手指接触和/或手势来与GUI进行人机交互,此处的人机交互功能可选的包括如下交互:创建网页、绘图、文字处理、制作电子文档、游戏、视频会议、即时通信、收发电子邮件、通话界面、播放数字视频、播放数字音乐和/或网络浏览等、用于执行上述人机交互功能的可执行指令被配置/存储在一个或多个处理器可执行的计算机程序产品或可读存储介质中。
在本实施例中提供了一种运行于上述移动终端的游戏中虚拟赛道的生成方法,图1是根据本发明其中一实施例的游戏中虚拟赛道的生成方法的流程图,如图1所示,该方法包括如下步骤:
步骤S12,基于端点数据生成初始虚拟赛道,其中,初始虚拟赛道由多个虚拟路段拼接而成,多个虚拟路段中每个虚拟路段由两个相邻端点确定;
步骤S14,按照预设间距在多个虚拟路段中每个虚拟路段上生成多个路点,得到目标虚拟赛道,并在游戏场景内显示目标虚拟赛道。
通过上述步骤,可以采用基于端点数据生成初始虚拟赛道,该初始虚拟赛道由多个虚拟路段拼接而成,多个虚拟路段中每个虚拟路段由两个相邻端点确定的方式,通过按照预设间距在多个虚拟路段中每个虚拟路段上生成多个路点,得到目标虚拟赛道并在游戏场景内显示目标虚拟赛道,达到了既可以充分发挥路点自动生成方式对虚拟赛道信息的描述能力,又可以满足复杂赛道需求的目的,从而实现了通过路点配置在结构简单与结构复杂的虚拟赛道上均能够灵活和准确地发挥作用,满足竞速类游戏在虚拟赛道上的功能扩展需求、获得的游戏数据也更加可靠的技术效果,进而解决了相关技术中所提供的竞速类游戏中采用的虚拟赛道生成方式效率较低、准确性较差,无法实现虚拟赛道相关的复杂计算的技术问题。
在端点数据编辑方面,通常可以在虚拟赛道走向发生明显变化的位置标记一个端点,这部分数据相对于整个游戏场景而言是非常稀疏的。通过鼠标点击等控制操作可以在游戏场景内的特定位置创建端点。对于已经生成的端点而言,可以通过鼠标点击选中,编辑器会为选中的端点生成交互控件,进而通过鼠标拖拽即可调整端点的位置。
具体地,对于已创建的端点,可以采用简易模型可视化地显示在游戏场景中。即,端点是一个逻辑上的抽象概念,在游戏场景内需要通过一个可见模型来标识端点的位置。例如:在端点的位置创建一个球模型,用户可以通过单击这个模型来选中相对应的端点,在编辑面板上修改对应的参数。端点的参数除了位置数据和子节点之外,还可以按照需求进行扩展,例如:道路宽度、道路倾斜角、岔路口各条分支的优先级等。位置信息可以在面板上通过键盘输入修改,但是编辑器为位置编辑提供了更直观的调整方式,其可以在游戏场景内直接通过拖拽操作来修改。用户可以通过点击方式使得选中的端点与其他端点连接或断开。由于游戏场景会随时调整,虚拟赛道内会新增或删除一些虚拟路段,因此,通过将两个端点连接便会在两个端点之间生成一条新的贝塞尔曲线,表示新增一个虚拟路段。如果将连接断开,则表示这两个端点之间的虚拟路段已被删除。考虑到大部分端点都是沿虚拟赛道顺序创建的,因此会自动将已创建的端点作为选中端点的子节点进行连接,随后再将新端点设置为选中状态。
在端点数据编辑完毕之后,将会自动沿编辑的路线生成较小等间隔的路点,以便让离散化的路点数据能够保留较多的道路细节,从而实现对整条虚拟赛道完整、详细的数据覆盖。即,只需要在虚拟赛道走向发生变化的位置创建较少的端点,再结合贝塞尔曲线的控制点调整,便可以很好地拟合出虚拟赛道的形状。岔路口不同路线的连接关系可以通过曲线之间的连接来描述。虚拟路段内部密度更高的路点可以自动生成,在完整表达道路信息的同时,节省路点编辑的工作量。
可选地,步骤S12,基于端点数据生成初始虚拟赛道可以包括以下执行步骤:
步骤S121,获取已创建的端点,并为已创建的第一端点分配对应的第一控制点,其中,第一端点与第一控制点之间的相对位置依据与上一个创建的第二端点的位置来确定;
步骤S122,依据第一端点、第一控制点、第二端点以及与第二端点对应的第二控制点的位置变化来调整第二端点与第一端点之间虚拟路段的曲线形状,拟合得到当前虚拟路段;
步骤S123,判断是否存在尚未处理的已创建的端点,如果是,则返回步骤S121,如果否,则对拟合得到的全部虚拟路段进行首尾拼接处理,生成初始虚拟赛道。
由于竞速类游戏场景为三维立体空间,因此,采用三维的贝塞尔曲线来拟合道路形状,其参数方程为三次多项式,并且具有两个控制点。贝塞尔曲线是计算机图形图像造型的基本工具,应用非常广泛,在多种制图软件中均被用来绘制曲线。相比于圆锥曲线,贝塞尔曲线的约束较少,可以更好地拟合不规则的道路曲线。因此,在端点编辑过程中,由于竞速类游戏场景中虚拟赛道形状通常会参照现实世界中的道路来设计,其形状可以采用平滑曲线来描述,利用贝塞尔曲线能够对一定范围内的虚拟赛道很好地进行拟合,进而通过将各段曲线首尾相连便可以提取出整条虚拟赛道的形状信息。
需要说明的是,上述三维的贝塞尔曲线仅是本发明的一个可选示例,下面将会以贝塞尔曲线为例,对本发明的具体实施过程进行说明,但其并不构成对本发明的不当限制。其他可以等同替换并且能够实现同样技术效果的曲线(例如:B样条曲线)均在本发明的保护范围之内。
另外,编辑贝塞尔曲线所需的交互操作非常简单、直观,用户可以直接修改起点位置和终点位置,用户只需可视地移动曲线端点与控制点的位置,即可完成对曲线形状的编辑。在生成端点的过程中,会沿着与前一个端点连接的方向,为新端点自动创建两个对称的控制点,用来控制与之相连的虚拟路段曲线形状。图2是根据本发明其中一可选实施例的贝塞尔曲线的示意图。如图2所示,P0和P1为贝塞尔曲线的起点和终点,C0和C1为两个控制点,用来调整曲线的弯曲方向。C2是为下一段曲线预先创建的控制点。鉴于道路方向的变化通常是平滑的,为此,令C1和C2关于P1中心对称,可以确保从P1延伸出的下一段曲线与当前曲线平滑连接。P1作为新生成的端点,相邻的两个控制点均在P0和P1的连线上,这里相当于对下一段道路的走向进行预测。在通常情况下,一段道路起点和终点之间的连线与道路的实际形状不会相差太多,从而可以减少调整控制点的工作量。
在虚拟路段生成过程中,为了达到所见即所得的目的,可以直接在游戏场景内进行路点编辑。用户可以通过点击游戏场景内的路面,创建一个端点Pi,同时编辑器会自动为已创建的端点分配一个控制点Ci,Ci和Pi的相对位置会参照上一个端点的位置。考虑到虚拟赛道的平滑性,除了一些急弯之外,大部分虚拟路段的走向与虚拟路段两个端点的连线存在较小差异,因此,将控制点Ci设置在Pi与上一个端点之间的连线上,可以使得新生成的曲线形状更接近虚拟路段的实际走向,从而有效地减少调整控制点的工作量。由于两个相连的端点便可以构成一个虚拟路段,因此通过拖动操作来调整端点和控制点的位置,改变贝塞尔曲线的形状,由此可以很好地拟合出一个虚拟路段的走向。在理想情况下,曲线应当与虚拟赛道中心线重合,但实际上路点编辑并不需要达到这样的精度,只要能够以贴近中心线的精度大致勾勒出虚拟赛道曲线即可。
在一个可选实施例中,采用三次贝塞尔曲线来拟合虚拟路段,其函数表现形式如下:
f(t)=(1-t)3Pi+3t(1-t)2Ci+3t2(1-t)Cj+t3Pj
其中,Pi和Pj分别为该虚拟路段的起点和终点,参数t的取值范围是[0,1],当t为0时,计算结果对应该虚拟路段的起点坐标,当t取1时,计算结果对应该虚拟路段的终点坐标。
可选地,在步骤S12中,基于端点数据生成初始虚拟赛道还可以包括以下执行步骤:
步骤S124,利用当前虚拟路段两侧的空气墙和路面模型的碰撞体对第二端点和/或第一端点的位置进行修正。
在编辑完成之后,还可以利用虚拟赛道两侧的空气墙和路面模型的碰撞体,对编辑的误差做出一定的修正,例如:将端点修正到两侧空气墙之间的中点上,在端点附近的路面上进行高度采样,估算道路倾斜角,以及将端点高度修正到路面附近。
可选地,在步骤S12中,基于端点数据生成初始虚拟赛道还可以包括以下执行步骤:
步骤S125,采用默认值来设定首个创建的端点与对应控制点之间的相对位置。
对于游戏场景内第一个创建的控制点,由于没有参照数据,控制点的相对位置采用默认值来设定,例如:相对于首个创建的端点而言,向x轴正方向偏移1米即为控制点的位置。
可选地,在步骤S12,基于端点数据生成初始虚拟赛道之后,还可以包括以下执行步骤:
步骤S15,对端点数据中包含的全部端点进行拓扑排序处理,记录每个端点预先配置的第一标识与排序后的第二标识之间的映射关系,得到排序结果;
步骤S16,按照排序结果重新遍历全部端点,将全部端点中的部分端点的第一标识修改为第二标识,并将处理后端点数据存储至预设数组。
对于端点的编号而言,由于在编辑过程中可能存在增加、删除、修改的操作,因此为了确保全局唯一性,可以设置一个全局整数x,从0开始计数。每当创建端点时,将该x的取值作为编号分配给新端点,然后x自增1,删除节点时不修改x。
在存储路网数据的过程中,考虑到端点编号用于区分不同端点,而并无实际的物理含义,因此可以简化数据内容,不保存端点的编号,而是将端点整理成一个数组。但考虑到编号不连续问题,在将端点放入数组之后,对应的下标和原本的编号可能存在差异,导致对应关系错乱,因此需要先将端点数据紧凑化,以使编号变得连续。
根据竞速类游戏的特性,赛道具有唯一的起点和终点,因此,虚拟赛道路网中也应当有两个顶点,其入度和出度分别为0,即分别对应虚拟赛道的起点和虚拟赛道的终点。为此,可以先对虚拟赛道路网中的端点进行一次拓扑排序,如果端点总数为m,则排序后起点和终点的序号应分别为0和m-1。在排序过程中,会记录编辑阶段的端点编号id与排序后的序号idx之间的映射关系g,其可以表示为g(id)=idx。在排序结束之后,再扫描一遍所有端点,修改相应的子节点编号。这样,便可以将排序后的端点存入一个数组中,同时确保端点之间的连接关系与编辑结果一致。
可选地,步骤S14,按照预设间距在多个虚拟路段中每个虚拟路段上生成多个路点,得到目标虚拟赛道可以包括以下执行步骤:
步骤S141,按照预设间距确定多个路点中每个路点在当前虚拟路段上对应的曲线长度;
步骤S142,基于曲线长度推算每个路点在当前虚拟路段上的插值点坐标,生成多个路点;
步骤S143,判断是否存在尚未生成路点的虚拟路段,如果是,则返回步骤S141,如果否,则得到目标虚拟赛道。
通过上述操作可以得到一个由多段曲线连接而成的虚拟赛道路网。由于端点通常放置在岔路口和弯道等关键位置,其相对于整条虚拟赛道而言是非常稀疏的,因此还需要在虚拟赛道路网内填充密度更高的路点。当存储数据时,首先会存储端点数据,一方面作为编辑器使用的数据,根据后续的道路修改以及使用中发现的问题,重新加载修改,另一方面,在游戏过程中,这部分数据也是用于标识虚拟路段之间连接关系的重要依据。此外,还需要保存每个虚拟路段内填充的路点数据,用来快速计算车辆在虚拟路段内的位置。
在虚拟路段内填充路点时,可以采用密度为每隔10米生成一个路点。考虑到竞速类游戏的虚拟车辆移动速度较快,车身长度通常位于3-5米之间,经过实际测试发现,10米的间距对于虚拟赛道计算的实时性和准确性都能够满足实际需求,因此,最终将路点密度设置为该水平。
由于端点之间的虚拟路段是采用贝塞尔曲线进行拟合的,因此,可以通过曲线插值的方式来算出路点坐标。又由于贝塞尔曲线的参数t沿曲线长度不是均匀分布的,因此插值过程需要分为两步进行,首先采用曲线积分计算得到曲线长度,然后再根据曲线长度计算得到参数t,从而得到插值点坐标。
采用数值方法求解曲线积分需要使用函数的一阶导函数,记为f′(t)。由贝塞尔曲线的定义式可知,对于给定参数t,导函数的计算结果仍是一个三维向量。曲线长度可以通过求解积分
Figure BDA0002347843970000121
来得到,v∈[0,1],表示t从0变化到v所经过的曲线长度,若v取1,则计算结果对应整条贝塞尔曲线的长度。因此,利用复化Simpson公式来来进行求解,得到近似计算结果如下:
Figure BDA0002347843970000122
在计算过程中,需要将整个积分区间等分为2m段。参数m用来控制积分的子区间数量,其会影响计算结果的精度,通过分别计算各子区间的曲线长度近似值,相加后得到整段曲线的长度。h是子区间的长度,即h=(v-0)/2m。
当参数v=1时,即可得到整条虚拟路段曲线的长度。而填充路点的过程便是求解一系列参数ti,以使curve_length(ti)=i*10。该过程可以通过牛顿迭代法来实现。牛顿迭代法通过迭代的方式来求解方程,其迭代关系式为
Figure BDA0002347843970000123
其结束条件为达到最大迭代次数或者两次迭代的结果差量小于预设阈值。假设曲线的总长度为S,对于给定的曲线长度L,可以初始化x0=L/S,然后迭代求解正确的参数t,进而带入曲线函数,求出从起点出发,沿曲线经过长度L后,对应的路点坐标。
可选地,步骤S14,按照预设间距在多个虚拟路段中每个虚拟路段上生成多个路点,得到目标虚拟赛道还可以包括以下执行步骤:
步骤S144,如果当前虚拟路段上最后一个生成的路点与第一端点之间的第一长度小于预设间距,则将下一个虚拟路段上的首个生成的路点对应的曲线长度设置为第二长度,其中,第二长度为预设间距与第一长度的差值;
步骤S145,如果多条虚拟路段同时汇入第一端点,则计算多条虚拟路段中每条虚拟路段上最后一个生成的路点与第一端点之间的长度均值,得到第三长度,并且在第三长度小于预设间距时,将下一个虚拟路段上的首个生成的路点对应的曲线长度设置为第四长度,其中,第四长度为预设间距与第三长度的差值。
在实际计算过程中,由于虚拟路段的曲线长度通常不是10的整倍数,为了确保虚拟路段衔接处的路点间距也近似等于10,因此在一个虚拟路段计算结束之后,会记录最后一个路点到曲线末端的距离l,则下一个虚拟路段的首个路点对应的曲线长度应当为10-l。如果有多个虚拟路段汇入了同一个端点,则将多个虚拟路段的剩余长度取平均数后赋值给l。
可选地,在步骤S14,按照预设间距在多个虚拟路段中每个虚拟路段上生成多个路点,得到目标虚拟赛道之后,还可以包括以下执行步骤:
步骤S17,采用键值对的方式对每个虚拟路段上生成的多个路点的信息进行存储,其中,键值对的键为每个虚拟路段的首尾端点标识组合,键值对的值为每个虚拟路段上生成的多个路点构成的路点序列,多个路点的信息包括:每个路点的位置信息和朝向信息。
路点的存储格式为一个图,每个元素为一个键-值对。由于每个虚拟路段可以采用起点编号和终点编号来唯一标识,因此,可以将编号的组合作为查询的键,虚拟路段内的路点序列作为查询得到的值,由此在比赛过程中,当虚拟车辆驶入一个虚拟路段时,可以通过起点编号和终点编号来快速获取该虚拟路段上的路点序列{di},进而更新虚拟车辆在该虚拟路段内的位置变化。在保存路点时,需要同时保存位置和朝向信息,其中,朝向信息可以通过曲线的导函数f′(t)来求得。
根据本发明其中一实施例,还提供了一种基于虚拟赛道的游戏数据获取方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
该方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,移动终端可以包括一个或多个处理器(处理器可以包括但不限于中央处理器(CPU)、图形处理器(GPU)、数字信号处理(DSP)芯片、微处理器(MCU)或可编程逻辑器件(FPGA)等的处理装置)和用于存储数据的存储器。可选地,上述移动终端还可以包括用于通信功能的传输设备以及输入输出设备。本领域普通技术人员可以理解,上述结构描述仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端还可包括比上述结构描述更多或者更少的组件,或者具有与上述结构描述不同的配置。
存储器可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的基于虚拟赛道的游戏数据获取方法对应的计算机程序,处理器通过运行存储在存储器内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的基于虚拟赛道的游戏数据获取方法。存储器可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器可进一步包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输设备用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输设备包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
显示设备可以例如触摸屏式的液晶显示器(LCD)和触摸显示器(也被称为“触摸屏”或“触摸显示屏”)。该液晶显示器可使得用户能够与移动终端的用户界面进行交互。在一些实施例中,上述移动终端具有图形用户界面(GUI),用户可以通过触摸触敏表面上的手指接触和/或手势来与GUI进行人机交互,此处的人机交互功能可选的包括如下交互:创建网页、绘图、文字处理、制作电子文档、游戏、视频会议、即时通信、收发电子邮件、通话界面、播放数字视频、播放数字音乐和/或网络浏览等、用于执行上述人机交互功能的可执行指令被配置/存储在一个或多个处理器可执行的计算机程序产品或可读存储介质中。
在本实施例中提供了一种运行于上述移动终端的基于虚拟赛道的游戏数据获取方法,图3是根据本发明其中一实施例的基于虚拟赛道的游戏数据获取方法的流程图,如图3所示,该方法包括如下步骤:
步骤S30,获取游戏场景内的目标虚拟赛道,其中,目标虚拟赛道是按照预设间距在初始虚拟赛道中每个虚拟路段上生成多个路点后得到的虚拟赛道,初始虚拟赛道基于预先配置的端点数据生成,初始虚拟赛道由多个虚拟路段拼接而成,多个虚拟路段中每个虚拟路段由两个相邻端点确定;
步骤S32,确定虚拟载具在目标虚拟赛道上的路点更新方式;
步骤S34,基于路点更新方式获取与虚拟载具关联的游戏数据。
通过上述步骤,可以采用获取游戏场景内的目标虚拟赛道,该目标虚拟赛道是按照预设间距在初始虚拟赛道中每个虚拟路段上生成多个路点后得到的虚拟赛道,初始虚拟赛道基于预先配置的端点数据生成,初始虚拟赛道由多个虚拟路段拼接而成,多个虚拟路段中每个虚拟路段由两个相邻端点确定的方式,通过确定虚拟载具在目标虚拟赛道上的路点更新方式以及基于路点更新方式获取与虚拟载具关联的游戏数据,达到了既可以充分发挥路点自动生成方式对虚拟赛道信息的描述能力,又可以满足复杂赛道需求的目的,从而实现了通过路点配置在结构简单与结构复杂的虚拟赛道上均能够灵活和准确地发挥作用,满足竞速类游戏在虚拟赛道上的功能扩展需求、获得的游戏数据也更加可靠的技术效果,进而解决了相关技术中所提供的竞速类游戏中采用的虚拟赛道生成方式效率较低、准确性较差,无法实现虚拟赛道相关的复杂计算的技术问题。
在一个可选实施例中,可以将离散的路点数据按照所归属的虚拟路段进行整理,每个虚拟路段可以采用两端的端点编号进行索引,内部的路点则按序存储为一个列表,从而可以在路点***中保留虚拟路段之间的连接关系。当进入竞速比赛时,加载赛道对应的路点数据,初始化各个端点到终点的距离,并对路点数据和初始化结果进行缓存。在车辆行驶过程中,记录已行驶虚拟路段。采用缓存的路点数据和初始化结果,以及记录的已行驶虚拟路段,便可以根据虚拟车辆当前所在的虚拟路段快速估算出剩余赛道长度,以及不同路线选择对应的赛道总长度,从而计算得到虚拟车辆当前已完成进度和不同虚拟车辆之间的排名关系等与虚拟载具关联的游戏数据。
在虚拟车辆世界坐标到虚拟赛道空间的转换过程中,首先需要确定虚拟车辆在虚拟赛道上的具***置。在路点数据已知的情况下,可以查找距离虚拟车辆当前位置最近的路点,然后将该路点作为虚拟车辆在虚拟赛道中的映射位置。在一个可选实施例中,可以采用分治策略,首先对整个空间中的点按照坐标范围进行划分,对于待查询的点,按照其坐标值快速地排列出一些距离较远的点,然后在剩余的子集内查找最近点,例如:四叉树和八叉树等。这种方法效率比遍历法更高,但仍然具有一定的开销。由于虚拟车辆行驶是一个连续的过程,虚拟车辆坐标不会在空间中随意变化,基于这一约束,可以将搜索的数据量减小到常数量级。
在比赛开始之前,首先加载虚拟赛道对应的路点数据,并且采用虚拟车辆出生点的坐标来初始化赛道信息。在路点编辑阶段,约定在虚拟赛道起点位置和终点位置附近分别设置一个端点。但是,由于游戏内的一些需求,可能会在起点位置之前和终点位置之后继续延伸一段道路,因此,不能简单地将第一个端点作为起点,需要采用遍历法查找距离虚拟车辆起始坐标最近的端点。然后,再将虚拟车辆所在虚拟路段初始化为与起点相连的虚拟路段,对应路点序号可以直接初始化为0,即使虚拟车辆到虚拟路段的第一个路点有偏移,也可以在后续的更新过程中自行修正。
可选地,在步骤S32中,确定虚拟载具在目标虚拟赛道上的路点更新方式可以包括以下执行步骤:
步骤S321,根据虚拟载具的行驶轨迹获取虚拟载具在当前虚拟路段上的当前路点;
步骤S322,如果根据与当前路点相邻的下一个路点确定当前虚拟路段未发生路段切换,则采用第一路点更新方式,如果根据与当前路点相邻的下一个路点确定当前虚拟路段发生路段切换,则采用第二路点更新方式;
步骤S323,判断虚拟载具是否抵达目标虚拟赛道的终止端点,如果是,则停止路点更新,如果否,则返回步骤S321。
在根据虚拟载具的行驶轨迹获取虚拟载具在当前虚拟路段上的当前路点之后,需要根据与当前路点相邻的下一个路点所在位置来判断当前虚拟路段是否会发生路段切换,进而确定对应的路点更新方式。即,如果根据与当前路点相邻的下一个路点确定当前虚拟路段未发生路段切换,则采用第一路点更新方式,如果根据与当前路点相邻的下一个路点确定当前虚拟路段发生路段切换,则采用第二路点更新方式。
可选地,在步骤S32中,确定虚拟载具在目标虚拟赛道上的路点更新方式还可以包括以下执行步骤:
步骤S324,获取虚拟载具在当前图像帧中的位置与上一个图像帧中的位置进行比较,得到位置变化量;
步骤S325,将位置变化量与当前路点的朝向信息进行比较,确定虚拟载具的行驶方向;
步骤S326,基于行驶方向获取与当前路点相邻的下一个路点。
虚拟车辆在行驶过程中,坐标变化是一个连续的过程,通常不会存在较大幅度的突变,具有很强的局部性。当虚拟车辆在同一虚拟路段内移动时,可以简单地比较虚拟车辆到当前路点和下一路点的距离,然后将距离较短的路点更新为虚拟车辆的当前路点。由于路点密度较大,实际上是采用连续的小线段来对弯道做近似,因此这种直线距离的比较是可行的。考虑到虚拟车辆也有可能逆行,为此可以在更新路点之前,首先比较虚拟车辆当前位置和上一帧位置的变化量,然后再与当前路点的朝向进行比较,推算出虚拟车辆的行驶方向,从而决定是采用前方的路点还是后方的路点作为比较对象。
在一个可选实施例中,如果与当前路点相邻的下一个路点位于当前虚拟路段,且当前虚拟路段不存在并行虚拟路段(并行虚拟路段是指具有相同起始点的虚拟路段),则比较当前路点与虚拟载具之间的第一距离和下一个路点与虚拟载具之间的第二距离,并在第一距离小于或等于第二距离时,保持当前路点不变,或者,在第一距离大于第二距离时,将下一个路点更新为当前路点。
在一个可选实施例中,如果当前虚拟路段存在并行虚拟路段,且虚拟载具与当前虚拟路段上相邻的下一个路点之间的第三距离小于或等于虚拟载具与并行虚拟路段上相邻的下一个路点之间的第四距离,则比较当前路点与虚拟载具之间的第一距离和当前虚拟路段的下一个路点与虚拟载具之间的第二距离,并在第一距离小于或等于第二距离时,保持当前路点不变,或者,在第一距离大于第二距离时,将当前虚拟路段的下一个路点更新为当前路点。
在一个可选实施例中,如果当前虚拟路段存在并行虚拟路段,且虚拟载具与当前虚拟路段上相邻的下一个路点之间的第三距离大于虚拟载具与并行虚拟路段上相邻的下一个路点之间的第四距离,则将虚拟载具从当前虚拟路段切换至并行虚拟路段;比较当前路点与虚拟载具之间的第一距离和并行虚拟路段的下一个路点与虚拟载具之间的第五距离,并在第一距离小于或等于第五距离时,保持当前路点不变,或者,在第一距离大于第五距离时,将并行虚拟路段的下一个路点更新为当前路点。
在一个可选实施例中,如果与当前路点相邻的下一个路点位于与当前虚拟路段邻接的下一个虚拟路段,且当前虚拟路段与下一个虚拟路段的邻接处不存在其余虚拟路段,则比较当前路点与虚拟载具之间的第一距离和下一个路点与虚拟载具之间的第六距离,并在第一距离小于或等于第六距离时,保持当前路点不变,或者,在第一距离大于第六距离时,将下一个路点更新为当前路点。
在一个可选实施例中,如果与当前路点相邻的下一个路点位于与当前虚拟路段邻接的多个并行虚拟路段,则对多个并行虚拟路段进行初始化处理,得到处理结果;基于处理结果从多个并行虚拟路段中选取最近下一个路点,比较当前路点与虚拟载具之间的第一距离和最近下一个路点与虚拟载具之间的第七距离,并在第一距离小于或等于第七距离时,保持当前路点不变,或者,在第一距离大于第七距离时,将最近下一个路点更新为当前路点。
通过上述可选实施例可知,当虚拟车辆行驶到虚拟路段连接处时,会面临虚拟路段的切换。由于正向行驶和逆向行驶的情况是对称的,因此针对正向行驶的情况加以说明,而逆向行驶的计算过程不再赘述。如果前方没有道路分叉情况,则处理方法相对较为简单,与同一虚拟路段相类似,只是下一路点更新为前方虚拟路段的第一个路点。如果距离新的路点比较近,则触发虚拟路段切换。如果距离当前虚拟路段的最后一个路点更近,则认为车辆依然在当前虚拟路段内,下一帧再判断是否切换到前方虚拟路段。
如果虚拟路段末尾为一个岔路口,则需要判断应该将虚拟车辆切换到哪个虚拟路段上。定义虚拟车辆到虚拟路段的距离为虚拟路段内所有路点到车辆距离的最小值。粗略地,可以将虚拟车辆在虚拟路段内对应的当前路点到自身的距离作为度量依据。如果路点没有正确刷新,则虚拟车辆对应的当前路点可能并非最近路点。在出现这种情况时,可以通过其他方式对道路信息进行修正。在发生明显错误之前,依然可以将虚拟车辆到当前路点的距离视为到虚拟路段的距离,此时仍然认为虚拟车辆对应的当前路点即为游戏场景内距离虚拟车辆最近的路点。然而,在岔路口处,虚拟车辆到各个岔路的距离很容易出现抖动,例如:突然转向或者碰撞导致虚拟车辆偏离原本的行驶路线,此时便可能对即将切换的虚拟路段产生误判。为了保留一定的容错能力,可以对前方几个岔路的虚拟路段进行初始化,即认为虚拟车辆可能进入当前虚拟路段前方连接的任意一个虚拟路段。然后将这些岔路虚拟路段的路点数据都加载到内存,并保持同步刷新,以便根据虚拟车辆位置分别计算虚拟车辆在这些虚拟路段上的最近点。如果检测到虚拟车辆到其他虚拟路段的路点更近,则认为虚拟车辆其实已经驶离当前虚拟路段,并将虚拟车辆切换到更近的虚拟路段上。这样,即使在切换阶段发生了误判,仍可以在后续的更新中,通过比较虚拟车辆到多个并行虚拟路段的距离,将虚拟车辆修正到正确的虚拟路段上。
可选地,在步骤S32中,确定虚拟载具在目标虚拟赛道上的路点更新方式还可以包括以下执行步骤:
步骤S327,如果虚拟载具与当前路点之间的水平距离大于第一预设阈值或者虚拟载具在正常行驶状态下与当前路点之间的高度差大于第二预设阈值,则以虚拟载具的位置为基准进行空间划分,得到多个子空间;
步骤S328,从多个子空间中获取与虚拟载具距离最近的路点,并将当前路点修正为获取到的路点。
上述路点更新方式通常建立在虚拟车辆坐标变化的局部性和更新计算的正确性假设之上,但是虚拟车辆可能会由于技能释放等原因发生瞬移或速度的显著提升,从而在短时间内发生较大的位置变化,或者在某些特殊弯道,路点更新失败,都有可能使得更新策略失效。例如:在一个U型弯前半段的某处未能正确更新路点,虚拟车辆已经过弯,但路点更新落后于虚拟车辆位置,路点的进度可能仍在弯道之前,那么行驶方向与当前路点的朝向已经相反,后续的路点更新必然都无法正确进行。此外,当多条岔路并行时,如果虚拟车辆在行驶一段距离之后,由于缺乏地形限制,发生了路线切换,此时虚拟车辆可能已经发生过若干次虚拟路段的切换,无法再获取到其他并行虚拟路段的信息,也会导致路点更新失败。图4是根据本发明其中一可选实施例的路点更新失败的示意图,如图4所示,圆点表示端点,虚拟车辆经由虚拟路段a驶入虚拟路段c,此时由于c和d之间缺少路障的阻拦,因此虚拟车辆可能由虚拟路段c直接驶入虚拟路段d。但是虚拟路段c和虚拟路段d缺少相同的起始点,无法将虚拟路段c和虚拟路段d判定为并行虚拟路段,因此无法通过上述刷新机制将虚拟车辆切换到虚拟路段d。
为此,需要对路点进行修正。由于虚拟车辆与虚拟路段之间的对应关系已经发生错乱,局部的距离比较是无效的,因此,只能通过全局的计算来查找距离虚拟车辆最近的路点。在一个可选实施例中,可以采用八叉树来实现最近点的求解。八叉树采用的是分治的策略。在数据初始化阶段,将整个空间按照坐标范围划分成8个子空间,并对每个子空间递归地继续划分,直到每个子空间足够小或者子空间内包含的路点数量足够少。当搜索虚拟车辆的最近路点时,根据输入的车辆坐标可以直接将搜索范围缩小到靠近虚拟车辆的若干个子空间,那些距离过远的子空间则直接进行剪枝优化,从而避免与所有路点逐一比较,再得到最近点。在得到最近路点之后,可以获知虚拟车辆当前所在的虚拟路段,以及虚拟路段内对应的路点序号,然后再根据这些数据来修正路点数据。
虽然八叉树减少了需要比较的路点数量,但依然有不小的计算量,为了减少搜索的次数,我们对修正触发的条件做了细致的设计,尽量保证只在路点确实出现更新错误,并且自我纠错无望时才触发修正。首先是车辆到当前路点的距离超过阈值,出现更新错误时,由于路点无法再跟上车辆坐标的变化,它到车的距离也会异常增大,我们设定车辆到当前路点的水平距离超过50米时,触发强制修正。另一种情况是车辆到当前路点之间存在明显高度差,并且车辆不是腾空状态,这时我们认为车辆已发生路线切换,需要触发车辆对应路点的修正。
可选地,在步骤S34中,基于路点更新方式获取与虚拟载具关联的游戏数据可以包括以下执行步骤:
步骤S341,基于路点更新方式确定虚拟载具在当前虚拟路段上的当前路点;
步骤S342,获取第一赛道长度和第二赛道长度,其中,第一赛道长度为虚拟载具从目标虚拟赛道的起始端点行驶至当前路点的已行驶赛道长度,第二赛道长度为虚拟载具从当前路点至目标虚拟赛道的终止端点的剩余赛道长度;
步骤S343,对第一赛道长度和第二赛道长度进行求和运算,得到赛道总长度;
步骤S344,对第一赛道长度和赛道总长度进行除法运算,得到虚拟载具已完成的赛道进度。
在竞速类游戏的赛道进度计算过程中,通常会计算虚拟车辆已完成的赛道百分比,从而辅助游戏玩家估算剩余的赛道长度,并合理安排后续的操作策略,例如:是否使用道具和技能等。赛道进度可以采用如下公式加以计算:
percent=Lpassed/(Lpassed+Lleft)
其中,Lpassed为虚拟车辆已行驶过的赛道长度,Lleft为剩余的赛道长度。需要说明的是,此处分母未采用赛道总长度是考虑到存在岔路时,根据游戏玩家路线选择差异,赛道总长度可能会发生变化。
可选地,在步骤S342中,获取第一赛道长度可以包括以下执行步骤:
步骤S3421,对虚拟载具在当前虚拟路段之前已行驶的多个虚拟路段长度进行累加,得到第一计算结果;
步骤S3422,确定虚拟载具从当前虚拟路段的起始端点行驶至当前路点所经过的第一路点数量,并将第一路点数量与预设间距进行乘法运算,得到第二计算结果;
步骤S3423,对第一计算结果和第二计算结果进行求和运算,得到第一赛道长度。
Lpassed的计算相对简单,可以将虚拟车辆已经驶出的虚拟路段长度进行累加,再加上当前虚拟路段上已行驶过的路点数与路点间距的乘积,便近似得到Lpassed。虽然采用路点数量估算出的道路长度会与实际长度存在一定偏差,但是考虑驾驶全程的长度,这个误差是可以接受的。另外对于游戏玩家而言,起点和终点附近的百分比是敏感数据。在UI显示时,可以对计算得到的进度百分比进行取整处理,那么起点处的百分比应该是从0开始的个位数字,而在接近终点时,百分比应当从90逐渐增大,并在冲线时达到100。这两个位置如果百分比计算错误,很容易被游戏玩家发现。而赛道中段,在进度上存在几个百分比的偏差,并不会有明显的感觉,例如:70%和72%,游戏玩家难以获知虚拟车辆在整条赛道的准确位置,也就不会对这种误差产生明显的感觉,因此,不再引入额外开销来计算虚拟路段的准确长度。
可选地,在步骤S342中,获取第二赛道长度可以包括以下执行步骤:
步骤S3424,确定虚拟载具当前路点至当前虚拟路段的终止端点之间尚未行驶的第二路点数量,并将第二路点数量与预设间距进行乘法运算,得到第三计算结果;
步骤S3425,如果当前虚拟路段的终止端点与目标虚拟赛道的终止端点直接相连,则将当前虚拟路段的终止端点与目标虚拟赛道的终止端点之间的赛道长度确定为第四计算结果;如果当前虚拟路段的终止端点未与目标虚拟赛道的终止端点直接相连,则将当前虚拟路段的终止端点与下一个端点之间的赛道长度以及下一个端点与目标虚拟赛道的终止端点之间的赛道长度的最小和值确定为第四计算结果;
步骤S3426,对第三计算结果和第四计算结果进行求和运算,得到第二赛道长度。
由于岔路的存在,Lleft的取值可能不唯一,假设游戏玩家在剩余比赛中均选择最优路径,那么为了提高计算Lleft的效率,在数据初始化阶段额外缓存了各个端点到终点的最小距离近似值,算法采用递归加动态规划的思路。即对于每一个已算出最小距离的端点,都会将结果保存下来,如果再次使用到该结果,则可以直接读取而不必重复计算。对于每一个端点i,其到终点T的最短距离可按照如下规则计算:
Figure BDA0002347843970000211
可选地,在步骤S34中,基于路点更新方式获取与虚拟载具关联的游戏数据可以包括以下执行步骤:
步骤S345,基于路点更新方式确定虚拟载具在当前虚拟路段上的当前路点;
步骤S346,获取第二赛道长度,其中,第二赛道长度为虚拟载具从当前路点至目标虚拟赛道的终止端点的剩余赛道长度;
步骤S347,根据第二赛道长度确定虚拟载具的竞速排名结果。
当游戏场景中存在不同路线时,可以将虚拟车辆的坐标位置实时映射到正确的虚拟赛道分支上,并为不同路线上的虚拟车辆提供具有可比性的赛道进度计算,从而确保在虚拟车辆汇入至相同路线时,虚拟赛道进度和排名信息不会出现前后不一致的问题。例如:虚拟赛道内存在两条不同的路线都可以通向终点,A玩家选择了较长的路线,由于虚拟车辆属性较强,因此在相同时长内可以行驶更长的里程,而B玩家车速较慢,行驶里程不及A玩家,但是由于B玩家选择了较近的路线,仍然有可能领先于A玩家。即,虚拟车辆属性较强但是未必排名靠前。因此,需要提供一个适用于不同路线的判别标准,以避免在两个虚拟车辆交汇时,出现排名靠前的虚拟车辆反而处于落后位置的情况。
在竞速类游戏的实时排名计算过程中,为了使得游戏玩家及时获知自身所操控的虚拟车辆当前所处的名次,并营造出追逐的紧张感。在只有一条路线的虚拟赛道上,可以直接比较虚拟车辆的赛道进度或者已行驶的距离,数值大者排名靠前。但是如果虚拟赛道里存在岔路,则行驶路程长的虚拟车辆可能是绕了远路,其排名未必靠前。因此,改用虚拟车辆到终点之间的距离作为排名计算依据。无论游戏玩家的历史路线如何,依然假定游戏玩家会在剩余的比赛中选择最优路线,因此,排名计算可以等价于对Lleft的比较,距离终点更近的虚拟车辆排名靠前。
可选地,在步骤S34中,基于路点更新方式获取与虚拟载具关联的游戏数据可以包括以下执行步骤:
步骤S348,基于路点更新方式确定虚拟载具在当前虚拟路段上的当前路点;
步骤S349,利用当前路点获取赛道预测信息。
另外,上述路点配置与更新方式还可以为游戏内设置的其他玩法和功能提供可靠的数据基础,可以快速定位虚拟车辆前方或后方一段距离对应的路面位置,以及一定范围内的道路走向,从而为驾驶辅助和其他玩法***提供可靠的数据支持。例如:为自动驾驶模式设定下一个目标点以控制虚拟车辆转向,为帮助闪现类技能计算跳跃目标的坐标和朝向,判断虚拟车辆是否已脱离赛道并在必要时将虚拟车辆重置回虚拟赛道上。由此可见,基于道路预测信息可以进一步开发自动驾驶、人工智能设计、操作辅助等功能,或者制作道具放置和位置变化相关的虚拟车辆技能。
可选地,在步骤S349中,利用当前路点获取赛道预测信息可以包括以下执行步骤:
步骤S3491,获取待行驶赛道长度;
步骤S3492,对待行驶赛道长度和预设间距进行除法运算,得到待经过路点数量;
步骤S3493,利用当前路点和待经过路点数量预测虚拟载具在按照待行驶赛道长度行驶过后的位置数据。
在竞速类游戏的行驶预测相关计算过程中,很多玩法不仅依赖于虚拟车辆当前位置,有时还需要获取虚拟赛道前方一定距离的位置,或者读取虚拟车辆在未来一小段时间内会经过的道路信息。通过将虚拟赛道划分为多个虚拟路段,虽然需要考虑虚拟路段之间的衔接关系,但是通过合理的设计可以将这部分开销控制在合理范围内。例如:需要获取虚拟赛道前方L米位置处的坐标,则令n=L/10,将距离转化为路点的个数。首先判断当前虚拟路段剩余的路点个数是否大于或等于n,如果该条件成立,则直接返回当前路点之后的第n个点即可。如果该条件不成立,则依次检查后续的虚拟路段,并累加虚拟路段内的路点个数,直到累加结果大于或等于n,从中取出第n个路点。如果需要精确计算,则可以先求出虚拟车辆到当前路点的偏移量,并按照需求叠加到目标路点的坐标上。
综上所述,本发明实施例能够实现如下技术效果:
(1)基于对游戏场景内虚拟赛道信息的抽象,可以将虚拟赛道的具体美术表现从逻辑计算中分离出去。在其他类型的游戏中,虚拟游戏角色可以在游戏场景内自由移动,对虚拟游戏角色的坐标约束较少,游戏功能也是围绕虚拟游戏角色的世界坐标来设置的。然而,在竞速类游戏中的虚拟车辆移动是与虚拟赛道呈强相关,通常需要将虚拟车辆的坐标从世界空间转换至道路空间,即虚拟车辆当前所在虚拟路段以及在虚拟路段上已行驶的距离。由此判断不同虚拟车辆之间的先后关系,推算虚拟车辆已完成的赛道进度,以及实现其他更加复杂的功能。对道路数据的抽象主要是为了在游戏计算中,排除无关因素的干扰,更加方便地将车辆坐标映射至虚拟赛道,并且能够较为容易地获取道路拓扑结构,进而为车辆导航、车辆状态预测、驾驶辅助和其他竞速相关功能的开发提供良好的数据支持。
(2)尽量简化路点数据编辑的复杂度。为了更好地描述道路信息,需要路点能够以相对较高的密度来覆盖全部虚拟赛道。为此,在道路分叉、进入和离开弯道等关键位置标记端点,端点之间的道路则通过贝塞尔曲线进行拟合,只要适当调整端点和曲线控制点的位置,便可以完成对整条虚拟赛道的覆盖。端点之间密度更高的路点可以通过插值计算自动生成。由此在处理复杂赛道时更加灵活和准确,获得的数据也更加可靠。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过软件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
在本实施例中还提供了一种游戏中虚拟赛道的生成装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图5是根据本发明其中一实施例的游戏中虚拟赛道的生成装置的结构框图,如图5所示,该装置包括:第一生成模块10,用于基于端点数据生成初始虚拟赛道,其中,初始虚拟赛道由多个虚拟路段拼接而成,多个虚拟路段中每个虚拟路段由两个相邻端点确定;第二生成模块11,用于按照预设间距在多个虚拟路段中每个虚拟路段上生成多个路点,得到目标虚拟赛道,并在游戏场景内显示目标虚拟赛道。
可选地,第一生成模块10包括:获取单元(图中未示出),用于获取已创建的端点,并为已创建的第一端点分配对应的第一控制点,其中,第一端点与第一控制点之间的相对位置依据与上一个创建的第二端点的位置来确定;调整单元(图中未示出),用于依据第一端点、第一控制点、第二端点以及与第二端点对应的第二控制点的位置变化来调整第二端点与第一端点之间虚拟路段的曲线形状,拟合得到当前虚拟路段;处理单元(图中未示出),用于判断是否存在尚未处理的已创建的端点,如果是,则返回获取单元,如果否,则对拟合得到的全部虚拟路段进行首尾拼接处理,生成初始虚拟赛道。
可选地,第一生成模块10还包括:修正单元(图中未示出),用于利用当前虚拟路段两侧的空气墙和路面模型的碰撞体对第二端点和/或第一端点的位置进行修正。
可选地,第一生成模块10还包括:设定单元(图中未示出),用于采用默认值来设定首个创建的端点与对应控制点之间的相对位置。
可选地,图6是根据本发明其中一可选实施例的游戏中虚拟赛道的生成装置的结构框图,如图6所示,该装置除包括图5所示的所有模块外,上述装置还包括:排序模块12,用于对端点数据中包含的全部端点进行拓扑排序处理,记录每个端点预先配置的第一标识与排序后的第二标识之间的映射关系,得到排序结果;处理模块13,用于按照排序结果重新遍历全部端点,将全部端点中的部分端点的第一标识修改为第二标识,并将处理后端点数据存储至预设数组。
可选地,第二生成模块11包括:确定单元(图中未示出),用于按照预设间距确定多个路点中每个路点在当前虚拟路段上对应的曲线长度;计算单元(图中未示出),用于基于曲线长度推算每个路点在当前虚拟路段上的插值点坐标,生成多个路点;第一处理单元(图中未示出),用于判断是否存在尚未生成路点的虚拟路段,如果是,则返回确定单元,如果否,则得到目标虚拟赛道。
可选地,第二生成模块11还包括:第二处理单元(图中未示出),用于如果当前虚拟路段上最后一个生成的路点与第一端点之间的第一长度小于预设间距,则将下一个虚拟路段上的首个生成的路点对应的曲线长度设置为第二长度,其中,第二长度为预设间距与第一长度的差值;第三处理单元(图中未示出),用于如果多条虚拟路段同时汇入第一端点,则计算多条虚拟路段中每条虚拟路段上最后一个生成的路点与第一端点之间的长度均值,得到第三长度,并且在第三长度小于预设间距时,将下一个虚拟路段上的首个生成的路点对应的曲线长度设置为第四长度,其中,第四长度为预设间距与第三长度的差值。
可选地,如图6所示,该装置除包括图5所示的所有模块外,上述装置还包括:存储模块14,用于采用键值对的方式对每个虚拟路段上生成的多个路点的信息进行存储,其中,键值对的键为每个虚拟路段的首尾端点标识组合,键值对的值为每个虚拟路段上生成的多个路点构成的路点序列,多个路点的信息包括:每个路点的位置信息和朝向信息。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
在本实施例中还提供了一种基于虚拟赛道的游戏数据获取装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图7是根据本发明其中一实施例的基于虚拟赛道的游戏数据获取装置的结构框图,如图7所示,该装置包括:第一获取模块20,用于获取游戏场景内的目标虚拟赛道,其中,目标虚拟赛道是按照预设间距在初始虚拟赛道中每个虚拟路段上生成多个路点后得到的虚拟赛道,初始虚拟赛道基于预先配置的端点数据生成,初始虚拟赛道由多个虚拟路段拼接而成,多个虚拟路段中每个虚拟路段由两个相邻端点确定;确定模块21,用于确定虚拟载具在目标虚拟赛道上的路点更新方式;第二获取模块22,用于基于路点更新方式获取与虚拟载具关联的游戏数据。
可选地,确定模块21包括:第一获取单元(图中未示出),用于根据虚拟载具的行驶轨迹获取虚拟载具在当前虚拟路段上的当前路点;处理单元(图中未示出),用于如果根据与当前路点相邻的下一个路点确定当前虚拟路段未发生路段切换,则采用第一路点更新方式,如果根据与当前路点相邻的下一个路点确定当前虚拟路段发生路段切换,则采用第二路点更新方式;判断单元(图中未示出),用于判断虚拟载具是否抵达目标虚拟赛道的终止端点,如果是,则停止路点更新,如果否,则返回第一获取单元。
可选地,确定模块21还包括:第二获取单元(图中未示出),用于获取虚拟载具在当前图像帧中的位置与上一个图像帧中的位置进行比较,得到位置变化量;第一确定单元(图中未示出),用于将位置变化量与当前路点的朝向信息进行比较,确定虚拟载具的行驶方向;第三获取单元(图中未示出),用于基于行驶方向获取与当前路点相邻的下一个路点。
可选地,处理单元(图中未示出),用于如果与当前路点相邻的下一个路点位于当前虚拟路段,且当前虚拟路段不存在并行虚拟路段,则比较当前路点与虚拟载具之间的第一距离和下一个路点与虚拟载具之间的第二距离,并在第一距离小于或等于第二距离时,保持当前路点不变,或者,在第一距离大于第二距离时,将下一个路点更新为当前路点。
可选地,处理单元(图中未示出),用于如果当前虚拟路段存在并行虚拟路段,且虚拟载具与当前虚拟路段上相邻的下一个路点之间的第三距离小于或等于虚拟载具与并行虚拟路段上相邻的下一个路点之间的第四距离,则比较当前路点与虚拟载具之间的第一距离和当前虚拟路段的下一个路点与虚拟载具之间的第二距离,并在第一距离小于或等于第二距离时,保持当前路点不变,或者,在第一距离大于第二距离时,将当前虚拟路段的下一个路点更新为当前路点。
可选地,处理单元(图中未示出),用于如果当前虚拟路段存在并行虚拟路段,且虚拟载具与当前虚拟路段上相邻的下一个路点之间的第三距离大于虚拟载具与并行虚拟路段上相邻的下一个路点之间的第四距离,则将虚拟载具从当前虚拟路段切换至并行虚拟路段;以及比较当前路点与虚拟载具之间的第一距离和并行虚拟路段的下一个路点与虚拟载具之间的第五距离,并在第一距离小于或等于第五距离时,保持当前路点不变,或者,在第一距离大于第五距离时,将并行虚拟路段的下一个路点更新为当前路点。
可选地,处理单元(图中未示出),用于如果与当前路点相邻的下一个路点位于与当前虚拟路段邻接的下一个虚拟路段,且当前虚拟路段与下一个虚拟路段的邻接处不存在其余虚拟路段,则比较当前路点与虚拟载具之间的第一距离和下一个路点与虚拟载具之间的第六距离,并在第一距离小于或等于第六距离时,保持当前路点不变,或者,在第一距离大于第六距离时,将下一个路点更新为当前路点。
可选地,处理单元(图中未示出),用于如果与当前路点相邻的下一个路点位于与当前虚拟路段邻接的多个并行虚拟路段,则对多个并行虚拟路段进行初始化处理,得到处理结果;以及基于处理结果从多个并行虚拟路段中选取最近下一个路点,比较当前路点与虚拟载具之间的第一距离和最近下一个路点与虚拟载具之间的第七距离,并在第一距离小于或等于第七距离时,保持当前路点不变,或者,在第一距离大于第七距离时,将最近下一个路点更新为当前路点。
可选地,确定模块21还包括:划分单元(图中未示出),用于如果虚拟载具与当前路点之间的水平距离大于第一预设阈值或者虚拟载具在正常行驶状态下与当前路点之间的高度差大于第二预设阈值,则以虚拟载具的位置为基准进行空间划分,得到多个子空间;修正单元(图中未示出),用于从多个子空间中获取与虚拟载具距离最近的路点,并将当前路点修正为获取到的路点。
可选地,第二获取模块22包括:第二确定单元(图中未示出),用于基于路点更新方式确定虚拟载具在当前虚拟路段上的当前路点;第四获取单元(图中未示出),用于获取第一赛道长度和第二赛道长度,其中,第一赛道长度为虚拟载具从目标虚拟赛道的起始端点行驶至当前路点的已行驶赛道长度,第二赛道长度为虚拟载具从当前路点至目标虚拟赛道的终止端点的剩余赛道长度;第一计算单元(图中未示出),用于对第一赛道长度和第二赛道长度进行求和运算,得到赛道总长度;第二计算单元(图中未示出),用于对第一赛道长度和赛道总长度进行除法运算,得到虚拟载具已完成的赛道进度。
可选地,第四获取单元(图中未示出),用于对虚拟载具在当前虚拟路段之前已行驶的多个虚拟路段长度进行累加,得到第一计算结果;确定虚拟载具从当前虚拟路段的起始端点行驶至当前路点所经过的第一路点数量,并将第一路点数量与预设间距进行乘法运算,得到第二计算结果;以及对第一计算结果和第二计算结果进行求和运算,得到第一赛道长度。
可选地,第四获取单元(图中未示出),用于确定虚拟载具当前路点至当前虚拟路段的终止端点之间尚未行驶的第二路点数量,并将第二路点数量与预设间距进行乘法运算,得到第三计算结果;如果当前虚拟路段的终止端点与目标虚拟赛道的终止端点直接相连,则将当前虚拟路段的终止端点与目标虚拟赛道的终止端点之间的赛道长度确定为第四计算结果;如果当前虚拟路段的终止端点未与目标虚拟赛道的终止端点直接相连,则将当前虚拟路段的终止端点与下一个端点之间的赛道长度以及下一个端点与目标虚拟赛道的终止端点之间的赛道长度的最小和值确定为第四计算结果;以及对第三计算结果和第四计算结果进行求和运算,得到第二赛道长度。
可选地,第二获取模块22包括:第三确定单元(图中未示出),用于基于路点更新方式确定虚拟载具在当前虚拟路段上的当前路点;第五获取单元(图中未示出),用于获取第二赛道长度,其中,第二赛道长度为虚拟载具从当前路点至目标虚拟赛道的终止端点的剩余赛道长度;第四确定单元(图中未示出),用于根据第二赛道长度确定虚拟载具的竞速排名结果。
可选地,第二获取模块22包括:第五确定单元(图中未示出),用于基于路点更新方式确定虚拟载具在当前虚拟路段上的当前路点;第六获取单元(图中未示出),用于利用当前路点获取赛道预测信息。
可选地,第六获取单元(图中未示出),用于获取待行驶赛道长度;对待行驶赛道长度和预设间距进行除法运算,得到待经过路点数量;以及利用当前路点和待经过路点数量预测虚拟载具在按照待行驶赛道长度行驶过后的位置数据。
本发明的实施例还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S1,基于端点数据生成初始虚拟赛道,其中,初始虚拟赛道由多个虚拟路段拼接而成,多个虚拟路段中每个虚拟路段由两个相邻端点确定;
S2,按照预设间距在多个虚拟路段中每个虚拟路段上生成多个路点,得到目标虚拟赛道,并在游戏场景内显示目标虚拟赛道。
可选地,存储介质还被设置为存储用于执行以下步骤的计算机程序:
S1,获取游戏场景内的目标虚拟赛道,其中,目标虚拟赛道是按照预设间距在初始虚拟赛道中每个虚拟路段上生成多个路点后得到的虚拟赛道,初始虚拟赛道基于预先配置的端点数据生成,初始虚拟赛道由多个虚拟路段拼接而成,多个虚拟路段中每个虚拟路段由两个相邻端点确定;
S2,确定虚拟载具在目标虚拟赛道上的路点更新方式;
S3,基于路点更新方式获取与虚拟载具关联的游戏数据。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,基于端点数据生成初始虚拟赛道,其中,初始虚拟赛道由多个虚拟路段拼接而成,多个虚拟路段中每个虚拟路段由两个相邻端点确定;
S2,按照预设间距在多个虚拟路段中每个虚拟路段上生成多个路点,得到目标虚拟赛道,并在游戏场景内显示目标虚拟赛道。
可选地,在本实施例中,上述处理器还可以被设置为通过计算机程序执行以下步骤:
S1,获取游戏场景内的目标虚拟赛道,其中,目标虚拟赛道是按照预设间距在初始虚拟赛道中每个虚拟路段上生成多个路点后得到的虚拟赛道,初始虚拟赛道基于预先配置的端点数据生成,初始虚拟赛道由多个虚拟路段拼接而成,多个虚拟路段中每个虚拟路段由两个相邻端点确定;
S2,确定虚拟载具在目标虚拟赛道上的路点更新方式;
S3,基于路点更新方式获取与虚拟载具关联的游戏数据。
可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (19)

1.一种游戏中虚拟赛道的生成方法,其特征在于,包括:
基于端点数据生成初始虚拟赛道,其中,所述初始虚拟赛道由多个虚拟路段拼接而成,所述多个虚拟路段中每个虚拟路段由两个相邻端点确定;
按照预设间距在所述多个虚拟路段中每个虚拟路段上生成多个路点,得到目标虚拟赛道,并在游戏场景内显示所述目标虚拟赛道。
2.根据权利要求1所述的方法,其特征在于,基于所述端点数据生成所述初始虚拟赛道包括:
获取步骤,获取已创建的端点,并为已创建的第一端点分配对应的第一控制点,其中,所述第一端点与所述第一控制点之间的相对位置依据与上一个创建的第二端点的位置来确定;
调整步骤,依据所述第一端点、所述第一控制点、所述第二端点以及与所述第二端点对应的第二控制点的位置变化来调整所述第二端点与所述第一端点之间虚拟路段的曲线形状,拟合得到当前虚拟路段;
处理步骤,判断是否存在尚未处理的所述已创建的端点,如果是,则返回所述获取步骤,如果否,则对拟合得到的全部虚拟路段进行首尾拼接处理,生成所述初始虚拟赛道。
3.根据权利要求2所述的方法,其特征在于,基于所述端点数据生成所述初始虚拟赛道还包括:
利用所述当前虚拟路段两侧的空气墙和路面模型的碰撞体对所述第二端点和/或所述第一端点的位置进行修正。
4.根据权利要求2所述的方法,其特征在于,基于所述端点数据生成所述初始虚拟赛道还包括:
采用默认值来设定首个创建的端点与对应控制点之间的相对位置。
5.根据权利要求1所述的方法,其特征在于,在基于所述端点数据生成所述初始虚拟赛道之后,还包括:
对所述端点数据中包含的全部端点进行拓扑排序处理,记录每个端点预先配置的第一标识与排序后的第二标识之间的映射关系,得到排序结果;
按照所述排序结果重新遍历所述全部端点,将所述全部端点中的部分端点的所述第一标识修改为所述第二标识,并将处理后端点数据存储至预设数组。
6.根据权利要求2所述的方法,其特征在于,按照所述预设间距在所述多个虚拟路段中每个虚拟路段上生成所述多个路点,得到所述目标虚拟赛道包括:
确定步骤,按照所述预设间距确定所述多个路点中每个路点在所述当前虚拟路段上对应的曲线长度;
计算步骤,基于所述曲线长度推算每个路点在所述当前虚拟路段上的插值点坐标,生成所述多个路点;
处理步骤,判断是否存在尚未生成路点的虚拟路段,如果是,则返回所述确定步骤,如果否,则得到所述目标虚拟赛道。
7.根据权利要求6所述的方法,其特征在于,按照所述预设间距在所述多个虚拟路段中每个虚拟路段上生成所述多个路点,得到所述目标虚拟赛道还包括:
如果所述当前虚拟路段上最后一个生成的路点与所述第一端点之间的第一长度小于所述预设间距,则将下一个虚拟路段上的首个生成的路点对应的曲线长度设置为第二长度,其中,所述第二长度为所述预设间距与所述第一长度的差值;
如果多条虚拟路段同时汇入所述第一端点,则计算所述多条虚拟路段中每条虚拟路段上最后一个生成的路点与所述第一端点之间的长度均值,得到第三长度,并且在所述第三长度小于所述预设间距时,将下一个虚拟路段上的首个生成的路点对应的曲线长度设置为第四长度,其中,所述第四长度为所述预设间距与所述第三长度的差值。
8.根据权利要求1所述的方法,其特征在于,在按照所述预设间距在所述多个虚拟路段中每个虚拟路段上生成所述多个路点,得到所述目标虚拟赛道之后,还包括:
采用键值对的方式对每个虚拟路段上生成的所述多个路点的信息进行存储,其中,所述键值对的键为每个虚拟路段的首尾端点标识组合,所述键值对的值为每个虚拟路段上生成的所述多个路点构成的路点序列,所述多个路点的信息包括:每个路点的位置信息和朝向信息。
9.一种游戏中虚拟赛道的生成装置,其特征在于,包括:
第一生成模块,用于基于端点数据生成初始虚拟赛道,其中,所述初始虚拟赛道由多个虚拟路段拼接而成,所述多个虚拟路段中每个虚拟路段由两个相邻端点确定;
第二生成模块,用于按照预设间距在所述多个虚拟路段中每个虚拟路段上生成多个路点,得到目标虚拟赛道,并在游戏场景内显示所述目标虚拟赛道。
10.根据权利要求9所述的装置,其特征在于,所述第一生成模块包括:
获取单元,用于获取已创建的端点,并为已创建的第一端点分配对应的第一控制点,其中,所述第一端点与所述第一控制点之间的相对位置依据与上一个创建的第二端点的位置来确定;
调整单元,用于依据所述第一端点、所述第一控制点、所述第二端点以及与所述第二端点对应的第二控制点的位置变化来调整所述第二端点与所述第一端点之间虚拟路段的曲线形状,拟合得到当前虚拟路段;
处理单元,用于判断是否存在尚未处理的所述已创建的端点,如果是,则返回所述获取单元,如果否,则对拟合得到的全部虚拟路段进行首尾拼接处理,生成所述初始虚拟赛道。
11.根据权利要求10所述的装置,其特征在于,所述第一生成模块还包括:
修正单元,用于利用所述当前虚拟路段两侧的空气墙和路面模型的碰撞体对所述第二端点和/或所述第一端点的位置进行修正。
12.根据权利要求10所述的装置,其特征在于,所述第一生成模块还包括:
设定单元,用于采用默认值来设定首个创建的端点与对应控制点之间的相对位置。
13.根据权利要求9所述的装置,其特征在于,所述装置还包括:
排序模块,用于对所述端点数据中包含的全部端点进行拓扑排序处理,记录每个端点预先配置的第一标识与排序后的第二标识之间的映射关系,得到排序结果;
处理模块,用于按照所述排序结果重新遍历所述全部端点,将所述全部端点中的部分端点的所述第一标识修改为所述第二标识,并将处理后端点数据存储至预设数组。
14.根据权利要求10所述的装置,其特征在于,所述第二生成模块包括:
确定单元,用于按照所述预设间距确定所述多个路点中每个路点在所述当前虚拟路段上对应的曲线长度;
计算单元,用于基于所述曲线长度推算每个路点在所述当前虚拟路段上的插值点坐标,生成所述多个路点;
第一处理单元,用于判断是否存在尚未生成路点的虚拟路段,如果是,则返回所述确定单元,如果否,则得到所述目标虚拟赛道。
15.根据权利要求14所述的装置,其特征在于,所述第二生成模块还包括:
第二处理单元,用于如果所述当前虚拟路段上最后一个生成的路点与所述第一端点之间的第一长度小于所述预设间距,则将下一个虚拟路段上的首个生成的路点对应的曲线长度设置为第二长度,其中,所述第二长度为所述预设间距与所述第一长度的差值;
第三处理单元,用于如果多条虚拟路段同时汇入所述第一端点,则计算所述多条虚拟路段中每条虚拟路段上最后一个生成的路点与所述第一端点之间的长度均值,得到第三长度,并且在所述第三长度小于所述预设间距时,将下一个虚拟路段上的首个生成的路点对应的曲线长度设置为第四长度,其中,所述第四长度为所述预设间距与所述第三长度的差值。
16.根据权利要求9所述的装置,其特征在于,所述装置还包括:
存储模块,用于采用键值对的方式对每个虚拟路段上生成的所述多个路点的信息进行存储,其中,所述键值对的键为每个虚拟路段的首尾端点标识组合,所述键值对的值为每个虚拟路段上生成的所述多个路点构成的路点序列,所述多个路点的信息包括:每个路点的位置信息和朝向信息。
17.一种存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行所述权利要求1至8任一项中所述的游戏中虚拟赛道的生成方法。
18.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序被设置为运行时执行所述权利要求1至8任一项中所述的游戏中虚拟赛道的生成方法。
19.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行所述权利要求1至8任一项中所述的游戏中虚拟赛道的生成方法。
CN201911402603.3A 2019-12-31 2019-12-31 游戏中虚拟赛道的生成方法、装置、处理器及电子装置 Active CN111202986B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911402603.3A CN111202986B (zh) 2019-12-31 2019-12-31 游戏中虚拟赛道的生成方法、装置、处理器及电子装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911402603.3A CN111202986B (zh) 2019-12-31 2019-12-31 游戏中虚拟赛道的生成方法、装置、处理器及电子装置

Publications (2)

Publication Number Publication Date
CN111202986A true CN111202986A (zh) 2020-05-29
CN111202986B CN111202986B (zh) 2023-04-25

Family

ID=70780474

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911402603.3A Active CN111202986B (zh) 2019-12-31 2019-12-31 游戏中虚拟赛道的生成方法、装置、处理器及电子装置

Country Status (1)

Country Link
CN (1) CN111202986B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111701242A (zh) * 2020-06-18 2020-09-25 网易(杭州)网络有限公司 一种游戏场景中的路径拟合方法及装置
CN112076477A (zh) * 2020-08-24 2020-12-15 网易(杭州)网络有限公司 虚拟道路的生成方法和装置
CN113051712A (zh) * 2021-02-26 2021-06-29 视伴科技(北京)有限公司 一种赛事活动运行仿真***
CN113298909A (zh) * 2021-04-13 2021-08-24 网易(杭州)网络有限公司 虚拟道路的生成方法、装置、存储介质和处理器
CN113362475A (zh) * 2021-06-29 2021-09-07 视伴科技(北京)有限公司 一种验证已生成的虚拟指路标识的方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070156327A1 (en) * 2005-12-30 2007-07-05 Microsoft Corporation Racing line optimization

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070156327A1 (en) * 2005-12-30 2007-07-05 Microsoft Corporation Racing line optimization

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111701242A (zh) * 2020-06-18 2020-09-25 网易(杭州)网络有限公司 一种游戏场景中的路径拟合方法及装置
CN111701242B (zh) * 2020-06-18 2023-03-17 网易(杭州)网络有限公司 一种游戏场景中的路径拟合方法及装置
CN112076477A (zh) * 2020-08-24 2020-12-15 网易(杭州)网络有限公司 虚拟道路的生成方法和装置
CN112076477B (zh) * 2020-08-24 2024-05-28 网易(杭州)网络有限公司 虚拟道路的生成方法和装置
CN113051712A (zh) * 2021-02-26 2021-06-29 视伴科技(北京)有限公司 一种赛事活动运行仿真***
CN113298909A (zh) * 2021-04-13 2021-08-24 网易(杭州)网络有限公司 虚拟道路的生成方法、装置、存储介质和处理器
CN113362475A (zh) * 2021-06-29 2021-09-07 视伴科技(北京)有限公司 一种验证已生成的虚拟指路标识的方法及装置

Also Published As

Publication number Publication date
CN111202986B (zh) 2023-04-25

Similar Documents

Publication Publication Date Title
CN111202986A (zh) 游戏中虚拟赛道的生成方法、装置、处理器及电子装置
CN111185013B (zh) 基于虚拟赛道的游戏数据获取方法、处理器及电子装置
CN104457772B (zh) 用于对数字化地图数据进行修正的技术
CN111640218B (zh) 一种无人机巡检路线规划方法、装置、终端及存储介质
CN106104656B (zh) 地图信息生成***、方法及程序
Kallmann et al. Navigation meshes and real-time dynamic planning for virtual worlds
US20110302116A1 (en) Data processing device, data processing method, and program
CN107744663B (zh) 人工智能ai单位的寻路方法及装置
CN113191550B (zh) 地图匹配方法及装置
CN110220521A (zh) 一种高精地图的生成方法和装置
Anguelov Video game pathfinding and improvements to discrete search on grid-based maps
CN111679679A (zh) 基于蒙特卡洛树搜索算法的机器人状态规划方法
CN111737389A (zh) 曲线优化方法、装置、设备和介质
CN112090078A (zh) 游戏角色移动控制方法、装置、设备和介质
US9047422B2 (en) Graph based routing for open areas
CN104217580A (zh) 面向车辆群组动画的路网语义建模方法及***
CN104376084A (zh) 路径相似度计算方法和装置
CN110470310A (zh) 自动地图生成
Chand et al. A two-tiered global path planning strategy for limited memory mobile robots
CN104977016A (zh) 导航处理方法及移动智能终端
CN116958308A (zh) 一种路口面边线的修正方法及相关装置
CN116764225A (zh) 一种高效寻路的处理方法、装置、设备及介质
CN112985397B (zh) 机器人轨迹规划方法、装置、存储介质及电子设备
CN116519005B (zh) 一种路径规划方法及装置
CN116572997B (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