2012-03-21 21 views
0

我正在使用jPCT庫進行FPS工作。所有FPS需要的關鍵之一是通過向上/向下拉動鼠標來防止玩家看到他們。目前,我正在使用JPCT網站上的一些示例代碼來跟蹤攝像機添加了多少個角度,但我擔心所有角度都以弧度表示的四捨五入問題。我可以從jPCT的相機中得到一個旋轉矩陣,我知道它包含了找出玩家看起來「高」的信息,但我不知道如何從矩陣中找出它。查找相機有多高的旋轉角度

我會在旋轉矩陣中尋找什麼,它會告訴我球員是否看起來比海峽更「向上」,比向下看更多「向下」?

回答

0

如果每次播放器移動時都更新矩陣,由於浮點錯誤,您將遇到麻煩,並且旋轉矩陣將變爲扭曲矩陣。一種解決方案是不時地對矩陣進行正交歸一化處理,但通常最好是將玩家的音高,偏航(並在需要時滾動)作爲浮動,並在玩家改變方向時從這些角度構建矩陣,向上/向下等等。如果您對每個角度使用優化代碼(或將歐拉角度轉換爲矩陣的單一方法),那麼它的速度並不比您現在所做的要慢。你不會遇到Gimbal鎖定問題,因爲相機方向將受到限制。

至於你的具體問題,我認爲你需要計算矩陣Z軸(第三行或列,取決於你的矩陣如何定向)和一個未旋轉的向量指向Z軸的角度。

+0

首先,我不能只存儲音高,偏航和滾動,因爲jPCT沒有提供設置旋轉角度的方法,只能通過它旋轉。我想避免跟蹤角度,因爲沒有辦法糾正相機。其次,我將如何計算Z軸之間的角度?第三,你是不是指Y軸,因爲它是3D建模的上下? – LRFLEW 2012-03-21 18:34:59

+0

1.我打算從角度自己計算旋轉矩陣,然後像以前一樣將它提交給渲染器。 2. https://www.google.co.uk/search?q=angle+between+vectors 3.要麼做,取決於你選擇哪一個 - Z(水平)角度將是+/- 80度(或任何限制你設置),與Y(垂直)它會等等10-170。我個人比較喜歡+/-,但取決於你。 – Gilead 2012-03-21 18:46:21