Recompute up vector in lookAt.

This commit is contained in:
Luc Girod 2014-04-23 01:48:48 +02:00
parent 6a39913859
commit 767155a227

View File

@ -243,26 +243,28 @@ sweet_matrix_look_at (vec3 pos, vec3 dir, vec3 up)
{
mat4 m;
mat4 t;
vec3 cross;
cross = sweet_vector_cross (up, dir);
cross = sweet_vector_normalize3 (cross);
vec3 side;
side = sweet_vector_cross (up, dir);
side = sweet_vector_normalize3 (side);
up = sweet_vector_cross (side, dir);
up = sweet_vector_normalize3 (up);
m.v[0] = cross.x;
m.v[0] = side.x;
m.v[1] = up.x;
m.v[2] = -dir.x;
m.v[3] = 0;
m.v[4] = cross.y;
m.v[4] = side.y;
m.v[5] = up.y;
m.v[6] = -dir.y;
m.v[7] = 0;
m.v[8] = cross.z;
m.v[8] = side.z;
m.v[9] = up.z;
m.v[10] = -dir.z;
m.v[11] = 0;
m.v[12] = -pos.x * cross.x - pos.y * cross.y - pos.z * cross.z;
m.v[12] = -pos.x * side.x - pos.y * side.y - pos.z * side.z;
m.v[13] = -pos.x * up.x - pos.y * up.y - pos.z * up.z;
m.v[14] = pos.x * dir.x + pos.y * dir.y + pos.z * dir.z;
m.v[15] = 1;