2017-07-29 97 views
0

我一直在努力的3D遊戲引擎和我遇到的振盪對象有問題的對象都在顫抖:OpengGL:如果旋轉相機

img

如果旋轉相機(沒有翻譯) ,然後對象開始晃動。此外,我注意到,在一個軌道(這是一個空間模擬器的原型)之後,搖晃和我開始遊戲時一樣低。我認爲搖動不會更糟的時候,相機座標幾乎爲零。

攝像機被綁定到對象,因此它應該是不可能的震動來自於動搖對象的物理座標,因爲這時相機應該動搖了。

我計算的視圖和投影矩陣是這樣的:

cameraAndProjectionMatrixSmallObjects = 
glm::perspective(glm::radians(70.f), 1.9f, 0.001f, 100.0f);* 
glm::lookAt(worldPosition, heading + worldPosition, up); 

我認爲可能是與浮點精度的問題,但如果是這樣的事情我不知道該怎麼解決它。

+0

是您的向上向量垂直於視線('heading')的線,或者是它在相同的方向設置錯誤幾乎一樣的視線(當相機搖動)? – Rabbid76

+0

這是正常的標題,如果標題旋轉,然後向上將旋轉相同的矩陣。 –

+0

@DariusDuesentrieb看看這裏:[?是否有可能使大小和質量的物質現實正體太陽能系統仿真(https://stackoverflow.com/a/28020934/2521214)。使用相對座標將會有很大幫助(在傳遞給OpenGL **之前,翻譯網格使得(0.0.0)是相機位置)。 – Spektre

回答

1

你的對象是來自世界原點太遠。 GPU的精度浮點數有限,如果使用大數字,則對象開始晃動。嘗試縮放1000倍的所有內容。您可以在此找到有關此問題的詳細說明here

+0

我做到了,但它沒有更好。也許我誤解了你。 –

+0

檢查大數字傳遞給OpenGL並更改您的代碼以避免它們。 – abenci