找到相机朝向的方向

时间:2017-03-15 11:48:57

标签: aframe

我能够获得相机所处的当前位置,即其在aframe中的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有关吗?

2 个答案:

答案 0 :(得分:2)

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

获取相机对象

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

然后您可以访问相机的所有矢量数据。要获得相机所面向的方向,您可以使用camera.getWorldDirection()并返回带有X,Y和Z值的Vector3。

答案 1 :(得分:2)

我终于想出了如何做到这一点。相机具有旋转属性,可以给出旋转角度。通过这些数据和一些三角函数,我们可以找到更新的位置。以下代码将相机移动到用户看到的方向。

    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)

    }