Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OpenGL";照相机“;在错误的轴上偏航_Opengl_Lwjgl_Vector Graphics - Fatal编程技术网

OpenGL";照相机“;在错误的轴上偏航

OpenGL";照相机“;在错误的轴上偏航,opengl,lwjgl,vector-graphics,Opengl,Lwjgl,Vector Graphics,我正在使用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世界中旋转时,我似乎正在围绕始终在我前面的轴旋转

我正在使用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();
我尝试渲染一个玩家坐标所在的框,得到了这个结果。摄像机似乎是从玩家坐标后面看的。用一个类比现在它就像一个第三人称游戏,它应该看起来像一个第一人称游戏

这里的小盒子是在摄影机坐标系中渲染的,为了提供一些透视效果,大盒子在前面

解决了

问题是,我最初调用gluLookAt()时,矩阵模式设置为GL_投影


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

请注意,您使用的是xPosition+lz。可能应该是xPosition+lx这只是问题上的一个输入错误,对不起,你是想绕着物体旋转相机吗?对象的位置是xPosition、yPosition、zPosition吗?如果是这样,您应该将xPosition+lx、yPosition、zPosition+lz作为前三个参数(眼睛位置),将xPosition、yPosition、zPosition作为嵌套参数(对象位置),“相机”偏航通过按“A”和“D”键、“A”向左偏航和“D”向右偏航来控制。我的问题是偏航轴似乎在相机前面。物体的位置是分开的,我可以选择看还是不看。lx和lz变量是使用偏航角度计算的,只是当我靠近一个物体并试图转动相机时,问题特别明显,因为偏航轴的位置在物体内部。无论如何,你使用的代码都非常过时;我建议切换到新版本;您需要自己创建所有矩阵,但问题很可能会消失。