我用这个做我的相机
library.Camera = function Camera(PosX, PosY, PosZ, Pitch, Yaw){
this.x = PosX;
this.y = PosY;
this.z = PosZ;
this.pitch = Pitch;
this.yaw = Yaw;
this.getCameraMatrix = function(ModelMatrix){
var TMatrix = ModelMatrix;
mat4.translate(TMatrix, TMatrix, [this.x, this.y, this.z]);
mat4.rotateX(TMatrix, TMatrix, degToRad(this.pitch));
mat4.rotateY(TMatrix, TMatrix, degToRad(this.yaw));
return TMatrix;
};
};
移动效果很好,甚至旋转效果也不错。问题是用鼠标旋转总是绕着原点旋转。因此,如果我向左移动 (-x) 并开始旋转,相机仍会围绕原点旋转,而不是围绕我当前所在的点旋转。
最佳答案
人们应该永远记住,线性变换是不可交换的,这只是意味着如果先旋转然后平移,您会得到与平移然后旋转不同的结果。
在您的情况下,在翻译之前进行旋转应该可以解决问题。
关于opengl - 鼠标卡在原点的相机旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17658145/