2016-10-15 3 views
0

키보드 이벤트 처리기로 WebGL에서 비행 시뮬레이터를 작성하려고했습니다. 카메라는 다양한 회전 후에 항상보기 방향을 따라 이동해야합니다. WebGL에서 뷰 방향을 따라 카메라를 이동하는 방법은 무엇입니까?

난 후 전체 mvMatrix을 회전

mat4.translate(mvMatrix, mvMatrix, velocity); 

그것이 일정한 속도로 이동하려면 전화가 작동하지 않습니다이 벡터의 회전을 수행하여 속도 벡터를 유지하기 위해 노력했다.

그러나 굴림과 투구가 시작된 후에도 시작된 방향으로 계속 이동합니다.

이 문제를 해결할 방법이 있습니까? 감사!

답변

0

카메라의 시야 방향은 Z 축이어야합니다. (당신이 글린 - 행렬 규칙을 고수한다면).

// 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를 곱해야합니까? –

관련 문제