public FreeCamera(float aspectRatio, float fov) { float fovdegree = 90; Cam = new Camera(new Vector3(0, 5, 0), new Vector3(0, 0, 1), Vector3.UnitY, aspectRatio, MathHelper.DegreesToRadians(fovdegree), 0.1f, 10000.0f); Camera.MainDisplayCamera = Cam; Game.OnBeforeDraw += UpdateSterring; Game.OnMouseMove += OnMouseMove; Game.OnKeyUp += (o, e) => { if(e.Key == OpenTK.Input.Key.M) { fovdegree += 5f; if(fovdegree >= 179) fovdegree = 179; Matrix4 a = Matrix4.Zero; Matrix4.CreatePerspectiveFieldOfView(MathHelper.DegreesToRadians(fovdegree), aspectRatio, 0.1f, 10000.0f, out a); Cam.SetProjectionMatrix(a); Camera.Current.FocalLength = (float)(43.266f / (2.0f * Math.Tan(Math.PI * fovdegree / 360.0f))) / 1.5f; } if(e.Key == OpenTK.Input.Key.N) { fovdegree -= 5f; if(fovdegree <= 10) fovdegree = 10; Matrix4 a = Matrix4.Zero; Matrix4.CreatePerspectiveFieldOfView(MathHelper.DegreesToRadians(fovdegree), aspectRatio, 0.1f, 10000.0f, out a); Cam.SetProjectionMatrix(a); Camera.Current.FocalLength = (float)(43.266f / (2.0f * Math.Tan(Math.PI * fovdegree / 360.0f))) / 1.5f; } }; }