示例#1
0
        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);
            }
        }
示例#2
0
        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();
            }
        }