2014-09-13 113 views
0

我用vecmath.lookatMatrix(eye, center, up)設置了這臺相機。
運動正常,向前,向後,向右,向左,這些工作正常。 什麼似乎沒有工作很好是旋轉。帶矢量的自由飛行相機 - 如何正確旋轉?

我不是在數學真的很好,所以我想我可以在這裏失去了一些邏輯,但我想旋轉就這樣工作的:
周圍的Y軸旋轉我加/減的值到中心向量的X值
圍繞X軸的旋轉I向中心向量的的的值添加/ sub值。
例如這裏是向右轉:center = center.add(vecmath.vector(turnSpeed, 0, 0))

這實際上有效,但有一些奇怪的行爲。看起來中心矢量值的x/y越高,旋轉越慢。我想這是因爲通過添加/減去中心向量它移動太遠或類似的東西,我真的想知道實際發生了什麼。

其實在寫這個,我才意識到這不能這樣工作,因爲一旦我搬來搬去和旋轉了一下,例如我在「半空中」,旋轉將是錯誤的.. ..

我真的希望有人能幫助我在這裏。

回答

1

旋轉裝置,用於OpenGL的載體應該使用matrices完成。線性運動可以通過簡單地將矢量相加在一起來執行,但是對於旋轉來說,僅僅改變其中一個座標是不夠的......如果是這種情況,您是如何從(X,0,0)方向到( 0,X,0)?
Here是另一個教程,這是C++,但也有Java示例太。
背後有一點數學 - 你似乎熟悉矢量,可能對它們有'感覺',這有助於。
編輯 - 如果你是在OpenGL中正確使用矩陣,你需要熟悉MVP concepts。你有什麼東西可以顯示(模型),它放置在你的世界(視圖)中你正在通過相機(投影)看的地方。

+0

嗯,坦克你的第一篇文章,似乎有趣。 從我的理解我需要乘旋轉矩陣的眼睛和中心之間的向量? 只是爲了清楚我的意思:http://2.bp.blogspot.com/_ltmZpULxXtI/TSZll_0SASI/AAAAAAAAAeY/nal05L9OOm4/s320/gluLookAt_camera.png 我剛試過,但我覺得我失敗了.... – 2014-09-13 22:33:32

+1

我已經添加了一個鏈接到我的答案,檢查出來。 – sfThomas 2014-09-15 07:21:10

+0

我試着用這些矩陣工作,它種工作中途,它只是工作繞Y軸但不THEX軸,我不知道這是否是從我不好動,但我張貼「新「問題是一個新問題。但有人幫助我,所以我會在這裏發佈一個鏈接來回答這個問題。 我希望這對你有好處,我很高興你試圖幫助我,我會upvote你的答案。 – 2014-09-15 14:53:08