/// <summary> /// LoadContent will be called once per game and is the place to load /// all of your content. /// </summary> protected override void LoadContent() { // Load a font object. m_font = Content.Load <SpriteFont>("Fonts/Verdana"); // Create a screen-UI. m_screenUI = new SpriteBatch(GraphicsDevice); // Load scene objects from scene description. m_sceneRoot = SceneObject.CreateFromSceneDescription(Content, m_scene); // Set up camera. m_sceneCamera = new Camera(); // Create renderer. m_renderer = new LightPrePassRenderer(m_graphics.GraphicsDevice, Content, m_sceneCamera); m_renderer.OutputRenderTargetWidth = Window.ClientBounds.Width; m_renderer.OutputRenderTargetHeight = Window.ClientBounds.Height; Window.ClientSizeChanged += new EventHandler <EventArgs>(OnWindowClientSizeChanged); // Set up camera controller. m_cameraController = new FlyCameraController(m_sceneCamera, Window); m_cameraController.MovementSpeed = 20.0f; m_cameraController.RotationSpeed = 0.1f; m_cameraController.SetCameraProjectionParameters(MathHelper.PiOver4, m_renderer.OutputRenderTargetAspectRatio, 0.1f, 1000); // Add scene objects. m_renderer.AddScene(m_sceneRoot); }
private void PositionCamera() { Camera camera = Camera.main; camera.transform.position = new Vector3(0, 1.8f, 0); Bounds bounds = new Bounds(); Renderer[] renderers = currentObject.GetComponentsInChildren <Renderer>(); foreach (Renderer renderer in renderers) { bounds.Encapsulate(renderer.bounds); } Vector3 center = bounds.center; float r = Math.Max(Math.Max(bounds.extents.x, bounds.extents.z), bounds.extents.y); float v = Camera.main.fieldOfView; float h = Camera.main.fieldOfView; float z = (float)Math.Max(r / Math.Sin(v), r / Math.Sin(h)); // = r / Math.Sin(Math.Min(v, h)); Vector3 pos = camera.transform.position; pos.z = Math.Abs(z); //pos.y = Math.Abs(z); camera.transform.position = pos; if (lookAt != null) { DestroyImmediate(lookAt); } lookAt = new GameObject("Look At Me"); lookAt.transform.position = center; FlyCameraController controller = camera.GetComponent <FlyCameraController>(); controller.LookAt = currentObject; }