Answers:
对于运动曲线,建议使用Hermite曲线。您只需给出一个起点/速度和一个终点/速度,它就可以在这两个之间建立一条优美而平滑的曲线。使用第一对点的终点/速度作为下一对点的起点/速度,您将获得一条优美而又无缝的长弯曲曲线。
这完美地满足了管理速度的要求:您可以选择速度来提供时间点列表,还可以无缝插补位置和速度值。如果要这样做,从3D创作应用程序中提取的所有内容就是所需路径中的点和速度。您也可以在运行时生成它们,也许基于用户输入。
要调整方向,您有很多选择。如果飞机总是指向飞行的方向(在这种情况下是有意义的),则可以使用Hermite曲线中的插值速度矢量来找到您的船应指向的位置。如果您知道向上向量(它在平面中移动,或者您知道哪个方向应该向上),则可以通过cross(front,up)计算第三个轴,然后确定方向。
如果要某种“摆动”方向,以使平面有时偏离路径中的前方向,则可以将前方向用作所需方向,并在当前方向和所需方向之间连续进行一步调整。
如果要使用与路径无关的自定义方向,则当然可以为此提供方向四元数的列表。然后您的点变为(点,速度,四元数)。然后,您可以在两个连续的四元数之间使用slerp来设置方向。不要忘记slerp是线性插值方法。但是,通常应该没问题。如果您发现该旋转不会在接缝处不够光滑,你可以尝试用插值贝塞尔曲线四元数的列表,说明这里在第7。
这是一些可以帮助您入门的源代码。对于四元数列表(小数,贝塞尔曲线等),它具有多种平滑插值技术。
如果您有任何疑问,请告诉我!