2016-10-15 3 views
0

私はキーボードイベントのハンドラでWebGLにフライトシミュレータを書き込もうとしていました。カメラは、さまざまな回転の後、常に視野方向に沿って移動する必要があります。WebGLのビュー方向に沿ってカメラを動かすには?

私は、全体のmvMatrixを回転させた後、このベクトルの回転を行うことにより、速度ベクトルを維持し、それが一定の速度で移動し、それが仕事をして作るために

mat4.translate(mvMatrix, mvMatrix, velocity); 

を呼び出そうとしました。

しかし、私が転がって投球した後も、それはまだ開始された方向に沿って動きます。

この問題を解決する方法はありますか?ありがとう!

答えて

0

カメラの視線方向は、Z軸である必要があります。 (もしあなたがgl-matrixの規則に従うならば)。

// on init 
// ------- 
var camMatrix = mat4.create()// the camera matrix 

// zAxis : third row (z) of cam matrix; 
var zAxis = new Float32Array(camMatrix.buffer, 32, 3); 
// position : fourth row 
var position = new Float32Array(camMatrix.buffer, 48, 3); 

// on update 
// --------- 
var velocity = 3.0 // scalar value 

// move the cam along zaxis 
vec3.scaleAndAdd(position, position, zAxis, velocity); 
+0

このマトリックスにシェーダーのmvMatrixを乗算する必要がありますか? –

関連する問題