public static void SetCameraView(HelixViewport3D viewPort, eCameraViews view, double animationTime) { Vector3D faceNormal = GetNormal(view); Vector3D faceUp = GetUpVector(view); Vector3D lookDirection = -faceNormal; Vector3D upDirection = faceUp; lookDirection.Normalize(); upDirection.Normalize(); ProjectionCamera camera = viewPort.Camera as ProjectionCamera; if (camera != null) { var target = camera.Position + camera.LookDirection; double distance = camera.LookDirection.Length; lookDirection *= distance; var newPosition = target - lookDirection; viewPort.SetView(newPosition, lookDirection, upDirection, animationTime); } }
private static Vector3D GetUpVector(eCameraViews view) { switch (view) { case eCameraViews.Top: return(CameraViews.StandardViews.UpVectors.Top); case eCameraViews.Bottom: return(CameraViews.StandardViews.UpVectors.Bottom); case eCameraViews.Left: return(CameraViews.StandardViews.UpVectors.Left); case eCameraViews.Right: return(CameraViews.StandardViews.UpVectors.Right); case eCameraViews.Isometric_PPP: return(CameraViews.IsometricViews.UpVectors.PPP); case eCameraViews.Isometric_MPP: return(CameraViews.IsometricViews.UpVectors.MPP); case eCameraViews.Isometric_PMP: return(CameraViews.IsometricViews.UpVectors.PMP); case eCameraViews.Isometric_MMP: return(CameraViews.IsometricViews.UpVectors.MMP); default: throw new NotSupportedException(); } }