Esempio n. 1
0
        public void MovingView(object sender, RoutedEventArgs e)
        {
            _origCameraBeforeMovingView = Camera;
            var newCamera = _origCameraBeforeMovingView.Clone();

            #region set new camera animation
            Viewport.Camera = newCamera;

            const int duration = 3;

            var currentPosition = newCamera.Position;

            var nextPosition = new Point3D {
                X = currentPosition.X, Y = currentPosition.Y + 5, Z = currentPosition.Z
            };
            var positionAnimation = new Point3DAnimation(currentPosition, nextPosition, TimeSpan.FromSeconds(duration));
            positionAnimation.Completed += PositionAnimationCompleted;

            var currentLookDirection = new Vector3D(0, -5, -1);
            var nextLookDirection    = new Vector3D(-nextPosition.X, -nextPosition.Y, -nextPosition.Z);
            var lookAnimation        = new Vector3DAnimation(currentLookDirection, nextLookDirection, TimeSpan.FromMilliseconds(duration));

            var transform3DGroup     = new Transform3DGroup();
            var rotateTransform3D1   = new RotateTransform3D();
            var axisAngleRotation3D1 = new AxisAngleRotation3D(new Vector3D(0, 1, 0), 0.0);
            rotateTransform3D1.Rotation = axisAngleRotation3D1;
            transform3DGroup.Children.Add(rotateTransform3D1);
            newCamera.Transform = transform3DGroup;

            var tl = new DoubleAnimation(360, TimeSpan.FromSeconds(duration));

            axisAngleRotation3D1.BeginAnimation(AxisAngleRotation3D.AngleProperty, tl);
            newCamera.BeginAnimation(PerspectiveCamera.PositionProperty, positionAnimation);
            newCamera.BeginAnimation(PerspectiveCamera.LookDirectionProperty, lookAnimation);
            #endregion
        }