【问题标题】:Finding the direction in which the camera faces找到相机面对的方向
【发布时间】:2017-08-06 03:22:52
【问题描述】:

我能够得到相机的当前位置,即它在框架中的 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有关系吗?

【问题讨论】:

    标签: aframe


    【解决方案1】:

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

    获取相机对象

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

    然后您就可以访问相机的所有矢量数据。要获取相机朝向的方向,您可以使用camera.getWorldDirection(),它会返回一个带有 X、Y 和 Z 值的 Vector3。

    【讨论】:

      【解决方案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)
      
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-05-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多