/// <summary> /// Calculates the view matrix. /// </summary> /// <param name="position">The position.</param> /// <param name="direction">The direction.</param> /// <param name="up">The up direction.</param> /// <returns>The calculated view matrix.</returns> public static Matrix CalculateViewMatrix(Vector3 position, Vector3 direction, Vector3 up) { var n = -direction.Normalized(); var u = up.Cross(n).Normalized(); var v = n.Cross(u); var e = -position; return new Matrix( u.X, u.Y, u.Z, u.Dot(e), v.X, v.Y, v.Z, v.Dot(e), n.X, n.Y, n.Z, n.Dot(e), 0, 0, 0, 1); }