首页 > 解决方案 > three.js - 如何围绕lookAt(object)和相机位置之间的线旋转相机

问题描述

我目前正在尝试通过查看对象来围绕目标对象和相机之间存在的线旋转相机。

我以为我可以绕Z轴旋转,但我错了。我猜是因为所有轴都旋转了,所以 lookAt(object) 工作。

抱歉,如果这里已经有解决方案但我找不到它..

感谢您的帮助!

draw3d(renderer) {
        let targetPlayer = this.players[this.followPlayer];

        let mesh = targetPlayer.three.mesh;

        let d = 4;

        let relativeCameraOffset = new THREE.Vector3(0, d / 1.2, 2 * d);
        let cameraOffset = relativeCameraOffset.applyMatrix4(mesh.matrixWorld);
        this.three.camera.position.x = cameraOffset.x;
        this.three.camera.position.z = cameraOffset.z;
        this.three.camera.position.y = cameraOffset.y;
        this.three.camera.lookAt(mesh.position);

        // ROTATE CAMERA LOOKAT BY PLAYERS STEERING
        // camera.rotation.z = targetPlayer.steering;

        renderer.render(this.three.scene, this.three.camera);
    }

标签: three.js

解决方案


我认为您正在寻找的而不是rotation.zcamera.rotateZ(degs)计算结束时。正如您在 docs中看到的,rotateZ()采用其当前旋转,并执行局部空间 Z 旋转。


推荐阅读