找到相机朝向的方向
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)
}
我能够获取相机的当前位置,即它在框架中的 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)
}