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 m;
|
||||||
mat4 t;
|
mat4 t;
|
||||||
vec3 cross;
|
vec3 side;
|
||||||
cross = sweet_vector_cross (up, dir);
|
side = sweet_vector_cross (up, dir);
|
||||||
cross = sweet_vector_normalize3 (cross);
|
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[1] = up.x;
|
||||||
m.v[2] = -dir.x;
|
m.v[2] = -dir.x;
|
||||||
m.v[3] = 0;
|
m.v[3] = 0;
|
||||||
|
|
||||||
m.v[4] = cross.y;
|
m.v[4] = side.y;
|
||||||
m.v[5] = up.y;
|
m.v[5] = up.y;
|
||||||
m.v[6] = -dir.y;
|
m.v[6] = -dir.y;
|
||||||
m.v[7] = 0;
|
m.v[7] = 0;
|
||||||
|
|
||||||
m.v[8] = cross.z;
|
m.v[8] = side.z;
|
||||||
m.v[9] = up.z;
|
m.v[9] = up.z;
|
||||||
m.v[10] = -dir.z;
|
m.v[10] = -dir.z;
|
||||||
m.v[11] = 0;
|
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[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[14] = pos.x * dir.x + pos.y * dir.y + pos.z * dir.z;
|
||||||
m.v[15] = 1;
|
m.v[15] = 1;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user