本发明涉及3d建模领域,尤其涉及游戏赛道的自动生成方法、终端及存储介质。
背景技术:
在进行3dh5游戏开发时,特别是有赛道内容的游戏,对于游戏内场景和赛道的需求很大,并且随着游戏赛道的越来越复杂,生成游戏赛道的路段需求更加具有多样性以及同类路段之间也会有细微差别,因此会使得构成赛道的路段模型数量加大,在将这些路段模型都打包到游戏资源包中时,由于游戏资源包太大,就会导致游戏运行过程中加载缓慢或者导致游戏闪退。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
技术实现要素:
本发明的主要目的在于提供一种游戏赛道的自动生成方法,旨在解决游戏资源包过大的技术问题。
为实现上述目的,本发明提供一种游戏赛道的自动生成方法,所述游戏赛道的自动生成方法包括以下步骤:
获取游戏对象所在的当前路段,基于所述当前路段以及预设游戏赛道模型确定下一路段的路段类型;
从游戏资源包中获取所述路段类型对应的打点数据;
根据所述打点数据以及所述路段类型对应路段参数生成下一路段;
根据所述预设游戏赛道模型调节所述下一路段的方向,将所述下一路段的头部连接到所述当前路段的尾部。
可选地,所述获取游戏对象所在的当前路段,基于所述当前路段以及预设游戏赛道模型确定下一路段的路段类型的步骤之后,还包括:
所述下一路段的路段类型为弯道时,执行所述从获取游戏对象所在的当前路段,基于所述当前路段以及预设游戏赛道模型确定下一路段的路段类型的步骤;
所述下一路段的路段类型为直道时,确定所述下一路段的长度;
基于所述当前路段以及所述长度生成下一路段。
可选地,所述根据所述预设游戏赛道模型调节所述下一路段的方向,将所述下一路段的头部连接到所述当前路段的尾部的步骤包括:
获取所述当前路段的尾部连接点的第一世界坐标参数,其中,所述第一世界坐标参数包括第一世界坐标和第一旋转向量;
根据所述当前路段的尾部连接点的第一世界坐标参数调整所述下一路段的头部连接点的第二世界坐标参数,以使第二世界坐标参数与所述第一世界坐标参数相同,所述第二世界坐标参数包括第二世界坐标以及第二旋转向量。
可选地,所述根据所述当前路段的尾部连接点的第一世界坐标参数调整所述下一路段的头部连接点的第二世界坐标参数,以使第二世界坐标参数与所述第一世界坐标参数相同的步骤包括:
获取所述下一路段的参考旋转向量;
调整所述参考旋转向量,以使所述下一路段的头部连接点的第二旋转向量与所述当前路段的尾部连接点的第一旋转向量相同;
调整所述下一路段的头部连接点的第二世界坐标,以使所述下一路段的头部连接点的第二世界坐标与所述当前路段的尾部连接点的第一世界坐标相同。
可选地,所述调整所述参考旋转向量,以使所述下一路段的头部连接点的第二旋转向量与所述当前路段的尾部连接点的第一旋转向量相同的步骤包括:
根据所述参考旋转向量、所述第一旋转向量、预设的所述下一路段的头部连接点的第二旋转向量与所述参考旋转向量的第二夹角以及所述头部连接点的预设向量长度确定目标旋转向量;
按照所述目标旋转向量调整所述参考旋转向量。
可选地,所述根据所述预设游戏赛道模型调节所述下一路段的方向,将所述下一路段的头部连接到所述当前路段的尾部的步骤之前,所述游戏赛道的自动生成方法的步骤还包括:
获取所述下一路段对应路段曲线的点数组中的第一坐标和第二坐标;
基于所述第一坐标和所述第二坐标创建第一空节点和第二空节点,以使所述第一空节点的本地坐标与所述第一坐标相同,所述第二空节点的本地坐标与所述第二坐标相同。
根据所述第一空节点的本地坐标和所述第二空节点的本地坐标确定所述当前路段的尾部连接点的第一世界坐标参数;
可选地,所述根据所述第一空节点的本地坐标和所述第二空节点的本地坐标确定所述下一路段的尾部连接点的第一世界坐标参数的步骤包括:
根据所述第一空节点的本地坐标和所述第二空节点的本地坐标得到所述第一空节点的世界坐标和所述第二空节点的世界坐标;
获取所述第一空节点的世界坐标与所述第二空节点的世界坐标的差值;
确定所述差值为所述下一路段的尾部连接点的第一旋转向量,以及确定所述第一空节点的世界坐标为所述下一路段的尾部连接点的第一世界坐标。
可选地,所述根据所述打点数据以及所述路段对应路段参数生成下一路段的步骤包括:
根据所述打点数据确定多条依次连接的路段曲线;
根据所述路段类型对应路段参数确定每条所述路段曲线对应的三维路段;
基于所述路段曲线和所述三维路段生成下一路段。
为实现上述目的,本发明还提供一种终端,所述终端包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的赛道自动生成程序,所述赛道自动生成程序被所述处理器执行时实现如上所述的游戏赛道的自动生成方法的步骤。
此外,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有赛道自动生成程序,所述赛道自动生成程序被处理器执行时实现如上所述的游戏赛道的自动生成方法的步骤。
本发明实施例提出一种游戏赛道的自动生成方法,通过预设游戏赛道模型确定路段的路段模型,并从游戏资源包中获取对应路段类型的打点数据,在当前路段的基础上,根据打点数据和路段对应的路段参数生成下一路段,再根据预设游戏赛道模型调节下一路段的方向,使得下一路段的头部连接到当前路段的尾部,在游戏运行过程中实时生成赛道模型,从而减少了游戏资源报的大小,提高了游戏性能。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的终端结构示意图;
图2为本发明游戏赛道的自动生成方法第一实施例的流程示意图;
图3为本发明游戏赛道的自动生成方法第二实施例的流程示意图;
图4为本发明游戏赛道的自动生成方法第三实施例的流程示意图;
图5为图4中步骤s42的细化流程示意图;
图6为图5中步骤s44的细化流程示意图;
图7为本发明游戏赛道的自动生成方法第四实施例的流程示意图;
图8为本发明游戏赛道的自动生成方法第五实施例的流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例的主要解决方案是:获取游戏对象所在的当前路段,基于所述当前路段以及预设游戏赛道模型确定下一路段的路段类型;从游戏资源包中获取所述路段类型对应的打点数据;根据所述打点数据以及所述路段类型对应路段参数生成下一路段;根据所述预设游戏赛道模型调节所述下一路段的方向,将所述下一路段的头部连接到所述当前路段的尾部。
如图1所示,图1是本发明实施例方案涉及的硬件运行环境的终端结构示意图。
本发明实施例终端可以是pc,也可以是智能手机、平板电脑、便携计算机等具有显示功能以及运算装置的终端设备。
如图1所示,该终端可以包括:处理器1001,例如cpu,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(display)、输入单元比如键盘(keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如wi-fi接口)。存储器1005可以是高速ram存储器,也可以是稳定的存储器(non-volatilememory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
可选地,终端还可以包括摄像头、rf(radiofrequency,射频)电路,传感器、音频电路、wifi模块等等。其中,传感器比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示屏的亮度,接近传感器可在移动终端移动到耳边时,关闭显示屏和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别移动终端姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等,在此不再赘述。
本领域技术人员可以理解,图1中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及赛道自动生成程序。
在图1所示的终端中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的赛道自动生成程序,并执行以下操作:
获取游戏对象所在的当前路段,基于所述当前路段以及预设游戏赛道模型确定下一路段的路段类型;
从游戏资源包中获取所述路段类型对应的打点数据;
根据所述打点数据以及所述路段类型对应路段参数生成下一路段;
根据所述预设游戏赛道模型调节所述下一路段的方向,将所述下一路段的头部连接到所述当前路段的尾部。
进一步地,处理器1001可以调用存储器1005中存储的网络操作控制应用程序,还执行以下操作:
所述下一路段的路段类型为弯道时,执行所述从获取游戏对象所在的当前路段,基于所述当前路段以及预设游戏赛道模型确定下一路段的路段类型的步骤;
所述下一路段的路段类型为直道时,确定所述下一路段的长度;
基于所述当前路段以及所述长度生成下一路段。
进一步地,处理器1001可以调用存储器1005中存储的网络操作控制应用程序,还执行以下操作:
获取所述当前路段的尾部连接点的第一世界坐标参数,其中,所述第一世界坐标参数包括第一世界坐标和第一旋转向量;
根据所述当前路段的尾部连接点的第一世界坐标参数调整所述下一路段的头部连接点的第二世界坐标参数,以使第二世界坐标参数与所述第一世界坐标参数相同,所述第二世界坐标参数包括第二世界坐标以及第二旋转向量。
进一步地,处理器1001可以调用存储器1005中存储的网络操作控制应用程序,还执行以下操作:
获取所述下一路段的参考旋转向量;
调整所述参考旋转向量,以使所述下一路段的头部连接点的第二旋转向量与所述当前路段的尾部连接点的第一旋转向量相同;
调整所述下一路段的头部连接点的第二世界坐标,以使所述下一路段的头部连接点的第二世界坐标与所述当前路段的尾部连接点的第一世界坐标相同。
进一步地,处理器1001可以调用存储器1005中存储的网络操作控制应用程序,还执行以下操作:
根据所述参考旋转向量、所述第一旋转向量、预设的所述下一路段的头部连接点的第二旋转向量与所述参考旋转向量的第二夹角以及所述头部连接点的预设向量长度确定目标旋转向量;
按照所述目标旋转向量调整所述参考旋转向量。
进一步地,处理器1001可以调用存储器1005中存储的网络操作控制应用程序,还执行以下操作:
获取所述下一路段对应路段曲线的点数组中的第一坐标和第二坐标;
基于所述第一坐标和所述第二坐标创建第一空节点和第二空节点,以使所述第一空节点的本地坐标与所述第一坐标相同,所述第二空节点的本地坐标与所述第二坐标相同。
根据所述第一空节点的本地坐标和所述第二空节点的本地坐标确定所述下一路段的尾部连接点的第一世界坐标参数。
进一步地,处理器1001可以调用存储器1005中存储的网络操作控制应用程序,还执行以下操作:
根据所述第一空节点的本地坐标和所述第二空节点的本地坐标得到所述第一空节点的世界坐标和所述第二空节点的世界坐标;
获取所述第一空节点的世界坐标与所述第二空节点的世界坐标的差值;
确定所述差值为所述下一路段的尾部连接点的第一旋转向量,以及确定所述第一空节点的世界坐标为所述下一路段的尾部连接点的第一世界坐标。
进一步地,处理器1001可以调用存储器1005中存储的网络操作控制应用程序,还执行以下操作:
根据所述打点数据确定多条依次连接的路段曲线;
根据所述路段类型对应路段参数确定每条所述路段曲线对应的三维路段;
基于所述路段曲线和所述三维路段生成下一路段。
参照图2,本发明游戏赛道的自动生成方法第一实施例提供一种游戏赛道的自动生成方法,所述游戏赛道的自动生成方法包括:
步骤s10,获取游戏对象所在的当前路段,基于所述当前路段以及预设游戏赛道模型确定下一路段的路段类型;
步骤s20,从游戏资源包中获取所述路段类型对应的打点数据;
步骤s30,根据所述打点数据以及所述路段类型对应路段参数生成下一路段;
步骤s40,根据所述预设游戏赛道模型调节所述下一路段的方向,将所述下一路段的头部连接到所述当前路段的尾部。
本实施例执行终端为游戏引擎,所述游戏引擎包含各种便携游戏所需的工具,所述游戏引擎包含以下系统:渲染引擎(即“渲染器”,含二维图像引擎和三维图像引擎)、物理引擎、碰撞检测系统、音效、脚本引擎、电脑动画、人工智能、网络引擎以及场景管理,应用所述各种引擎工具方便快速的进行游戏内容的组建。
本实施例所述的一种游戏赛道的自动生成方法,适用于各种含有赛道或者路段的游戏场景中。其中,所述有场景中包含有游戏对象、赛道或路段以及其他游戏场景,所述游戏对象可以是游戏赛车,所述游戏赛道适用于各种赛车竞赛游戏中,例如qq飞车,极品飞车等;所述游戏对象还可以是人,或者可移动的物体,所述人或者可移动的物体能够在各自所在游戏场景中的路段上进行移动。
具体的,本实施例所述的游戏赛道的自动生成方法,在赛道生成之前,所述游戏赛道有基于游戏场景所需的特定的游戏赛道模型,所述游戏赛道模型为提前设置好的赛道,其中,所述赛道模型可以有多个,所述多个赛道模型可根据游戏需要进行赛道复杂程度以及赛道难易程度的划分,分别适用于不同的游戏场景中,所述不同场景可以是路段较为平缓的简单赛道场景,也可以是路段弯曲程度大,弯曲路段之间的间隔较短,有较多弯曲程度不同的路段组成的赛道场景等,另外,所述多条赛道模型可以应用于是同一游戏的同一游戏场景或同一游戏的不同游戏场景,还可以是不同游戏的不同场景。进而,确定预设游戏赛道模型之后,根据所述预设游戏赛道模型进行游戏赛道的分析,从而确定所述预设游戏赛道模型的赛道走向,并根据所述预设赛道模型的赛道走向确定出变换赛道走向的关键点或者路段的关键拐点,即在所述预设赛道模型的赛道关键位置进行打点,一个所述关键点为一个打点数据,其中,所述关键点可以是预设赛道模型的赛道中线上的点,也可以是预设赛道模型的赛道边缘线上的点,只要保证所述关键点为能完整勾勒出预设赛道模型的固定线路曲线即可。进而将所述根据预设赛道模型得到的打点数据存储在游戏资源包中,以供游戏引擎在游戏运行过程中根据所述打点数据重新生成完整的赛道,所述重新生成的完整的赛道与所述预设游戏赛道模型一致。
另外,所述游戏赛道的生成还包括所述游戏赛道中每一路段的路段参数,所述路段参数包括路段的宽度,长度、高度以及路面的贴图等等,所述路段的宽度、高度以及贴图等均参照所述预设赛道模型进行自行设置。即在根据所述打点数据生成路段曲线之后,根据所述曲线和所述路段参数生成下一路段。需要说明的是,在根据所述打点数据以及所述路段对应路段参数生成的下一路段与所述游戏对象的当前路段并不一定完美贴合连接,故在所述下一路段生成之后,还需要根据所述预设游戏赛道模型进行调节所述下一路段的方向,将所述下一路段的头部与所述游戏对象所在当前路段的尾部进行连接,从而保证赛道的完整性。其中,在游戏开始时,所述游戏对象处于游戏赛道的起始端,所述游戏引擎获取游戏对象的位置,基于预设游戏赛道模型中的路段类型确定每一路段的生成,其中,所述路段类型包括赛道弯道和赛道直道,所述弯道还包括弯曲程度不同的弯道,进而连接生成的每一路段,形成与所述预设游戏模型一致的赛道。值得注意的是,所述游戏赛道是基于游戏进度实时生成下一路段的,即在游戏运行过程中,游戏引擎获取游戏对象所在的当前路段,根据所述游戏对象在游戏运行过程中所在当前路段的位置与预设游戏赛道模型进行比对,从而确定出所述游戏对象在游戏运行过程中的即将生成的下一路段的路段类型,进而从游戏资源包中获取到与所述路段类型对应的打点数据,并根据打点数据以及对应路段参数生成下一路段,进而基于预设游戏赛道模型调节所述下一路段的方向,以使所述游戏对象所在路段与所述下一路段完美连接,达到与预设游戏赛道模型一致的效果。
在本实施中,通过游戏对象所在的当前路段和预设游戏赛道模型确定得到游戏对象的下一路段的路段类型,然后从游戏资源包中获取与该路段类型对应的打点数据,并结合下一路段的路段类型对应路段参数生成下一路段,再对生成的下一路段的方向进行调整,将游戏对象所在的当前路段的尾部与生成的下一路段的头部连接起来,从而减少了游戏资源包的大小,大大提升了游戏性能。
进一步的,参照图3,本发明游戏赛道的自动生成方法第二实施例提供一种游戏赛道的自动生成方法,基于上述图2所示的实施例,所述获取游戏对象所在的当前路段,基于所述当前路段以及预设游戏赛道模型确定下一路段的路段类型的步骤之后,还包括:
步骤s11,所述下一路段的路段类型为弯道时,执行所述从获取游戏对象所在的当前路段,基于所述当前路段以及预设游戏赛道模型确定下一路段的路段类型的步骤;
步骤s12,所述下一路段的路段类型为直道时,确定所述下一路段的长度;
步骤s13,基于所述当前路段以及所述长度生成下一路段。
所述游戏赛道包括弯道和直道,其中,所述弯道还根据赛道的弯曲程度不同划分为不同弯道。在通过游戏对象所在的当前路段以及预设游戏赛道模型确定下一路段的路段为弯道时,从游戏资源包中获取确定所述弯道的关键点,具体地,生成弯道的所述关键点可包括3个点或者3个以上的点,当所述赛道的弯道情况较复杂时,即弯道由于弯曲的大小和方向不一样,可以向左转弯,向右转弯,向上弯,向下弯,以及螺旋上升,螺旋下降等情况。并且路段的弯曲程度不一。因此我们可以通过增加打点数据以生成更为复杂的弯道。其中,以3个关键点为例,在生成曲线时,所述3个关键点位于不同的位置,并且所述3个关键点不在同一条直线上,为确保生成的曲线为预设游戏赛道对应路段的路段曲线,将所述3个关键点的中间一个关键点作为控制点,所述控制点两端的关键点分别作为根据所述3个关键点生成下一路段的路段起点和终点,进而基于游戏运行过程中所述游戏对象的进度,利用二阶贝塞尔曲线生成下一路段;当所述下一路段的路段类型为直道时,确定两个关键点,分别为所述直道的起点和终点,并基于游戏运行过程中所述游戏对象的进度,利用一阶贝塞尔函数生成下一路段曲线,因此,只需确定所述直道对应路段的长度,用面片便可以很快的生成需要的路段。
本实施例中,通过游戏对象所在的当前路段和预设游戏赛道模型确定得到游戏对象的下一路段的路段类型,当路段为弯道时,从游戏资源包中获取与该路段类型对应的打点数据,并结合下一路段的路段类型对应路段参数生成下一路段,当路段为直道时,基于游戏对象所在当前路段以及直道对应的路段长度生成下一路段,再对生成的下一路段的方向进行调整,将游戏对象所在的当前路段的尾部与生成的下一路段的头部连接起来,从而减少了游戏资源包的大小,大大提升了游戏性能。
参照图4,本发明游戏赛道的自动生成方法第三实施例提供一种游戏赛道的自动生成方法,基于上述图2所示的实施例,所述根据所述预设游戏赛道模型调节所述下一路段的方向,将所述下一路段的头部连接到所述当前路段的尾部的步骤包括:
步骤s41,获取所述当前路段的尾部连接点的第一世界坐标参数,其中,所述第一世界坐标参数包括第一世界坐标和第一旋转向量;
步骤s42,根据所述当前路段的尾部连接点的第一世界坐标参数调整所述下一路段的头部连接点的第二世界坐标参数,以使第二世界坐标参数与所述第一世界坐标参数相同,所述第二世界坐标参数包括第二世界坐标以及第二旋转向量。
具体地,所述赛道为完整的赛道,所述游戏引擎在游戏运行过程中生成的赛道为多个路段,所述多个路段根据预设游戏赛道模型依次连接生成完整的赛道,所述每个路段对应一条路段曲线,在所述多个路段进行连接时,根据所述打点数据生成的赛道类型与所述预设游戏赛道模型一致,但是并不能保证生成的所述下一路段的方向刚好与所述游戏对象所在当前路段的路段方向一致,故在连接所述当前路段与所述下一路段时,要使得所述下一路段的头部与所述当前路段的尾部旋转方向一致。因此,在保证所述游戏对象所在路段的旋转方向以及位置不变的情况下,获取所述当前路段的尾部连接点的位置坐标以及所述当前路段尾部连接点的旋转方向,其中,所述当前路段的尾部连接点的位置坐标为第一世界坐标,所述当前路段的尾部连接点的旋转方向为第一旋转向量,所述第一世界坐标参数包括所述第一世界坐标和所述第一旋转向量,并调整所述下一路段的头部连接点的旋转方向以及头部连接点的位置坐标,以使所述下一路段的头部连接点的坐标与所述当前路段的尾部连接点的第一世界坐标重合,所述下一路段的头部连接点的旋转方向与所述当前路段的尾部连接点的第一旋转向量一致,其中,所述下一路段的头部连接点的坐标为所述第二世界坐标,所述下一路段的头部连接点的旋转方向为所述第二旋转向量,所述第二世界坐标参数包括所述第二世界坐标和所述第二旋转向量。
在本实施中,通过游戏对象所在的当前路段和预设游戏赛道模型确定得到游戏对象的下一路段的路段类型,然后从游戏资源包中获取与该路段类型对应的打点数据,并结合下一路段的路段类型对应路段参数生成下一路段,并获取当前路段的尾部连接点的第一世界坐标参数,根据当前路段的尾部连接点的第一世界坐标参数调整下一路段的头部连接点的第二世界坐标参数,以使游戏对象所在的当前路段的尾部与生成的下一路段的头部连接起来,从而减少了游戏资源包的大小,大大提升了游戏性能。
参照图5,基于上述图4,所述根据所述当前路段的尾部连接点的第一世界坐标参数调整所述下一路段的头部连接点的第二世界坐标参数,以使第二世界坐标参数与所述第一世界坐标参数相同的步骤包括:
步骤s43,获取所述下一路段的参考旋转向量;
步骤s44,调整所述参考旋转向量,以使所述下一路段的头部连接点的第二旋转向量与所述当前路段的尾部连接点的第一旋转向量相同;
步骤s45,调整所述下一路段的头部连接点的第二世界坐标,以使所述下一路段的头部连接点的第二世界坐标与所述当前路段的尾部连接点的第一世界坐标相同。
所述参考旋转向量为游戏引擎根据所述打点数据生成下一路段时,在所述下一路段的头部连接点有第二旋转向量之外,所述下一路段还有另一个旋转向量,将所述另一个旋转向量作为所述下一路段的参考旋转向量,所述参考旋转向量为预设的旋转向量,默认为vector3(0,1,0)。值得注意的是,所述参考旋转向量对应一个第二旋转向量,其中,所述第二旋转向量未知,已知所述下一路段的第二旋转向量与所述下一路段的参考旋转向量之间存在一个夹角,所述夹角为预设夹角,在根据所述第一世界坐标参数调整所述第二世界坐标参数的过程中,所述夹角保持不变。其中,当所述参考旋转向量旋转一个角度时,所述下一路段的第二旋转向量的旋转角度与所述参考旋转向量的旋转角度相同。因而在本实施例中,通过调整所述参考旋转向量,以调整所述下一路段的第二旋转向量,使得所述下一路段的头部连接点的第二旋转向量与所述当前路段的尾部连接点的第一旋转向量相同。另外,所述下一路段的头部连接点的第二世界坐标为游戏引擎根据所述打点数据生成下一路段时的所述下一路段的初始世界坐标,值得注意的是,所述第二世界坐标的坐标未知,所述第二世界坐标可能与所述第一世界坐标重合,和可能与所述第一世界坐标不重合,故调整所述下一路段的参考旋转向量,根据所述参考旋转向量与所述第二旋转向量之间的夹角一定,以调整所述下一路段的头部连接点的第二旋转向量与所述当前路段的尾部连接点的第一旋转向量相同,进而调整所述下一路段的头部连接点的第二世界坐标,即当所述下一路段的头部连接点的第二旋转向量与所述当前路段的尾部连接点的第一旋转向量相同时,设置所述下一路段的头部连接点的第二世界坐标与所述当前路段的尾部连接点的第一世界坐标相同,即可实现所述下一路段的头部连接点与所述当前路段的尾部连接点连接。
参照图6,基于上述图5,所述调整所述参考旋转向量,以使所述下一路段的头部连接点的第二旋转向量与所述当前路段的尾部连接点的第一旋转向量相同包括:
步骤s46,根据所述参考旋转向量、所述第一旋转向量、预设的所述下一路段的头部连接点的第二旋转向量与所述参考旋转向量的第二夹角以及所述头部连接点的预设向量长度确定目标旋转向量;
步骤s47,按照所述目标旋转向量调整所述参考旋转向量。
其中,所述目标旋转向量为调整后的旋转向量,所述参考旋转向量调整成目标旋转向量后,使得所述下一路段的头部连接点当前的第二旋转向量与所述当前路段的尾部连接点的第一旋转向量相同。在已知所述参考旋转向量与所述当前路段的尾部连接点的第一旋转向量时,可根据所述所述参考旋转向量与所述第一旋转向量之间的点积计算得到所述参考旋转向量与所述当前路段的尾部连接点的第一旋转向量之间的夹角,记所述夹角为第一夹角。另外,已知所述下一路段的参考旋转向量与所述下一路段的头部连接点的第二旋转向量之间的预设夹角,即为第二夹角,将所述第一夹角与所述第二夹角相减,即可得到所述当前路段的尾部连接点的相对于所述所述下一路段的头部连接点的旋转角度,进而,根据所述当前路段的尾部连接点的第一旋转向量的向量长度、所述下一路段的头部连接点的第一旋转向量的向量长度以及所述当前路段的尾部连接点相对于所述下一路段的头部连接点的旋转角度确定所述头部连接点的第二旋转向量和所述第一旋转向量的点积。需要说明的是,所述参考旋转向量、所述第一旋转向量、所述第二旋转向量以及所述目标旋转向量均为单位向量,所述单位向量的向量长度为1。进一步的,在所述下一路段的头部连接点的第二旋转向量与所述当前路段的尾部连接点的第一旋转向量相同时,所述目标旋转向量即为所述参考旋转向量,故所述参考旋转向量与所述目标旋转向量之间的夹角,与所述当前路段的尾部连接点相对于所述下一路段的头部连接点的旋转角度相同,则所述参考旋转向量与所述目标旋转向量的点积(记为第一点积)与所述第一旋转向量与所述第二旋转向量的点积(记为第二点积)相等,从而得到所述目标旋转向量在所述参考旋转向量方向上的向量值,其中,在本实施例中,为了链接方便,路段的两端,都是水平的也就是,也就是只用考虑左右旋转,并且,本实施例中,将所述参考旋转向量的向量方向记为y轴方向。故根据向量模的计算方法可得到所述目标旋转向量在x轴方向上的向量值,进而通过所述夹角的余弦值判断得出所述第一旋转向量相对于所述第二旋转向量是顺时针方向还是逆时针方向,确定所述x轴方向上的x值的正负,从而得到所述目标旋转向量,进一步的,按照所述目标旋转向量调整所述参考旋转向量,根据所所述参考旋转向量与所述第二旋转向量之间的夹角关系,使得所述第二旋转向量与所述第一旋转向量相同。
参照图7,本发明游戏赛道的自动生成方法第四实施例提供一种游戏赛道的自动生成方法,基于图2所述的实施例,所述根据所述预设游戏赛道模型调节所述下一路段的方向,将所述下一路段的头部连接到所述当前路段的尾部的步骤之前,所述游戏赛道的自动生成方法的步骤还包括:
步骤s50,获取所述下一路段对应路段曲线的点数组中的第一坐标和第二坐标;
步骤s60,基于所述第一坐标和所述第二坐标创建第一空节点和第二空节点,以使所述第一空节点的本地坐标与所述第一坐标相同,所述第二空节点的本地坐标与所述第二坐标相同;
步骤s70,根据所述第一空节点的本地坐标和所述第二空节点的本地坐标确定所述下一路段的尾部连接点的第一世界坐标参数。
所述第一坐标和所述第二坐标为预存的所述点数组中的坐标,不存在于游戏运行过程中,在所述当前路段与所述下一路段进行连接时,获取所述下一路段曲线对应点数组中的倒数第一个点的坐标,所述第二坐标为所述下一路段曲线对应点数组中的倒数第二个点的坐标。在游戏运行过程中,每当要生成下一个路段时,所述游戏引擎可根据所述第一坐标和所述第二坐标创建两个空节点,并设置所述第一空节点的本地坐标与所述第一坐标相同,所述第二空节点的本地坐标与所述第二坐标相同,在所述当前路段与所述下一路段连接之后,直接获取根据下一路段对应路段曲线的点数组的第一坐标和第二坐标得到的所述下一路段的尾部连接点的第一世界坐标参数,用于下一路段生成之后连接所述下一路段与所述当前路段。
进一步的,基于图6所述的实施例,所述根据所述第一空节点的本地坐标和所述第二空节点的本地坐标确定所述下一路段的尾部连接点的第一世界坐标参数的步骤包括:
步骤s71,根据所述第一空节点的本地坐标和所述第二空节点的本地坐标得到所述第一空节点的世界坐标和所述第二空节点的世界坐标;
步骤s72,获取所述第一空节点的世界坐标与所述第二空节点的世界坐标的差值;
步骤s73,确定所述差值为所述下一路段的尾部连接点的第一旋转向量,以及确定所述第一空节点的世界坐标为所述下一路段的尾部连接点的第一世界坐标。
其中,世界坐标系不可以更改,而可以定义本地坐标系,在确定所述第一空节点的本地坐标和所述第二空节点的本地坐标之后,所述游戏引擎中包含有特定算法,利用所述算法将所述第一空节点的本地坐标和所述第二空节点的本地坐标转换为所述第一空节点的世界坐标和所述第二空节点的世界坐标,所述第一空节点对应与所述下一路段的点数组中的倒数第一个点,所述第一空节点的世界坐标作为所述下一路段的尾部连接点的第一世界坐标,将所述第一空节点的世界坐标与所述第二空节点的世界坐标相减即可得到所述下一路段的末尾连接点的第一旋转向量。
在本实施中,通过游戏对象所在的当前路段和预设游戏赛道模型确定得到游戏对象的下一路段的路段类型,然后从游戏资源包中获取与该路段类型对应的打点数据,并结合下一路段的路段类型对应路段参数生成下一路段,并根据下一路段对应路段曲线的点数组中的第一坐标和第二坐标创建第一空节点和第二空节点,进一步获得第一空节点的世界坐标和第二空节点的世界坐标,并根据第一空节点的世界坐标和第二空节点的世界坐标得到下一路段的尾部连接点的第一世界坐标和第一旋转向量,再对生成的下一路段的方向进行调整,将游戏对象所在的当前路段的尾部与生成的下一路段的头部连接起来,从而减少了游戏资源包的大小,大大提升了游戏性能。
参照图8,本发明游戏赛道的自动生成方法第五实施例提供一种游戏赛道的自动生成方法,基于图2所述的实施例,所述根据所述打点数据以及所述路段对应路段参数生成下一路段的步骤包括:
步骤s31,根据所述打点数据确定多条依次连接的路段曲线;
步骤s32,根据所述路段类型对应路段参数确定每条所述路段曲线对应的三维路段;
步骤s33,基于所述路段曲线和所述三维路段生成下一路段。
进一步的,所述游戏赛道由若干个路段曲线组成,所述路段曲线对应弯道和直道,在所述路段为弯道时,每3个关键点为一组打点数据,根据二阶贝塞尔函数生成一条路段曲线;在所述路段为直道时,每两个关键点为一组打点数据,根据一阶贝塞尔函数生成一条线段。进一步的,生成所述三维路段时的所述路段类型对应路段参数包括顶点数,三角面,uv(贴图)以及法线方向。其中,3个顶点组成一个三角面,每个顶点都可被重复使用构建另一个三角面,所述贴图为预存的图案,所述图案用于装饰所述游戏赛道的赛道路面。所述路段曲线微观上是由一个一个线段组成,因此可根据所述路段的路段类型确定出每一个线段的长度,即所述路段曲线的步长,通过插值的方式得到所述曲线的点数组,将所述点数组中的相邻两个点作为一个立体图形的体对角线,从而确定出各个顶点,因为路段是一个立体的模型,同理一个完整的路段,也是由一个个三维路段构成,其中每个三维路段需要设定6个面也就是24个顶点以及12个三角形顺序,而法线则通过编辑器提供的函数自动生成。uv则需要根据项目情况看路面是纯色路段,还是带贴图路段,然后根据线段之间距离设定uv。将所述顶点、三角面、uv赋值给所述三维路段,从而生成一个完整的赛道。另外,路段由一个三维路段构成,其中由于中间的三维路段的前面和背面看不到,因此在生成路段时可以只生成第一个三维路段的前面以及最后一个路段的背面。另外由于路段的弯曲程度不同,当设定步长很小时,会引起路段顶点数和三角面数增加,而设定步长很大时,则路段边缘粗糙,因此我们灵活设定步长,对于直线或者弯曲程度很小的路段可以设定很长的步长,而弯曲程度较大可以设定较小的步长,从而减少路段模型的顶点数和面数。
在本实施中,通过游戏对象所在的当前路段和预设游戏赛道模型确定得到游戏对象的下一路段的路段类型,然后从游戏资源包中获取与该路段类型对应的打点数据,根据打点数据确定出多条依次连接的路段曲线,在根据路段类型对应路段参数确定每条路段曲线对应的三维路段,基于路段曲线和三维路段生成下一路段,再对生成的下一路段的方向进行调整,将游戏对象所在的当前路段的尾部与生成的下一路段的头部连接起来,从而减少了游戏资源包的大小,大大提升了游戏性能。
本发明实施例还提出一种终端,所述终端包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的赛道自动生成程序,所述赛道自动生成程序被所述处理器执行时实现如上所述的游戏赛道的自动生成方法的步骤。
此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有赛道自动生成程序,所述赛道自动生成程序被处理器执行时实现如上所述的游戏赛道的自动生成方法的步骤。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。