找到相机朝向的方向

Finding the direction in which the camera faces

我能够获取相机的当前位置,即它在框架中的 x、y、z 坐标。

在下面的代码中,我让我的相机向前移动。

function move_camera_forward(){
x=$("#cam").attr("position").x;
y=$("#cam").attr("position").y;
z=$("#cam").attr("position").z;
updated_pos=x+" "+y+" "+String(Number(z)-0.2);
$("#cam").attr("position",updated_pos);
}

但这会沿 z 轴移动相机,而不管相机面向的方向。我想根据相机所面对的方向移动相机。如果相机面向 45 度,我想更新三个坐标。为此,我需要找出相机面向的方向。我怎样才能做到这一点?跟fov有关系吗?

您可以深入研究 Three.js API 以获取 Aframe 不一定浮出水面的任何其他信息。所以你可以使用

获取相机对象

var camera = document.querySelector('[camera]').object3D

然后您就可以访问相机的所有矢量数据。要获得相机朝向的方向,您可以使用 camera.getWorldDirection() 并且 returns 具有 X、Y 和 Z 值的 Vector3。

我终于知道怎么做了。相机有一个旋转属性,它给了我旋转的角度。有了这些数据和一些三角函数,我们就可以找到更新后的位置。下面的代码将相机沿用户看到的方向移动。

    new_x = 0;
    new_z = 0;
    function move_camera_forward() {
        x = $("#cam").attr("position").x;
        y = $("#cam").attr("position").y;
        z = $("#cam").attr("position").z;
        radian = -($("#cam").attr("rotation").y) * (Math.PI / 180);
        new_z = (new_z + (0.1 * Math.cos(radian)));
        new_x = new_x + (0.1 * Math.sin(radian));
        new_pos = new_x + " " + y + " " + (-new_z);
        console.log(new_pos)
        $("#cam").attr("position", new_pos)

    }