我刚刚开始使用OpenGL/GLSL和GLM数学库来实现天空盒。我认为问题与矩阵有关,但我找不到使用GLM库的实现:
天空盒的模型加载得很好,但相机似乎在以第三人称相机的方式围绕它旋转。
对于我的天空盒矩阵,我每次更新相机时都会更新它。因为我使用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);
我知道天空盒不适用于平移,只考虑旋转,所以我不确定问题出在哪里。有没有更简单的方法来解决这个问题?
视觉辅助:
没有任何移动的正面: 当我旋转相机时: 我的问题是:如何使用glm:lookAt设置正确的矩阵来渲染天空盒?