好了,希望我能在一個全面的方式解釋這個......原諒我,如果我徹底迷惑你...3D旋轉困境
我使用,使用應用旋轉矩陣對象的舊惱人的引擎只有本地空間。
我有一個文本工具,允許用戶(非程序員)來創建對象並將其旋轉(更改不會實時應用)。
如果只有一個軸旋轉,旋轉會很好,但當它們指定圍繞2個軸旋轉時(例如關於UP和RIGHT的旋轉),當然會變成翹曲,因爲關於UP的旋轉是使用本地UP,而不是全球(即世界)UP。
例如,假設我們有一個攝像頭(0,0,0)在尋找一個平面(0,-5,0)的寬面。該工具的用戶想要旋轉該平面的X(右)45度,以及全局上升45度。那麼,我沒有辦法讓他們簡單地指定2個旋轉值並獲得他們想要的全局UP旋轉值......他們需要通過試錯法來指定圍繞FORWARD(在這種情況下爲Y)的旋轉爲了保持對象「直立」。
我想知道的是:如何將繞2軸的旋轉轉換爲圍繞3軸的旋轉,假設關於UP的旋轉是全局UP,並且仍然獲得用戶想象的旋轉。
我假設像(東,北,上)這樣(0,0,-5),低於五個單位起源,而你的相機正在低頭看着它。在這一點上,我不明白你的旋轉,但告訴我,如果這是你想要的。您首先想要將平面的北端傾斜45度,然後圍繞舊軸向旋轉平面(而不是當前與飛機垂直的平面)? – John
對不起,我的飛機位置錯了,我糾正了。飛機將直接位於相機的前方,相機不旋轉。飛機的正常情況正對着相機。 在這個例子中,用戶希望從相機傾斜平面的頂部了,而其旋轉對全球UP(0,0,1在這種情況下)。 – RayJ
以相反的順序旋轉它們。連續兩次旋轉,一個將始終在本地,另一個將始終在全球一側。所以,如果你當前使用的是錯誤的一面,請使用另一個。 – comingstorm