[英]OpenGL/GLSL/GLM - Skybox rotates as if in 3rd person
我剛開始實現天空盒,並且使用OpenGL / GLSL和GLM作為我的數學庫來實現。 我認為問題與矩陣有關,並且我無法找到利用GLM庫的實現:
天空盒的模型可以很好地加載,但是相機會對其進行環繞,就像它在3d第三人稱相機中圍繞它旋轉一樣。
對於我的Skybox矩陣,每次相機更新時都會對其進行更新。 因為我使用glm :: lookAt,所以它的創建方式與我的視圖矩陣基本相同,除了我將0、0、0用作方向。
這是我的視圖矩陣創建。 它可以很好地渲染對象和幾何體:
direction = glm::vec3(cos(anglePitch) * sin(angleYaw), sin(anglePitch), cos(anglePitch) * cos(angleYaw));
right = glm::vec3(sin(angleYaw - 3.14f/2.0f), 0, cos(angleYaw - 3.14f/2.0f));
up = glm::cross(right, direction);
glm::mat4 viewMatrix = glm::lookAt(position, position+direction, up);
類似地,我的天空矩陣是通過相同的方式創建的,只有一個更改:
glm::vec3 position = glm::vec3(0.0f, 0.0f, 0.0f);
glm::mat4 skyView = glm::lookAt(position, position + direction, up);
我知道Skybox不會應用翻譯,而只會考慮旋轉,因此我不確定問題出在哪里。 有沒有更簡單的方法可以做到這一點?
視覺輔助:
繼續前進,沒有任何動靜
當我旋轉相機時:
我的問題是:如何使用glm:lookAt設置正確的矩陣以渲染天空盒?
Esthete是正確的skybox / skydome是僅表示不更改投影矩陣的對象!
您的渲染應該是這樣的:
當然,您可以將攝像機位置(投影矩陣)臨時設置為(0,0,0)並保留具有相同標識的modelview矩陣,這有時是更精確的方法,但不要忘記在繪制天窗之后重新設置攝像機位置。
希望能幫助到你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.