我有一個以球體表面上的一個點爲中心的3D攝像頭。它遵循並完美地旋轉,除了在球體的兩極之外。請注意,球體實際上是投影到球體的立方體,以便於位置座標的管理。攝像頭看着一個球體 - 杆子包裹
如果對象在球體周圍水平移動,則攝像機按預期工作。但是,如果物體穿過球體的頂部或底部的極點,則攝像機會纏繞在極點上。如果它直線穿過杆子,它會在穿過杆子時轉動180度。
我明白爲什麼會發生這種情況 - 必須有一個全局的Up向量才能知道如何定位自己。如果我將其向上方向更改爲不同的方向,例如右側,相機將不再翻轉頂部或底部的杆,而是在球體的左右兩極展現相同的行爲。
我的問題是如何改變我的相機的行爲,這樣就不會發生。我想讓我的相機感覺到,相機處於一個恆定的位置,看着球體,球體在X軸和Z軸上旋轉。我知道這可能導致「錯誤的」方向 - 例如,如果用戶從球體的前表面開始,向上,然後離開,它們將最終在球體的左側,但是相機在其Z軸上旋轉90度,而如果它們從前面開始並直接移動到左側,則不會旋轉。這很好,因爲我可以檢測相機何時穿過臉部並緩慢「修復」相機的本地旋轉,或允許用戶解鎖相機,並且可以自己處理相機的角度。
僅供參考,我的相機是目前正在使用中這個問題的解決計算: Camera rotation aligned to arbitrary plane
任何有識之士將不勝感激!
看看SketchUp的旋轉模型。當你穿過兩極時,它們會反轉向上的方向。 – 2013-03-26 14:01:53
你如何做球體周圍的旋轉?矩陣或四元數? – Kobunite 2013-03-26 14:30:43