我正在使用 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();
我尝试渲染一个玩家坐标所在的框,我得到了这个结果。摄像机似乎是从玩家坐标后面看的。现在打个比方,它就像一个第三人称游戏,它应该看起来像一个第一人称游戏
这里的小盒子是在相机坐标中渲染的,为了给一些视角,大盒子在前面。