// Declare scene objects.
Viewport3D myViewport3D = new Viewport3D();
Model3DGroup myModel3DGroup = new Model3DGroup();
GeometryModel3D myGeometryModel = new GeometryModel3D();
ModelVisual3D myModelVisual3D = new ModelVisual3D();
//PerspectiveCamera myPCamera = new PerspectiveCamera();
//myPCamera.Position = new Point3D(0, 0, 1);
//myPCamera.LookDirection = new Vector3D(0, 0, -1);
OrthographicCamera myOCamera = new OrthographicCamera(new Point3D(0, 0, 1), new Vector3D(0, 0, -1), new Vector3D(0, 1, 0),8);
myViewport3D.Camera = myOCamera;
DirectionalLight myDirectionalLight = new DirectionalLight();
myDirectionalLight.Color = Colors.White;
myDirectionalLight.Direction = new Vector3D(-0, -0, -3);
myModel3DGroup.Children.Add(myDirectionalLight);
// The geometry specifes the shape of the 3D plane. In this sample, a flat sheet
// is created.
MeshGeometry3D myMeshGeometry3D = new MeshGeometry3D();
// Create a collection of normal vectors for the MeshGeometry3D.
Vector3DCollection myNormalCollection = new Vector3DCollection();
myNormalCollection.Add(new Vector3D(0, 0, 1));
myNormalCollection.Add(new Vector3D(0, 0, 1));
myNormalCollection.Add(new Vector3D(0, 0, 1));
myNormalCollection.Add(new Vector3D(0, 0, 1));
myNormalCollection.Add(new Vector3D(0, 0, 1));
myNormalCollection.Add(new Vector3D(0, 0, 1));
myNormalCollection.Add(new Vector3D(0, 0, 1));
myNormalCollection.Add(new Vector3D(0, 0, 1));
myNormalCollection.Add(new Vector3D(0, 0, 1));
myNormalCollection.Add(new Vector3D(0, 0, 1));
myNormalCollection.Add(new Vector3D(0, 0, 1));
myNormalCollection.Add(new Vector3D(0, 0, 1));
myNormalCollection.Add(new Vector3D(0, 0, 1));
myNormalCollection.Add(new Vector3D(0, 0, 1));
myNormalCollection.Add(new Vector3D(0, 0, 1));
myNormalCollection.Add(new Vector3D(0, 0, 1));
myNormalCollection.Add(new Vector3D(0, 0, 1));
myNormalCollection.Add(new Vector3D(0, 0, 1));
myNormalCollection.Add(new Vector3D(0, 0, 1));
myNormalCollection.Add(new Vector3D(0, 0, 1));
myNormalCollection.Add(new Vector3D(0, 0, 1));
myNormalCollection.Add(new Vector3D(0, 0, 1));
myNormalCollection.Add(new Vector3D(0, 0, 1));
myNormalCollection.Add(new Vector3D(0, 0, 1));
myNormalCollection.Add(new Vector3D(0, 0, 1));
myNormalCollection.Add(new Vector3D(0, 0, 1));
myNormalCollection.Add(new Vector3D(0, 0, 1));
myNormalCollection.Add(new Vector3D(0, 0, 1));
myNormalCollection.Add(new Vector3D(0, 0, 1));
myNormalCollection.Add(new Vector3D(0, 0, 1));
myNormalCollection.Add(new Vector3D(0, 0, 1));
myNormalCollection.Add(new Vector3D(0, 0, 1));
myNormalCollection.Add(new Vector3D(0, 0, 1));
myNormalCollection.Add(new Vector3D(0, 0, 1));
myNormalCollection.Add(new Vector3D(0, 0, 1));
myNormalCollection.Add(new Vector3D(0, 0, 1));
myMeshGeometry3D.Normals = myNormalCollection;
// Create a collection of vertex positions for the MeshGeometry3D.
Point3DCollection myPositionCollection = new Point3DCollection();
myPositionCollection.Add(new Point3D(0.0, 0.0, 0.0));
myPositionCollection.Add(new Point3D(1.0, 0.0, 0.0));
myPositionCollection.Add(new Point3D(1.0, 1.0, 0.0));
myPositionCollection.Add(new Point3D(1.0, 1.0, 0.0));
myPositionCollection.Add(new Point3D(0.0, 1.0, 0.0));
myPositionCollection.Add(new Point3D(0.0, 0.0, 0.0));
myPositionCollection.Add(new Point3D(1.0, 0.0, 0.0));
myPositionCollection.Add(new Point3D(1.0, 0.0, 1.0));
myPositionCollection.Add(new Point3D(1.0, 1.0, 1.0));
myPositionCollection.Add(new Point3D(1.0, 1.0, 1.0));
myPositionCollection.Add(new Point3D(1.0,1.0, 0.0));
myPositionCollection.Add(new Point3D(1.0, 0.0, 0.0));
myPositionCollection.Add(new Point3D(0.0, 1.0, 0.0));
myPositionCollection.Add(new Point3D(1.0, 1.0, 0.0));
myPositionCollection.Add(new Point3D(1.0, 1.0, 1.0));
myPositionCollection.Add(new Point3D(1.0, 1.0, 1.0));
myPositionCollection.Add(new Point3D(0.0, 1.0, 1.0));
myPositionCollection.Add(new Point3D(0.0, 1.0, 0.0));
myPositionCollection.Add(new Point3D(0, 0, 1));
myPositionCollection.Add(new Point3D(0, 1, 1));
myPositionCollection.Add(new Point3D(1, 1, 1));
myPositionCollection.Add(new Point3D(1, 1, 1));
myPositionCollection.Add(new Point3D(1, 0, 1));
myPositionCollection.Add(new Point3D(0, 0, 1));
myPositionCollection.Add(new Point3D(0, 0, 0));
myPositionCollection.Add(new Point3D(0, 1, 0));
myPositionCollection.Add(new Point3D(0, 1, 1));
myPositionCollection.Add(new Point3D(0, 1, 1));
myPositionCollection.Add(new Point3D(0, 0, 1));
myPositionCollection.Add(new Point3D(0, 0, 0));
myPositionCollection.Add(new Point3D(0, 0, 0));
myPositionCollection.Add(new Point3D(0, 0, 1));
myPositionCollection.Add(new Point3D(1, 0, 1));
myPositionCollection.Add(new Point3D(1, 0, 1));
myPositionCollection.Add(new Point3D(1, 0, 0));
myPositionCollection.Add(new Point3D(0, 0, 0));
myMeshGeometry3D.Positions = myPositionCollection;
// Create a collection of triangle indices for the MeshGeometry3D.
Int32Collection myTriangleIndicesCollection = new Int32Collection();
for (int i = 0; i < 6 * 3 * 2; ++i)
{
myTriangleIndicesCollection.Add(i);
}
myMeshGeometry3D.TriangleIndices = myTriangleIndicesCollection;
// Apply the mesh to the geometry model.
myGeometryModel.Geometry = myMeshGeometry3D;
// Define material and apply to the mesh geometries.
DiffuseMaterial myMaterial = new DiffuseMaterial(Brushes.Green);
myGeometryModel.Material = myMaterial;
RotateTransform3D myRotateTransform3D = new RotateTransform3D();
AxisAngleRotation3D myAxisAngleRotation3d = new AxisAngleRotation3D();
myAxisAngleRotation3d.Axis = new Vector3D(0, 3, 0);
myAxisAngleRotation3d.Angle = 45;
myRotateTransform3D.Rotation = myAxisAngleRotation3d;
myGeometryModel.Transform = myRotateTransform3D;
Vector3DAnimation myVectorAnimation = new Vector3DAnimation(new Vector3D(-1, -1, -1), new Duration(TimeSpan.FromMilliseconds(5000)));
myVectorAnimation.RepeatBehavior = RepeatBehavior.Forever;
myRotateTransform3D.Rotation.BeginAnimation(AxisAngleRotation3D.AxisProperty, myVectorAnimation);
// Add the geometry model to the model group.
myModel3DGroup.Children.Add(myGeometryModel);
// Add the group of models to the ModelVisual3d.
myModelVisual3D.Content = myModel3DGroup;
//
myViewport3D.Children.Add(myModelVisual3D);
// Apply the viewport to the page so it will be rendered.
this.Content = myViewport3D;