예제 #1
0
파일: Camera.cs 프로젝트: MarkWilds/Arbatel
        public void Rotate()
        {
            // TODO: Hook up Roll. Not critical, but nice to have.
            float yawRad   = MathHelper.DegreesToRadians(Yaw);
            float pitchRad = MathHelper.DegreesToRadians(Pitch);

            Front.X = Convert.ToSingle(Math.Cos(pitchRad) * Math.Cos(yawRad));
            Front.Y = Convert.ToSingle(Math.Sin(pitchRad));
            Front.Z = Convert.ToSingle(Math.Cos(pitchRad) * Math.Sin(yawRad));

            Front.Normalize();

            Right = Vector3.Normalize(Vector3.Cross(Front, WorldUp));
            Up    = Vector3.Normalize(Vector3.Cross(Right, Front));

            ViewMatrix = Matrix4.LookAt(Position, Position + Front, Up);

            Frustum?.Update(Position, Front, Right, Up, Fov, AspectRatio, NearClip, FarClip);
        }
예제 #2
0
파일: Camera.cs 프로젝트: MarkWilds/Arbatel
        public void UpdateProjectionMatrix()
        {
            ProjectionMatrix = Matrix4.CreatePerspectiveFieldOfView(MathHelper.DegreesToRadians(Fov), AspectRatio, NearClip, FarClip);

            Frustum?.Update(Position, Front, Right, Up, Fov, AspectRatio, NearClip, FarClip);
        }