internal static Matrix CubeFaceViewMatrix(Vector3 pos, int faceId) { Matrix viewMatrix = Matrix.Identity; switch (faceId) { case 0: viewMatrix = Matrix.CreateLookAt(pos, pos + Vector3.Left, Vector3.Up); break; case 1: viewMatrix = Matrix.CreateLookAt(pos, pos + Vector3.Right, Vector3.Up); break; case 2: viewMatrix = Matrix.CreateLookAt(pos, pos + Vector3.Up, -Vector3.Backward); break; case 3: viewMatrix = Matrix.CreateLookAt(pos, pos + Vector3.Down, -Vector3.Forward); break; case 4: viewMatrix = Matrix.CreateLookAt(pos, pos + Vector3.Backward, Vector3.Up); break; case 5: viewMatrix = Matrix.CreateLookAt(pos, pos + Vector3.Forward, Vector3.Up); break; } return(viewMatrix); }
public static void UpdateCamera() { ViewMatrix = m_viewMatrix; ViewProjectionMatrix = ViewMatrix * ProjectionMatrix; UpdateVectors(); UpdateBoundingFrustum(); ViewMatrixAtZero = Matrix.CreateLookAt(Vector3.Zero, ForwardVector, UpVector); ViewProjectionMatrixAtZero = ViewMatrixAtZero * ProjectionMatrix; CornerFrustum = CalculateCornerFrustum(); ProjectionMatrixForFarObjects = Matrix.CreatePerspectiveFieldOfView(FieldOfView, AspectRatio, NEAR_PLANE_FOR_BACKGROUND, FAR_PLANE_FOR_BACKGROUND); }