2017-03-15 4 views
0

を向いている方向を見つけます。以下のコードでカメラ私はカメラであり、現在位置、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度であれば、私は3つの座標を更新したいと思います。このためには、カメラがどちらの方向に向いているかを知る必要があります。これどうやってするの?それはfovと関係がありますか?

答えて

1

私は最終的にこれを行う方法を考え出しました。カメラには、回転角度を与える回転属性があります。このデータと少しの三角法で、更新された位置を見つけることができます。以下のコードは、ユーザーが見る方向にカメラを移動します。

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) 

    } 
1

あなたはAFRAMEが表面に必ずしもバブルを行うことを、追加の情報を取得するThree.js APIに飛び込むことができます。だから、

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

を使用してカメラオブジェクトを取得することができ、その後、あなたはカメラのためのすべてのベクトルデータへのアクセスを持っています。カメラが向いている方向を取得するには、camera.getWorldDirection()を使用し、X、Y、Zの値を持つVector3を返します。

関連する問題