private SceneThumbInfo renderSceneThumbnail() { SceneThumbInfo sceneThumbInfo = new SceneThumbInfo(); ImageRendererProperties imageProperties = new ImageRendererProperties(); imageProperties.Width = SlideImageManager.SceneThumbWidth; imageProperties.Height = SlideImageManager.SceneThumbHeight; imageProperties.AntiAliasingMode = 2; imageProperties.TransparentBackground = false; imageProperties.UseActiveViewportLocation = false; imageProperties.OverrideLayers = true; imageProperties.ShowBackground = false; imageProperties.ShowWatermark = false; imageProperties.ShowUIUpdates = false; slide.StartupAction.configureThumbnailProperties(imageProperties); imageProperties.CustomizeCameraPosition = (camera, viewport) => { SceneNode node = camera.getParentSceneNode(); Vector3 position = node.getDerivedPosition(); Vector3 lookAt = imageProperties.CameraLookAt; Vector3 topLeft = SceneViewWindow.Unproject(0, 0, camera.getViewMatrix(), camera.getProjectionMatrix()); Vector3 bottomRight = SceneViewWindow.Unproject(1, 1, camera.getViewMatrix(), camera.getProjectionMatrix()); Vector3 include = imageProperties.IncludePoint; //Move camera back more float distance = -60; Vector3 direction = (position - lookAt).normalized(); node.setPosition(position - (direction * distance)); camera.lookAt(lookAt); Vector2 includeLoc = SceneViewWindow.Project(include, camera.getViewMatrix(), camera.getProjectionMatrix(), imageProperties.Width, imageProperties.Height); sceneThumbInfo.IncludeX = (int)includeLoc.x; sceneThumbInfo.IncludeY = (int)includeLoc.y; sceneThumbInfo.Color = viewport.getBackgroundColor(); }; sceneThumbInfo.SceneThumb = imageRenderer.renderImage(imageProperties); return(sceneThumbInfo); }