Matrix4x4 Matrix4x4::ConstructCameraView(const Vector& vecPosition, const Vector& vecDirection, const Vector& vecUp) { Matrix4x4 m; m.Identity(); TAssertNoMsg(fabs(vecDirection.LengthSqr()-1) < 0.0001f); Vector vecCamSide = vecDirection.Cross(vecUp).Normalized(); Vector vecCamUp = vecCamSide.Cross(vecDirection); m.SetForwardVector(Vector(vecCamSide.x, vecCamUp.x, -vecDirection.x)); m.SetLeftVector(Vector(vecCamSide.y, vecCamUp.y, -vecDirection.y)); m.SetUpVector(Vector(vecCamSide.z, vecCamUp.z, -vecDirection.z)); m.AddTranslation(-vecPosition); return m; }