2010-08-29 215 views
2

我已經通過四元數成功實現了Arcball旋轉,但是當攝影機的方向向量與向量平行時,我很困惑該怎麼辦。目前,我只是在方向矢量和向上矢量的點積超過0.99時限制沿x軸(pitch)的旋轉。例如,在Maya(或Max,使用弧球旋轉的XSI)中,您可以非常順利地以整圓旋轉。我希望有一種類似於Maya旋轉的解決方案。圓球90度旋轉

三江源

回答

0

您需要同時調整視圖法向量(VNV)和視圖向上向量(VUV)和一起旋轉兩者,使他們始終保持相互正交。跟蹤「右」(或「左」)向量有時也很有用,這也是正常向量和向上向量的叉積。

+0

我最初確實這樣做了,不幸的是這個解決方案存在問題(例如在Maya中沒有看到)。問題是,當你嘗試旋轉時,視圖也會滾動,這是由於新的方向和矢量計算(你必須在圓圈中移動鼠標來糾正它)。像Luxology Modo這樣的一些程序仍然表現出這種行爲,並沒有打算解決它。我還沒有弄清楚Maya是如何完成這個的。我知道他們使用固定向量來計算他們的新正交向量。它可能就像_skipping_會打破相機的角度一樣簡單... – Samaursa 2011-02-16 18:24:14

+0

你能發表一些代碼嗎?這聽起來像是你遇到了雲臺鎖,但這是四元數旋轉應該避免的。另外,你看過http://www.tecgraf.puc-rio.br/~mgattass/fcg/material/shoemake92.pdf? – andand 2011-02-16 19:14:39

+0

這不是萬向鎖。當相機直線向下或直線向上看時會遇到問題,在這種情況下,相機的方向矢量與其(固定)向上矢量平行。當發生這種情況時,攝像機不再工作(因爲其旋轉矩陣不再是正交的),因此無法計算正確的方向/向上/向右矢量。但是,如果每幀都計算一個新的上軸,以便它不再固定,相機自然會進行滾動。我會很快發佈一個例子。 – Samaursa 2011-02-21 22:38:46