首页 文章

围绕X轴旋转相机(three.js)

提问于
浏览
1

我正在尝试将相机旋转到场景的X轴 .
此时我的代码是这样的:

rotation += 0.05;
camera.position.y = Math.sin(rotation) * 500;
camera.position.z = Math.cos(rotation) * 500;

这使相机移动,但在旋转过程中发生奇怪的事情,或者相机翻转,或者它跳过它正在跟随的假想圆圈的某些部分 .

2 回答

  • 5

    您只提供了一段代码,因此我必须对您正在做的事情做出一些假设 .

    这段代码:

    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;
    

    相机的行为对你来说会更自然 .

  • 3

    Three.js试图让相机朝上 . 当您沿z轴传递0时,它将“修复”相机的旋转 . 您可以手动检查并重置摄像机的角度 .

    camera.lookAt( scene.position ); // the origin
    if (camera.position.z < 0) {
        camera.rotation.z = 0;
    }
    

    我敢肯定这不是最好的解决方案,但如果有人在玩three.js时遇到这个问题(就像我刚才那样),它会更进一步 .

相关问题