Recompute up vector in lookAt.
This commit is contained in:
parent
6a39913859
commit
767155a227
@ -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;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user