1 <!-- ControllableRotatingCubeExample.xaml
2 Uses triggers to interactively rotate a cube.
4 <Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
5 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
6 xmlns:SampleControls="SampleControls"
7 x:Class="Microsoft.Samples.Animation.AnimationGallery.ControllableRotatingCubeExample"
8 WindowTitle="3D Rotation Example">
10 <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
11 <LinearGradientBrush.GradientStops>
12 <GradientStop Color="Black" Offset="0.4" />
13 <GradientStop Color="#333333" Offset="0.5" />
14 <GradientStop Color="Black" Offset="0.6" />
15 </LinearGradientBrush.GradientStops>
16 </LinearGradientBrush>
19 <Grid DockPanel.Dock="Bottom" HorizontalAlignment="Center">
20 <Grid.ColumnDefinitions>
24 </Grid.ColumnDefinitions>
29 </Grid.RowDefinitions>
30 <Button Width="50" Height="50" Grid.Column="0" Grid.Row="1">
34 <DrawingImage.Drawing>
36 <DrawingGroup.Children>
37 <GeometryDrawing Geometry="{StaticResource LeftArrowGeometry}">
39 <Pen Thickness="10" Brush="Black" />
40 </GeometryDrawing.Pen>
42 </DrawingGroup.Children>
44 </DrawingImage.Drawing>
50 <EventTrigger RoutedEvent="Button.MouseEnter">
51 <BeginStoryboard Name="LeftSpinBeginStoryboard">
54 <!-- Rotates the cube to the left. -->
56 Storyboard.TargetName="myHorizontalRotation"
57 Storyboard.TargetProperty="Angle"
58 By="-90" Duration="0:0:0.5" IsCumulative="True"
59 RepeatBehavior="Forever" />
63 <EventTrigger RoutedEvent="Button.MouseLeave">
64 <PauseStoryboard BeginStoryboardName="LeftSpinBeginStoryboard" />
69 <Button Width="50" Height="50"
70 Grid.Column="2" Grid.Row="1">
74 <DrawingImage.Drawing>
76 <DrawingGroup.Children>
77 <GeometryDrawing Geometry="{StaticResource RightArrowGeometry}">
79 <Pen Thickness="10" Brush="Black" />
80 </GeometryDrawing.Pen>
82 </DrawingGroup.Children>
84 </DrawingImage.Drawing>
90 <EventTrigger RoutedEvent="Button.MouseEnter">
91 <BeginStoryboard Name="RightSpinBeginStoryboard">
93 <!-- Rotates the cube to the right. -->
95 Storyboard.TargetName="myHorizontalRotation"
96 Storyboard.TargetProperty="Angle"
97 By="90" Duration="0:0:0.5" IsCumulative="True"
98 RepeatBehavior="Forever" />
102 <EventTrigger RoutedEvent="Button.MouseLeave">
103 <PauseStoryboard BeginStoryboardName="RightSpinBeginStoryboard" />
109 Width="50" Height="50"
110 Grid.Column="1" Grid.Row="0">
114 <DrawingImage.Drawing>
116 <DrawingGroup.Children>
117 <GeometryDrawing Geometry="{StaticResource UpArrowGeometry}">
118 <GeometryDrawing.Pen>
119 <Pen Thickness="10" Brush="Black" />
120 </GeometryDrawing.Pen>
122 </DrawingGroup.Children>
124 </DrawingImage.Drawing>
130 <EventTrigger RoutedEvent="Button.MouseEnter">
131 <BeginStoryboard Name="UpwardSpinBeginStoryboard">
134 <!-- Rotates the cube upwards. -->
136 Storyboard.TargetName="myVerticalRotation"
137 Storyboard.TargetProperty="Angle"
138 By="90" Duration="0:0:0.5" IsCumulative="True"
139 RepeatBehavior="Forever" />
143 <EventTrigger RoutedEvent="Button.MouseLeave">
144 <PauseStoryboard BeginStoryboardName="UpwardSpinBeginStoryboard" />
149 <Button Height="50" Width="50"
150 Grid.Column="1" Grid.Row="2">
154 <DrawingImage.Drawing>
156 <DrawingGroup.Children>
157 <GeometryDrawing Geometry="{StaticResource DownArrowGeometry}">
158 <GeometryDrawing.Pen>
159 <Pen Thickness="10" Brush="Black" />
160 </GeometryDrawing.Pen>
162 </DrawingGroup.Children>
164 </DrawingImage.Drawing>
169 <EventTrigger RoutedEvent="Button.MouseEnter">
170 <BeginStoryboard Name="DownwardSpinBeginStoryboard">
173 <!-- Rotates the cube downwards. -->
175 Storyboard.TargetName="myVerticalRotation"
176 Storyboard.TargetProperty="Angle"
177 By="-90" Duration="0:0:0.5" IsCumulative="True"
178 RepeatBehavior="Forever" />
182 <EventTrigger RoutedEvent="Button.MouseLeave">
183 <PauseStoryboard BeginStoryboardName="DownwardSpinBeginStoryboard" />
192 <Viewbox ClipToBounds="True" Width="500" Height="500">
193 <!-- The object to animate. -->
194 <Viewport3D Width="400" Height="300">
196 <PerspectiveCamera x:Name="myPerspectiveCamera"
197 FarPlaneDistance="15"
198 LookDirection="0,0,-1" UpDirection="0,1,0" NearPlaneDistance="1"
199 Position="0,0,3" FieldOfView="50"
203 <ModelVisual3D.Children>
205 <ModelVisual3D.Content>
206 <AmbientLight Color="#333333" />
207 </ModelVisual3D.Content>
210 <ModelVisual3D.Content>
211 <DirectionalLight Color="#FFFFFF" Direction="-0.612372,-0.5,-0.612372" />
212 </ModelVisual3D.Content>
215 <ModelVisual3D.Content>
216 <DirectionalLight Color="#FFFFFF" Direction="0.612372,-0.5,-0.612372" />
217 </ModelVisual3D.Content>
220 <ModelVisual3D.Content>
221 <GeometryModel3D Geometry="{StaticResource CubeSide01}" Material="{StaticResource BranchesMaterial}"/>
222 </ModelVisual3D.Content>
225 <ModelVisual3D.Content>
226 <GeometryModel3D Geometry="{StaticResource CubeSide02}" Material="{StaticResource FlowersMaterial}"/>
227 </ModelVisual3D.Content>
230 <ModelVisual3D.Content>
231 <GeometryModel3D Geometry="{StaticResource CubeSide03}" Material="{StaticResource BerriesMaterial}"/>
232 </ModelVisual3D.Content>
235 <ModelVisual3D.Content>
236 <GeometryModel3D Geometry="{StaticResource CubeSide04}" Material="{StaticResource LeavesMaterial1}"/>
237 </ModelVisual3D.Content>
240 <ModelVisual3D.Content>
241 <GeometryModel3D Geometry="{StaticResource CubeSide05}" Material="{StaticResource RocksMaterial}"/>
242 </ModelVisual3D.Content>
245 <ModelVisual3D.Content>
246 <GeometryModel3D Geometry="{StaticResource CubeSide06}" Material="{StaticResource SunsetMaterial}"/>
247 </ModelVisual3D.Content>
249 </ModelVisual3D.Children>
251 <ModelVisual3D.Transform>
253 <Transform3DGroup.Children>
255 <!-- These RotateTransform objects are animated to
256 rotate the cube left and right. -->
258 <RotateTransform3D.Rotation>
259 <AxisAngleRotation3D x:Name="myHorizontalRotation" Angle="0" Axis="0 1 0" />
260 </RotateTransform3D.Rotation>
263 <RotateTransform3D.Rotation>
264 <AxisAngleRotation3D x:Name="myVerticalRotation" Angle="0" Axis="1 0 0" />
265 </RotateTransform3D.Rotation>
267 <TranslateTransform3D x:Name="myTranslateTransform"
268 OffsetX="0" OffsetY="0" OffsetZ="0" />
269 </Transform3DGroup.Children>
271 </ModelVisual3D.Transform>