2013-08-29 29 views
0

我正在嘗試使用樣條移動的攝像頭。相機的位置很好,但我希望我的相機在轉動時能夠轉動。使用兩個差值旋轉其他兩個歐拉角

例如,相機從x0 y0 z0移動到x1 y1 z1。現在我的眼睛矢量是正常的(x1-x0,y1-y0,z1-z0)。我如何旋轉其他兩個矢量(側向矢量)以匹配眼矢量而不是破壞它們之間的90度角?

如果偏航/俯仰形式更容易,我也可以在兩個之間轉換。或者我想要實現的另一種方法?

例如,我想我可以通過計算樣條的法線(這是一個3點beizer曲線),並且每個步驟我可以計算相機將圍繞該法線旋轉多少。但是如果它存在的話,我更喜歡更簡單和更普遍的方法。你可以看到我在做什麼here。 (點擊一個星球)在這一個我轉換我的新舊眼睛矢量到俯仰/偏航,並找到差異和使用此旋轉其他向量,但這顯然是錯誤的,因爲在某些情況下,其他向量可能根本不會改變(如果眼睛是垂直旋轉的)

回答

0

這叫做key frame動畫。最好的辦法是把歐拉角放在你感興趣的位置和put them in quaternion form。然後可以使用樣條插值關鍵幀四元數來獲取插值幀。

爲什麼這樣做?主要原因是你沒有問題來保持插值幀的變換矩陣的正交性,你也不必提出啓發式來選擇歐拉角。閱讀更多關於Wikipedia,尤其是Comparison with other representations of rotations

不要讓四元數形式嚇跑你,它其實很簡單。所有你需要的食譜都是從歐拉角(或變換矩陣)到四元數和相反。除了可以很好地插入一個樣條,你不需要對四元數本身瞭解很多。