一种飞行路径模拟方法及系统的制作方法

文档序号:6341387阅读:209来源:国知局
专利名称:一种飞行路径模拟方法及系统的制作方法
技术领域
本发明涉及模拟技术领域,特别涉及一种飞行路径模拟方法及系统。
背景技术
飞行路径模拟是3D游戏中一种玩家不可控制的移动手段,一般运用在长距离移 动或让玩家通过固定的路径快速预览场景的情况下。飞行路径模拟一般是由技术人员预先 使用编辑器编辑成用于描述飞行路径的直线关键点信息以及物体在飞行路径上的移动速 度的速度控制信息的路径文件,在具体进行飞行模拟时,客户端根据该路径文件中的直线 关键点信息生成飞行路径,并根据速度控制信息逐帧计算飞行物体在飞行路径上的位置, 从而呈现出飞行物体沿飞行路径以一定的速度进行运动的效果。在现有的飞行路径模拟中,一般是采用直线作为基本路径描述方式,即通过直线 段的两个端点(上述的直线关键点),即可得到一条直线路径的原理来描述路经,如图1所 示,一条由圆点1到圆点6的路径(图中实线部分),可以通过原点1、2、3、4、5、6的空间坐 标来描述。但是在直线描述方式中,为了使路径的模拟效果更加真实,在路径的转弯部分 (图1原点2和原点3、原点4和原点5之间的实线段部分),现有技术是将该转弯部分通过 多条直线,每条直线转过一个较小角度的拟合方法来模拟出一个平滑的转弯曲线(图1原 点4和原点5之间的虚线部分),来替换掉原来的直线转弯部分。对于上述的拟合方法来说,要想实现较为平滑的转弯曲线,需要尽可能小的转弯 角度,尽可能多的转弯次数,相应地,对于转弯部分的每一条直线来说,都需要使用关键点 来描述,那么用于描述转弯曲线的数据量就会非常大,给飞行路径的编辑和后续的位置计 算带来很大的困难。而且这种拟合的方法得到的不是真实的平滑曲线,无法实现真正沿平 滑曲线转弯的模拟效果。

发明内容
本发明实施例提供一种飞行路径模拟方法,能够简单方便地实现真实的平滑曲线 模拟效果。本发明实施例提供一种飞行路径模拟系统,能够简单方便地实现真实的平滑曲线 模拟效果。为达到上述目的,本发明的技术方案具体是这样实现的一种飞行路径模拟方法,该方法包括获取用于描述路径转弯部分的曲线路径的曲线关键点信息、曲线长度信息和速度 控制信息;根据所述曲线关键点信息和贝塞尔曲线方程,生成曲线路径;以所述曲线路径替换对应的直线路径;在所述路径转弯部分,根据所述速度控制信息和曲线长度信息计算物体在所述曲
4线路径上的位置。较佳地,所述以曲线路径替换对应的直线路径,包括根据所述曲线路径的两个端点的信息,计算该段曲线路径的标识;根据所述直线路径的两个端点的信息所述计算方法计算出直线路径的标识;以所述曲线路径替换与其标识相同的直线路径。较佳地,所述根据速度控制信息和曲线长度信息计算物体在所述曲线路径上的位 置,包括根据速度控制信息和曲线长度信息利用牛顿切线法和贝塞尔曲线方程计算物体 在所述转弯曲线上的位置。较佳地,所述曲线关键点信息通过预先编辑的包含曲线关键点信息的路径文件获 取。较佳地,所述曲线长度信息通过预先编辑的包含曲线长度信息的路径文件获取; 或者根据所述曲线关键点信息通过数值积分计算获取。较佳地,所述速度控制信息包括用于描述整体路径速度的基本速度信息和用于 描述在曲线路径上的速度调整量的速度调整信息。一种飞行路径模拟系统,该系统包括客户端和服务器端,所述客户端,用于获取用于描述路径转弯部分的曲线路径的曲线关键点信息、曲 线长度信息和速度控制信息;根据所述曲线关键点信息和贝塞尔曲线方程,生成曲线路径; 以所述曲线路径替换对应的直线路径;在所述路径转弯部分,根据所述速度控制信息和曲 线长度信息计算物体在所述曲线路径上的位置;所述服务器端,用于获取用于描述路径转弯部分的曲线路径的曲线关键点信息、 曲线长度信息和速度控制信息;根据所述曲线关键点信息和贝塞尔曲线方程,生成曲线路 径;在所述路径转弯部分,根据所述速度控制信息和曲线长度信息计算物体在所述曲线路 径对应的直线路径上的位置。较佳地,所述客户端根据所述速度控制信息和曲线长度信息,利用牛顿切线法和 贝塞尔曲线方程计算物体在所述曲线路径上的位置。较佳地,所述服务器端根据所述速度控制信息和曲线长度信息,利用直线速度公 式计算物体在所述曲线路径对应的直线路径上的位置。较佳地,所述服务器端进一步用于,以所述曲线路径替换对应的直线路径;在所述路径转弯部分,根据所述速度控制信息和曲线长度信息计算物体在所述曲 线路径上的位置。由上述的技术方案可见,本发明的这种飞行路径模拟方法和系统,在路径的转弯 处,使用了贝塞尔曲线的描述方法,由于贝塞尔曲线是真正的平滑曲线,且具备三维特性, 从而实现了真实的三维曲线模拟效果。而且以这样描述曲线的方法对于前期数据编辑和后 期位置计算来说,比现有方法都要简单、方便。


图1为飞行路径模拟原理图;图2为本发明实施例的飞行路径模拟方法流程图;图3为本发明实施例的飞行路径模拟系统结构示意图。
具体实施例方式为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对 本发明进一步详细说明。本发明主要是利用贝塞尔曲线对路径中需要转弯的部分进行描述,利用贝塞尔曲 线的真实三维曲线特性,实现真实的曲线模拟效果。本发明使用的贝塞尔曲线方程如下B (t) = P0 (l_t) 3+3PJ (1-t) 2+3P2t2 (l_t) +P3t3,t e
。其中,Pc^PpPyP3四个点为曲线关键点,以坐标表示;t为当前的时间除以该段曲 线勻速飞行需要的总时间,得到的比值,称为当前时间比值(总时间是使用该段曲线长度 除以预设的速度得出的时间值);当t = 0时得出启始点(Ptl)的位置,当t = 1时得出终点 (P3)的位置。该方程描述了一个起始于Ptl走向P1,并从P2的方向来到P3的曲线A和P2这两 个点是提供方向信息的,分别是Ptl和P3的辅助点。Ptl和P1之间的距离,决定了曲线在转而 趋进P3之前,走向P2方向的长度有多长。因此只要给出Pc^PpPyP3和当前时间比值t的值,就可以计算出物体当前时间在 曲线上的位置,描述出一个真正平滑的三维曲线。如图1所示,图中原点2为Ptl,原点3为P3,方点7为P1,方点8为P2,原点2和原 点3之间的虚线部分即为贝塞尔曲线。通过上述贝塞尔曲线替换掉路径中转弯部分对应的直线路径,然后以该曲线路径 来计算物体在路径中的位置,即可呈现出真实平滑的飞行路径模拟效果,而其描述转弯部 分的曲线的数据相比现有用直线拟合曲线的方法来说要减少很多,对于路径编辑和后续的 位置计算来说,都要简单方便得多。图2为本发明实施例的飞行路径模拟方法流程图,如图2所示,该方法包括如下步 骤步骤201,获取用于描述路径转弯部分的曲线路径的曲线关键点信息、曲线长度信 息和速度控制信息;其中,速度控制信息可以包括用于描述整体路径速度的基本速度信息和用于描述 在曲线路径上的速度调整量的速度调整信息,如果不需要为曲线进行特殊的速度控制,也 可以不包含速度调整信息,或者将速度调整信息设置为0。所述曲线关键点信息可以通过预先编辑的包含曲线关键点信息的路径文件获取, 而所述曲线长度信息也通过预先编辑的包含曲线长度信息的路径文件获取;或者根据所述 曲线关键点信息通过数值积分计算获取。步骤202,根据所述曲线关键点信息和贝塞尔曲线方程,生成曲线路径;曲线路径利用贝塞尔曲线方程,导入预先编辑好的曲线关键点信息进行计算即可 得到。步骤203,以所述曲线路径替换对应的直线路径;这一步要将整体路径中原本用直线路径描述的转弯部分采用步骤202中生成的 曲线路径进行替换,从而得到一个直线路径和曲线路径混合的路径。
步骤204,在所述路径转弯部分,根据所述速度控制信息和曲线长度信息计算物体 在所述曲线路径上的位置。在飞行路径模拟进行到转弯部分时,根据预先得到的曲线长度信息、速度控制信 息,利用牛顿切线法和贝塞尔曲线方程计算物体在曲线路径上的位置。牛顿切线法是一种 公知的计算方法,这里不再赘述。另外,在步骤203中,由于整体路径中可能存在多个转弯部分,所以在以曲线路径 替换对应的直线路径时;需要将曲线路径和直线路径一一对应地替换掉,为保证替换可以 正确完成,可以采用如下方法根据所述曲线路径的两个端点的信息,计算该段曲线路径的标识;根据所述直线 路径的两个端点的信息所述计算方法计算出直线路径的标识;以所述曲线路径替换与其标 识相同的直线路径。被替换的直线路径,其两端点与对应的曲线路径的两端点是相同的,因此根据两 端点计算出的标识,必然能够将曲线路径和被替换的直线路径一一对应起来。在步骤201中提到的路径文件是预先通过编辑器编辑的一种数据文件,在编辑器 中对飞行路径进行编辑时,直线部分可以继续使用现有方法描述,这里不再赘述,而转弯部 分的曲线路径则可以通过贝塞尔曲线方程描述。路径文件可以采用XML格式,该文件中含有描述飞行路径的各种必要信息,直线 路径部分包括如直线关键点信息(直线两端点的坐标),曲线路径部分的必要信息如曲线 中各曲线关键点(Pc^PpPyP3)的信息(坐标)、曲线的长度(可根据数值积分,如辛普森 公式计算得到)、在曲线上的速度控制信息等,当然,曲线的长度信息也可以不包括,留给客 户端自己计算;如果物体在曲线上的速度采用和直线上相同的速度,不需要调整,那么速度 控制信息也可以不包括。路径文件具体格式和内容举例如下
<Flight_Route Name ="flr_line3" >
<Point Position =‘(286. 163,0,258. 99)“/>
<Point Position ='(305. 402,43. 1253,280.717)"/>
<Point Position ='(327. 628,41. 3873,267.632)“/>
<Point Position ='(333. 765,29. 0729,211.457)“/>
<Point Position ='(317. 407,29. 0729,191.89) “ /'>
<begPoint Position="(284. 039,0,252. Ill) " />
〈Curve PO = “ (305.402,43. 1253,280. 717)“Pl ="(28344. 8633,
293.802)" P2〃 (278. 172,0,267. 375) " P3 = " (286. 163,0,258.99)“
=〃 Curvel"CurveLength = “ 64.7055〃 ModifySpeed = “ 0" />〈Curve PO=" (333. 765,29. 0729,211. 457) “ Pl = “ (350.123, 29.0729,231. 024) “ P2 = “ (349. 854,39. 6493,254. 547) “ P3 = “ (327. 628,41. 3873, 267. 632)‘‘
Name=" Curve2“ CurveLength = “ 67.1278〃 ModifySpeed = “ 0〃 />〈Curve PO=" (284. 039,0,252. Ill) “ Pl=" (270. 359,2, 218. 884)“P2=〃 (301. 049, 29. 0729,172. 323) “ P3 = “ (317. 407,29. 0729,191. 89)“Name=" Curve3“ CurveLength = “ 92.9202〃 ModifySpeed = “ 0〃 /></Flight_Route>上述代码描述了名称为Curvel、Curve2、Curve3的三段曲线,给出了每条曲线的 曲线关键点的坐标,三段曲线的长度CurveLength分别为64. 7055,67. 1278,92. 9202速度 调整信息为速度调整值ModifySpeed,均为0,表示无需调整速度,采用与直线部分相同的 默认速度。在预先编辑好上述路径文件后,客户端即可根据该路径文件为数据源进行飞行模 拟。客户端在模拟飞行过程中会以一定的周期(如每帧一次)根据当前的速度(如果 该段有速度调整量,会通过速度调整量计算出相对应的速度),计算出物体在步骤202生成 的曲线路径上所在的位置。计算当前位置时,可以根据路径标识匹配路径,如果该段路径标识有对应的曲线, 则使用曲线方式来计算;即使用牛顿切线法来均分曲线,即将当前的时间比值t根据牛顿 切线法计算出一个对应的时间比值修正值t’,将t’代入贝塞尔曲线方程中,而不是直接使 用当前时间比值t,这样计算出的物体当前位置即可保证物体沿贝塞尔曲线移动时是勻速 的,其中,牛顿切线法中的方向向量dir为所述t’时刻贝塞尔公式的一阶导数值;如果没 有,则使用直线方式计算,使用速度控制信息和直线长度信息,利用直线速度公式算出当前 位置。对于物体在贝塞尔曲线上的运动来说,如果不需要保证勻速运动,则可以直接使 用当前时间比值t代入贝塞尔曲线方程计算物体位置,而无需使用牛顿切线法。另外,对于客户端在进行计算和替换过程中,可以采用数据容器(如数组)来保存 得到的各种信息,具体如下对于路径直线部分,与现有技术相同,可以先将从路径文件中导入的直线关键点 保存在关键点数组中,通过长度计算(直线关键点之间的距离),得到导入的每一条直线路 径的长度,将直线路径的长度保存到直线长度数组中。对于曲线部分,可以根据导入的曲线关键点信息,利用贝塞尔曲线方程生成所需 的曲线,将生成的所有曲线保存到曲线容器中,并为每一段曲线生成一个对应的标识(id), 该id用于在后续物体位置计算中进行路径匹配,替换对应的直线。根据导入的曲线长度将 长度映射到直线部分使用的长度数组中替换对应直线部分的长度;导入所有的速度控制信 息(如上述的速度调整值),将速度控制信息保存到曲线部分对应的速度数组中。因为引入了贝塞尔曲线,因此在预先编辑路径文件时,可以不在直线路径上进行 转角,所有的转角都通过贝塞尔曲线进行,曲线部分和直线部分的连接处的平滑问题可通 过某段路径的一阶导数与下一段路径的一阶导数相等的计算来保证。例如对于在某一段曲 线路径上的起始点或结束点Ρ0,Ρ0的辅助点P1,P0的下一段曲线路径的辅助点P2、或者下 一段直线路径的结束点P3来说,空间线段(Pl-PO)的斜率与长度应该与空间线段(P2-P0)的斜率、长度相等(曲线路径),或者空间线段(Pl-PO)的斜率与长度应该与(P3-P0)的斜
率、长度相等。另外,在游戏中,一般都需要客户端与服务器端进行数据同步,因此在客户端按照 本发明所述的飞行路径模拟方法实现转弯曲线的模拟的同时,服务器端一般也需要进行相 同的操作,并按照现有同步方法进行位置同步即可,当然,对于服务器端来说,由于不需要 进行实际飞行过程的呈现,因此在服务器端可以不使用生成的曲线路径替换掉原来的直线 路径,只需要在计算位置时,使用曲线路径的长度代替原来的直线路径的长度进行计算即 可,计算方法可以统一为直线方式,这样可以进一步减少对服务器端的改动,也有助于减少 服务器端的计算量。对此,本发明还提供了一种飞行模拟系统,如图3所示,包括客户端301和服务器 端 302 ;客户端301,用于获取用于描述路径转弯部分的曲线路径的曲线关键点信息、曲 线长度信息和速度控制信息;根据所述曲线关键点信息和贝塞尔曲线方程,生成曲线路径; 以所述曲线路径替换对应的直线路径;在所述路径转弯部分,根据所述速度控制信息和曲 线长度信息计算物体在所述曲线路径上的位置。服务器端302,用于获取用于描述路径转弯部分的曲线路径的曲线关键点信息、曲 线长度信息和速度控制信息;根据所述曲线关键点信息和贝塞尔曲线方程,生成曲线路径; 在所述路径转弯部分,根据所述速度控制信息和曲线长度信息计算物体在所述曲线路径对 应的直线路径上的位置。其中,所述客户端根据所述速度控制信息和曲线长度信息,利用牛顿切线法计算 物体在所述曲线路径上的位置。所述服务器端根据所述速度控制信息和曲线长度信息,利用直线速度公式计算物 体在所述曲线路径对应的直线路径上的位置。另外,所述服务器端可以进一步用于,以所述曲线路径替换对应的直线路径;在所 述路径转弯部分,根据所述速度控制信息和曲线长度信息计算物体在所述曲线路径上的位置。对于客户端和服务器端之间的数据同步,可以采用现有方法,这里不再赘述。由上述的实施例可见,本发明的这种飞行路径模拟方法和系统,在路径的转弯处, 使用了贝塞尔曲线的描述方法,由于贝塞尔曲线是真正的平滑曲线,且具备三维特性,从而 实现了真实的三维曲线模拟效果。而且以这样描述曲线的方法对于前期数据编辑和后期位 置计算来说,比现有方法都要简单、方便。
权利要求
1.一种飞行路径模拟方法,其特征在于,该方法包括获取用于描述路径转弯部分的曲线路径的曲线关键点信息、曲线长度信息和速度控制 fn息;根据所述曲线关键点信息和贝塞尔曲线方程,生成曲线路径;以所述曲线路径替换对应的直线路径;在所述路径转弯部分,根据所述速度控制信息和曲线长度信息计算物体在所述曲线路 径上的位置。
2.如权利要求1所述的飞行路径模拟方法,其特征在于,所述以曲线路径替换对应的 直线路径,包括根据所述曲线路径的两个端点的信息,计算该段曲线路径的标识;根据所述直线路径的两个端点的信息所述计算方法计算出直线路径的标识;以所述曲线路径替换与其标识相同的直线路径。
3.如权利要求1所述的飞行路径模拟方法,其特征在于,所述根据速度控制信息和曲 线长度信息计算物体在所述曲线路径上的位置,包括根据速度控制信息和曲线长度信息 利用牛顿切线法和贝塞尔曲线方程计算物体在所述转弯曲线上的位置。
4.如权利要求1、2或3所述的飞行路径模拟方法,其特征在于,所述曲线关键点信息通 过预先编辑的包含曲线关键点信息的路径文件获取。
5.如权利要求1、2或3所述的飞行路径模拟方法,其特征在于,所述曲线长度信息通过 预先编辑的包含曲线长度信息的路径文件获取;或者根据所述曲线关键点信息通过数值积 分计算获取。
6.如权利要求1、2或3所述的飞行路径模拟方法,其特征在于,所述速度控制信息包 括用于描述整体路径速度的基本速度信息和用于描述在曲线路径上的速度调整量的速度 调整信息。
7.一种飞行路径模拟系统,该系统包括客户端和服务器端,其特征在于,所述客户端,用于获取用于描述路径转弯部分的曲线路径的曲线关键点信息、曲线长 度信息和速度控制信息;根据所述曲线关键点信息和贝塞尔曲线方程,生成曲线路径;以 所述曲线路径替换对应的直线路径;在所述路径转弯部分,根据所述速度控制信息和曲线 长度信息计算物体在所述曲线路径上的位置;所述服务器端,用于获取用于描述路径转弯部分的曲线路径的曲线关键点信息、曲线 长度信息和速度控制信息;根据所述曲线关键点信息和贝塞尔曲线方程,生成曲线路径; 在所述路径转弯部分,根据所述速度控制信息和曲线长度信息计算物体在所述曲线路径对 应的直线路径上的位置。
8.如权利要求7所述的飞行路径模拟方法,其特征在于,所述客户端根据所述速度控 制信息和曲线长度信息,利用牛顿切线法和贝塞尔曲线方程计算物体在所述曲线路径上的 位置。
9.如权利要求7或8所述的飞行路径模拟方法,其特征在于,所述服务器端根据所述速 度控制信息和曲线长度信息,利用直线速度公式计算物体在所述曲线路径对应的直线路径 上的位置。
10.如权利要求7或8所述的飞行路径模拟方法,其特征在于,所述服务器端进一步用于,以所述曲线路径替换对应的直线路径;在所述路径转弯部分,根据所述速度控制信息和曲线长度信息计算物体在所述曲线路 径上的位置。
全文摘要
本发明公开了一种飞行路径模拟方法,该方法包括获取用于描述路径转弯部分的曲线路径的曲线关键点信息、曲线长度信息和速度控制信息;根据所述曲线关键点信息和贝塞尔曲线方程,生成曲线路径;以所述曲线路径替换对应的直线路径;在所述路径转弯部分,根据所述速度控制信息和曲线长度信息计算物体在所述曲线路径上的位置。本发明还公开了一种飞行路径模拟系统,该方法和系统能够简单方便地实现真实的平滑曲线模拟效果。
文档编号G06T15/00GK102129710SQ20101062367
公开日2011年7月20日 申请日期2010年12月30日 优先权日2010年12月30日
发明者韩宏毅 申请人:北京像素软件科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1