This documentation is archived and is not being maintained.

How to: Animate a 3-D Rotation Using Rotation3DAnimation

The following example shows how to make a 3D object rotate while it "wobbles" by using Rotation3DAnimation to animate the Rotation property of the RotateTransform3D object applied to the 3D object.

<Page xmlns=""
  xmlns:x="" >
      <Canvas Width="321" Height="201">

        <!-- The Viewport3D provides a rendering surface for 3-D visual content. -->
        <Viewport3D Name="MyAnimatedObject"
          ClipToBounds="True" Width="150" Height="150"
          Canvas.Left="0" Canvas.Top="10">

          <!-- Defines the camera used to view the 3D object. -->
            <PerspectiveCamera x:Name="myPerspectiveCamera" Position="0,0,2" LookDirection="0,0,-1" 
             FieldOfView="60" />

          <!-- The ModelVisual3D children contain the 3D models -->

            <!-- Two ModelVisual3D define the lights cast in the scene. Without light, the
                 3D object cannot be seen. Also, the direction of the lights affect shadowing. -->
                <DirectionalLight Color="#FFFFFF" Direction="-0.612372,-0.5,-0.612372" />
                <DirectionalLight Color="#FFFFFF" Direction="0.612372,-0.5,-0.612372" />

                  <!-- The geometry specifes the shape of the 3D plane. In this case, a flat sheet is created. -->
                     TriangleIndices="0,1,2 3,4,5 "
                     Normals="0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 "
                     TextureCoordinates="0,0 1,0 1,1 1,1 0,1 0,0 "
                     Positions="-0.5,-0.5,0.5 0.5,-0.5,0.5 0.5,0.5,0.5 0.5,0.5,0.5 -0.5,0.5,0.5 -0.5,-0.5,0.5 " />

                  <!-- The material specifies the material applied to the plane. In this case it is a linear gradient.-->
                          <LinearGradientBrush StartPoint="0,0.5" EndPoint="1,0.5">
                              <GradientStop Color="Yellow" Offset="0" />
                              <GradientStop Color="Red" Offset="0.25" />
                              <GradientStop Color="Blue" Offset="0.75" />
                              <GradientStop Color="LimeGreen" Offset="1" />

                  <!-- The Transform specifies how to transform the 3D object. The properties of the
                        Rotation object are animated causing the 3D object to rotate and "wobble" (see Storyboard below).-->
                    <RotateTransform3D x:Name="myRotateTransform3D" >
                        <AxisAngleRotation3D Axis="0,3,0" Angle="40" />

          <!-- Trigger the rotation animation when the 3D object loads. -->
            <EventTrigger RoutedEvent="Viewport3D.Loaded">

                  <!-- This animation animates the Rotation property of the RotateTransform
                       causing the 3D shape to rotate and wobble as the rotation angle and 
                       axis are animated. -->
                   AutoReverse="True"  RepeatBehavior="Forever">
                      <AxisAngleRotation3D Axis="0,3,0" Angle="-60" />
                      <AxisAngleRotation3D Axis="1,0,1" Angle="60" />