我正在尝试将相机旋转到场景的X轴 .此时我的代码是这样的:
rotation += 0.05; camera.position.y = Math.sin(rotation) * 500; camera.position.z = Math.cos(rotation) * 500;
这使相机移动,但在旋转过程中发生奇怪的事情,或者相机翻转,或者它跳过它正在跟随的假想圆圈的某些部分 .
您只提供了一段代码,因此我必须对您正在做的事情做出一些假设 .
这段代码:
rotation += 0.05; camera.position.x = 0; camera.position.y = Math.sin(rotation) * 500; camera.position.z = Math.cos(rotation) * 500; camera.lookAt( scene.position ); // the origin
会引起你所指的“翻转”,因为相机试图保持“正面向上”,并且当它经过“北极”时它将迅速改变方向 .
如果像这样偏移相机的x坐标,
camera.position.x = 200;
相机的行为对你来说会更自然 .
Three.js试图让相机朝上 . 当您沿z轴传递0时,它将“修复”相机的旋转 . 您可以手动检查并重置摄像机的角度 .
camera.lookAt( scene.position ); // the origin if (camera.position.z < 0) { camera.rotation.z = 0; }
我敢肯定这不是最好的解决方案,但如果有人在玩three.js时遇到这个问题(就像我刚才那样),它会更进一步 .
2 回答
您只提供了一段代码,因此我必须对您正在做的事情做出一些假设 .
这段代码:
会引起你所指的“翻转”,因为相机试图保持“正面向上”,并且当它经过“北极”时它将迅速改变方向 .
如果像这样偏移相机的x坐标,
相机的行为对你来说会更自然 .
Three.js试图让相机朝上 . 当您沿z轴传递0时,它将“修复”相机的旋转 . 您可以手动检查并重置摄像机的角度 .
我敢肯定这不是最好的解决方案,但如果有人在玩three.js时遇到这个问题(就像我刚才那样),它会更进一步 .