【发布时间】:2014-08-14 08:32:47
【问题描述】:
在 Three.js 中,我试图实现一个可以绕 x 和 y 轴旋转的轨道摄像机。我正在使用这两个功能:
function rotateX(rot) {
var x = camera.position.x,
y = camera.position.y,
z = camera.position.z;
camera.position.x = x * Math.cos(rot) + z * Math.sin(rot);
camera.position.z = z * Math.cos(rot) - x * Math.sin(rot);
camera.lookAt(scene.position);
}
function rotateY(rot) {
var x = camera.position.x,
y = camera.position.y,
z = camera.position.z;
camera.position.z = z * Math.cos(rot) + y * Math.sin(rot);
camera.position.y = y * Math.cos(rot) - z * Math.sin(rot);
camera.lookAt(scene.position);
}
现在 x 旋转可以正常工作,但 y 旋转不能。一旦我越过模型的顶部,因为相机的 z 位置变为负数,然后突然 lookAt 方法将相机在 Z 轴上旋转 PI 量,突然模型的左侧在右侧,反之亦然。现在我可以通过检查负 Z 来解决这个问题,然后只修复相机的旋转,但这会在同时使用 x 和 y 旋转时导致故障,然后 x 突然出现这种反转行为。
我应该如何解决这个问题?
【问题讨论】:
标签: javascript camera rotation three.js