0

我正在尝试使用样条线移动的相机。相机位置很好,但是我希望我的相机眼睛在移动时转向本身。

例如,相机从 x0 y0 z0 移动到 x1 y1 z1。现在我的眼睛向量是正常的(x1-x0,y1-y0,z1-z0)。如何旋转其他两个向量(侧向量和上向量)以匹配眼睛向量而不破坏它们之间的 90 度角?

如果偏航/俯仰形式更容易,那也可以,我可以在两者之间进行转换。或者我想要实现的不同方法?

例如,我认为我可以通过计算样条的法线(它是一个 3 点贝泽曲线)来做到这一点,并且每一步我都可以计算出相机将围绕该法线旋转多少。但如果存在的话,我更喜欢更简单、更通用的方法。

你可以在这里看到我在做什么。(点击一个行星)在这个我将我的新旧眼睛矢量转换为俯仰/偏航并找到差异并使用它旋转其他矢量但这显然是错误的,因为在某些情况下,其他矢量可能根本不会改变(如果眼睛垂直于一个旋转)

4

1 回答 1

0

这称为关键帧动画。最好的方法是在您感兴趣的位置取欧拉角并将它们放在四元数形式中。然后,您可以使用样条线对关键帧四元数进行插值以获得插值帧。

为什么要这样做?主要原因是保持插值帧的变换矩阵的正交性没有问题,也不必想出一个启发式来选择欧拉角。阅读更多关于Wikipedia的内容,尤其是与其他旋转表示的比较部分。

不要让四元数形式吓跑你,这实际上很容易。您所需要的只是从欧拉角(或变换矩阵)到四元数以及相反的方法。除了可以很好地用样条插值外,您不必对四元数本身了解太多。

于 2013-08-30T13:46:02.440 回答