2016-10-15 5 views
0

Ich habe versucht, einen Flugsimulator in WebGL mit Handler des Tastaturereignisses zu schreiben. Die Kamera sollte sich immer nach verschiedenen Drehungen in der Blickrichtung bewegen.Wie wird die Kamera in WebGL entlang der Ansichtsrichtung bewegt?

Ich habe versucht, indem die Rotation dieses Vektors nach einem Geschwindigkeitsvektor halten die ganze mvMatrix drehen und rufen

mat4.translate(mvMatrix, mvMatrix, velocity); 

es mit einer konstanten Geschwindigkeit bewegen zu machen und es funktioniert.

Jedoch, nachdem ich gerollt und geworfen habe, bewegt es sich immer noch entlang der initiierten Richtung.

Gibt es eine Möglichkeit, dieses Problem zu beheben? Vielen Dank!

Antwort

0

Die Blickrichtung Ihrer Kamera sollte ihre Z-Achse sein. (wenn Sie bei der gl-Matrix-Konvention bleiben).

// 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

Sollte ich diese Matrix mit mvMatrix in Shader multiplizieren? –

Verwandte Themen