<Grid Background="AliceBlue">
<Viewport3D>
<ModelVisual3D>
<ModelVisual3D.Content>
<GeometryModel3D>
<GeometryModel3D.Geometry>
<MeshGeometry3D>
<MeshGeometry3D.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</MeshGeometry3D.Positions>
<MeshGeometry3D.TriangleIndices>0 1 2 2 3 0</MeshGeometry3D.TriangleIndices>
</MeshGeometry3D>
</GeometryModel3D.Geometry>
<GeometryModel3D.Material>
<DiffuseMaterial>
<DiffuseMaterial.Brush>Maroon</DiffuseMaterial.Brush>
</DiffuseMaterial>
</GeometryModel3D.Material>
<GeometryModel3D.BackMaterial>
<DiffuseMaterial>
<DiffuseMaterial.Brush>Blue</DiffuseMaterial.Brush>
</DiffuseMaterial>
</GeometryModel3D.BackMaterial>
</GeometryModel3D>
</ModelVisual3D.Content>
</ModelVisual3D>
<ModelVisual3D>
<ModelVisual3D.Content>
<AmbientLight Color="White" />
</ModelVisual3D.Content>
</ModelVisual3D>
<Viewport3D.Camera>
<PerspectiveCamera>
<PerspectiveCamera.LookDirection>0,0,-1</PerspectiveCamera.LookDirection>
<PerspectiveCamera.Position>0,0,2</PerspectiveCamera.Position>
<PerspectiveCamera.FieldOfView>90</PerspectiveCamera.FieldOfView>
</PerspectiveCamera>
</Viewport3D.Camera>
</Viewport3D>
</Grid>
We want to rotate the Model around the Y axis, represented by the "1" in the definition of AxisAngleRotation3D.Axis below. Because the Model has a negative Z coordinate (-0.5) the Z component will gradually increase until the angle of rotation is 180 degrees at which point the Z coordinate becomes 0.5. Because the Z coordinate is closer to use the Model will appear larger. <Grid Background="AliceBlue">
<Viewport3D>
<ModelVisual3D>
<ModelVisual3D.Content>
<GeometryModel3D>
<GeometryModel3D.Geometry>
<MeshGeometry3D>
<MeshGeometry3D.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</MeshGeometry3D.Positions>
<MeshGeometry3D.TriangleIndices>0 1 2 2 3 0</MeshGeometry3D.TriangleIndices>
</MeshGeometry3D>
</GeometryModel3D.Geometry>
<GeometryModel3D.Material>
<DiffuseMaterial>
<DiffuseMaterial.Brush>Maroon</DiffuseMaterial.Brush>
</DiffuseMaterial>
</GeometryModel3D.Material>
<GeometryModel3D.BackMaterial>
<DiffuseMaterial>
<DiffuseMaterial.Brush>Blue</DiffuseMaterial.Brush>
</DiffuseMaterial>
</GeometryModel3D.BackMaterial>
</GeometryModel3D>
</ModelVisual3D.Content>
<ModelVisual3D.Transform>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D>
<AxisAngleRotation3D.Axis>0,1,0</AxisAngleRotation3D.Axis>
<AxisAngleRotation3D.Angle>0</AxisAngleRotation3D.Angle>
</AxisAngleRotation3D>
</RotateTransform3D.Rotation>
</RotateTransform3D>
</ModelVisual3D.Transform>
</ModelVisual3D>
<ModelVisual3D>
<ModelVisual3D.Content>
<AmbientLight Color="White" />
</ModelVisual3D.Content>
</ModelVisual3D>
<Viewport3D.Camera>
<PerspectiveCamera>
<PerspectiveCamera.LookDirection>0,0,-1</PerspectiveCamera.LookDirection>
<PerspectiveCamera.Position>0,0,2</PerspectiveCamera.Position>
<PerspectiveCamera.FieldOfView>90</PerspectiveCamera.FieldOfView>
</PerspectiveCamera>
</Viewport3D.Camera>
</Viewport3D>
</Grid>
Starting with an Angle of 0 (zero) degrees gives the same result as previously. Increasing the Angle to more than 90 degrees the reverse side of the Model comes into view.<Grid Background="AliceBlue">
<Viewport3D>
<ModelVisual3D>
<ModelVisual3D.Content>
<GeometryModel3D>
<GeometryModel3D.Geometry>
<MeshGeometry3D>
<MeshGeometry3D.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</MeshGeometry3D.Positions>
<MeshGeometry3D.TriangleIndices>0 1 2 2 3 0</MeshGeometry3D.TriangleIndices>
</MeshGeometry3D>
</GeometryModel3D.Geometry>
<GeometryModel3D.Material>
<DiffuseMaterial>
<DiffuseMaterial.Brush>Maroon</DiffuseMaterial.Brush>
</DiffuseMaterial>
</GeometryModel3D.Material>
<GeometryModel3D.BackMaterial>
<DiffuseMaterial>
<DiffuseMaterial.Brush>Blue</DiffuseMaterial.Brush>
</DiffuseMaterial>
</GeometryModel3D.BackMaterial>
</GeometryModel3D>
</ModelVisual3D.Content>
<ModelVisual3D.Transform>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D>
<AxisAngleRotation3D.Axis>0,1,0</AxisAngleRotation3D.Axis>
<AxisAngleRotation3D.Angle>120</AxisAngleRotation3D.Angle>
</AxisAngleRotation3D>
</RotateTransform3D.Rotation>
</RotateTransform3D>
</ModelVisual3D.Transform>
</ModelVisual3D>
<ModelVisual3D>
<ModelVisual3D.Content>
<AmbientLight Color="White" />
</ModelVisual3D.Content>
</ModelVisual3D>
<Viewport3D.Camera>
<PerspectiveCamera>
<PerspectiveCamera.LookDirection>0,0,-1</PerspectiveCamera.LookDirection>
<PerspectiveCamera.Position>0,0,2</PerspectiveCamera.Position>
<PerspectiveCamera.FieldOfView>90</PerspectiveCamera.FieldOfView>
</PerspectiveCamera>
</Viewport3D.Camera>
</Viewport3D>
</Grid>
The rotation can be animated by applying a DoubleAnimation to the RotateTransform.Reset the Angle to zero, name the AxisAngleRotation3D and add a Grid.Trigger to start the animation.
<Grid Background="AliceBlue">
<Viewport3D>
<ModelVisual3D>
<ModelVisual3D.Content>
<GeometryModel3D>
<GeometryModel3D.Geometry>
<MeshGeometry3D>
<MeshGeometry3D.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</MeshGeometry3D.Positions>
<MeshGeometry3D.TriangleIndices>0 1 2 2 3 0</MeshGeometry3D.TriangleIndices>
</MeshGeometry3D>
</GeometryModel3D.Geometry>
<GeometryModel3D.Material>
<DiffuseMaterial>
<DiffuseMaterial.Brush>Maroon</DiffuseMaterial.Brush>
</DiffuseMaterial>
</GeometryModel3D.Material>
<GeometryModel3D.BackMaterial>
<DiffuseMaterial>
<DiffuseMaterial.Brush>Blue</DiffuseMaterial.Brush>
</DiffuseMaterial>
</GeometryModel3D.BackMaterial>
</GeometryModel3D>
</ModelVisual3D.Content>
<ModelVisual3D.Transform>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D x:Name="Rotate">
<AxisAngleRotation3D.Axis>0,1,0</AxisAngleRotation3D.Axis>
<AxisAngleRotation3D.Angle>0</AxisAngleRotation3D.Angle>
</AxisAngleRotation3D>
</RotateTransform3D.Rotation>
</RotateTransform3D>
</ModelVisual3D.Transform>
</ModelVisual3D>
<ModelVisual3D>
<ModelVisual3D.Content>
<AmbientLight Color="White" />
</ModelVisual3D.Content>
</ModelVisual3D>
<Viewport3D.Camera>
<PerspectiveCamera>
<PerspectiveCamera.LookDirection>0,0,-1</PerspectiveCamera.LookDirection>
<PerspectiveCamera.Position>0,0,2</PerspectiveCamera.Position>
<PerspectiveCamera.FieldOfView>90</PerspectiveCamera.FieldOfView>
</PerspectiveCamera>
</Viewport3D.Camera>
</Viewport3D>
<Grid.Triggers>
<EventTrigger RoutedEvent="Grid.MouseDown">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation From="0"
To="360"
BeginTime="0:0:0"
Duration="0:0:4"
Storyboard.TargetName="Rotate"
Storyboard.TargetProperty="Angle" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Grid.Triggers>
</Grid>
No comments:
Post a Comment