我正在使用gluLookAt()来设置“相机”的位置和方向
GLU.gluLookAt(xPosition, yPosition, zPosition,
xPosition + lx, yPosition, zPosition + lz
0, 1, 0);
我的lz和lx变量代表我的前向载体
lz = Math.cos(angle);
lx = -Math.sin(angle);
当在3D世界中转身时,我似乎围绕一个始终在我面前的轴旋转
我知道这是因为我的xPosition和yPosition变量保持不变,但是当我接近它并且转向时,我似乎旋转了一个物体。
我知道我在这里使用的数学没有问题,因为我尝试使用过去项目中的代码,这些代码已经正常工作但问题仍然存在。
这就是我在渲染循环中所做的事情
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
//draw scene from user perspective
glLoadIdentity();
GLU.gluLookAt(camera.getxPos(), camera.getyPos(), camera.getzPos(),
camera.getxPos()+camera.getLx(), camera.getyPos(), camera.getzPos()+p1.getLz(),
0, 1, 0);
glBegin(GL_QUADS);
glVertex3f(-dim, dim, 0);
glVertex3f(dim, dim, 0);
glVertex3f(dim, 0, 0);
glVertex3f(-dim, 0, 0);
glEnd();
pollInput();
camera.update();
我尝试渲染一个玩家坐标的框,我得到了这个结果。相机似乎从玩家坐标后面看。现在使用类比它就像一个第三人称游戏,它应该看起来像第一人称游戏
这里的小方框是在相机坐标中渲染的,为了给出更大的方框在前方的一些视角。
答案 0 :(得分:0)
解决!
问题是我最初调用gluLookAt()而矩阵模式设置为GL_PROJECTION。
我删除了该行,并在将矩阵模式设置为GL_MODELVIEW之后将其移动到了解决问题的位置。