0

我正在使用 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();

我尝试渲染一个玩家坐标所在的框,我得到了这个结果。摄像机似乎是从玩家坐标后面看的。现在打个比方,它就像一个第三人称游戏,它应该看起来像一个第一人称游戏

这里的小盒子是在相机坐标中渲染的,为了给一些视角,大盒子在前面。

第三人称 第三人称 2

4

1 回答 1

0

解决了!

问题是我最初在矩阵模式设置为 GL_PROJECTION 时调用 gluLookAt()。

在我将矩阵模式设置为 GL_MODELVIEW 并解决了问题之后,我删除了该行并将其移至。

于 2012-11-23T15:01:46.827 回答