我正在为 OpenGL ES 2.0 编写 3D 应用程序,其中用户设置路径并飞过某些地形。它基本上是一个轨道上的飞行模拟器。
路径由从样条线创建的一系列点定义。每个时间片我使用插值推进当前位置,即我在 p0 到 p1 之间插值,然后当我到达 p1 时,我在 p1 和 p2 之间插值,最后从 pN 回到 p0。
我创建了一个类似于 gluLookAt 的视图矩阵。eye coord 是当前位置,look at 是路径上的下一个位置和一个 up (0, 0, 1)。所以相机看向它接下来要飞到的地方,Z指向天空。
但现在我想在转弯时“银行”。即向上矢量不一定是直接向上的,而是基于转弯率的变化。我知道我当前的方向和我最后的方向,所以我可以增加或减少银行的数量。点积会告诉我转弯的角度,叉积会告诉我它是向左还是向右。我可以保持倾斜角度并将其保持在 -/+70 度的范围内,适当地增加或减少。
我认为这是正确的方法,但我可能会花很长时间实施它来发现它不是。
我是否走在正确的轨道上,是否有样本可以证明我正在尝试做的事情?