Advertisement
Guest User

Untitled

a guest
Dec 5th, 2019
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.80 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Windows;
  7. using System.Windows.Controls;
  8. using System.Windows.Data;
  9. using System.Windows.Documents;
  10. using System.Windows.Input;
  11. using System.Windows.Media;
  12. using System.Windows.Media.Imaging;
  13. using System.Windows.Navigation;
  14. using System.Windows.Shapes;
  15. using System.Windows.Media.Media3D;
  16. using System.Windows.Media.Animation;
  17.  
  18. namespace Wpf_2
  19. {
  20. /// <summary>
  21. /// Логика взаимодействия для MainWindow.xaml
  22. /// </summary>
  23. public partial class MainWindow : Window
  24. {
  25. public MainWindow()
  26. {
  27. InitializeComponent();
  28. }
  29.  
  30. private void Window_Loaded(object sender, RoutedEventArgs e)
  31. {
  32. // Declare scene objects.
  33. Viewport3D myViewport3D = new Viewport3D();
  34. Model3DGroup myModel3DGroup = new Model3DGroup();
  35. GeometryModel3D myGeometryModel = new GeometryModel3D();
  36. ModelVisual3D myModelVisual3D = new ModelVisual3D();
  37.  
  38. OrthographicCamera myOCamera = new OrthographicCamera(new Point3D(0, 0, 8), new Vector3D(0, 0, -3), new Vector3D(0, 1, 0), 8);
  39. myViewport3D.Camera = myOCamera;
  40.  
  41. DirectionalLight myDirectionalLight = new DirectionalLight();
  42. myDirectionalLight.Color = Colors.White;
  43. myDirectionalLight.Direction = new Vector3D(1, 1, -25);
  44.  
  45. myModel3DGroup.Children.Add(myDirectionalLight);
  46.  
  47. // The geometry specifes the shape of the 3D plane. In this sample, a flat sheet
  48. // is created.
  49. MeshGeometry3D myMeshGeometry3D = new MeshGeometry3D();
  50.  
  51. // Create a collection of normal vectors for the MeshGeometry3D.
  52. Vector3DCollection myNormalCollection = new Vector3DCollection();
  53. myNormalCollection.Add(new Vector3D(0, 1, 0));
  54. myNormalCollection.Add(new Vector3D(0, 1, 0));
  55. myNormalCollection.Add(new Vector3D(0, 1, 0));
  56. myNormalCollection.Add(new Vector3D(0, 1, 0));
  57. myNormalCollection.Add(new Vector3D(0, 1, 0));
  58. myNormalCollection.Add(new Vector3D(0, 1, 0));
  59. myMeshGeometry3D.Normals = myNormalCollection;
  60.  
  61. // Create a collection of vertex positions for the MeshGeometry3D.
  62. Point3DCollection myPositionCollection = new Point3DCollection();
  63. myPositionCollection.Add(new Point3D(0, 0, 1));
  64. myPositionCollection.Add(new Point3D(1, 0, 1));
  65. myPositionCollection.Add(new Point3D(1, 1, 1));
  66. myPositionCollection.Add(new Point3D(1, 1, 1));
  67. myPositionCollection.Add(new Point3D(0, 1, 1));
  68. myPositionCollection.Add(new Point3D(0, 0, 1));//1
  69.  
  70. myPositionCollection.Add(new Point3D(1, 0, 1));
  71. myPositionCollection.Add(new Point3D(1, 0, 0));
  72. myPositionCollection.Add(new Point3D(1, 1, 0));
  73. myPositionCollection.Add(new Point3D(1, 1, 0));
  74. myPositionCollection.Add(new Point3D(1, 1, 1));
  75. myPositionCollection.Add(new Point3D(1, 0, 1));//2
  76.  
  77. myPositionCollection.Add(new Point3D(1, 0, 0));
  78. myPositionCollection.Add(new Point3D(0, 0, 0));
  79. myPositionCollection.Add(new Point3D(0, 1, 0));
  80. myPositionCollection.Add(new Point3D(0, 1, 0));
  81. myPositionCollection.Add(new Point3D(1, 1, 0));
  82. myPositionCollection.Add(new Point3D(1, 0, 0));///3
  83.  
  84. myPositionCollection.Add(new Point3D(0, 0, 0));
  85. myPositionCollection.Add(new Point3D(0, 0, 1));
  86. myPositionCollection.Add(new Point3D(0, 1, 1));
  87. myPositionCollection.Add(new Point3D(0, 1, 1));
  88. myPositionCollection.Add(new Point3D(0, 1, 0));
  89. myPositionCollection.Add(new Point3D(0, 0, 0));///4
  90.  
  91. myPositionCollection.Add(new Point3D(0, 1, 1));
  92. myPositionCollection.Add(new Point3D(1, 1, 1));
  93. myPositionCollection.Add(new Point3D(1, 1, 0));
  94. myPositionCollection.Add(new Point3D(1, 1, 0));
  95. myPositionCollection.Add(new Point3D(0, 1, 0));
  96. myPositionCollection.Add(new Point3D(0, 1, 1));///5
  97.  
  98. myPositionCollection.Add(new Point3D(0, 0, 0));
  99. myPositionCollection.Add(new Point3D(1, 0, 0));
  100. myPositionCollection.Add(new Point3D(1, 0, 1));
  101. myPositionCollection.Add(new Point3D(1, 0, 1));
  102. myPositionCollection.Add(new Point3D(0, 0, 1));
  103. myPositionCollection.Add(new Point3D(0, 0, 0));///6
  104.  
  105. myMeshGeometry3D.Positions = myPositionCollection;
  106. // Create a collection of triangle indices for the MeshGeometry3D.
  107. Int32Collection myTriangleIndicesCollection = new Int32Collection();
  108.  
  109. myTriangleIndicesCollection.Add(0);
  110. myTriangleIndicesCollection.Add(1);
  111. myTriangleIndicesCollection.Add(2);
  112. myTriangleIndicesCollection.Add(3);
  113. myTriangleIndicesCollection.Add(4);
  114. myTriangleIndicesCollection.Add(5);
  115.  
  116. myTriangleIndicesCollection.Add(6);
  117. myTriangleIndicesCollection.Add(7);
  118. myTriangleIndicesCollection.Add(8);
  119. myTriangleIndicesCollection.Add(9);
  120. myTriangleIndicesCollection.Add(10);
  121. myTriangleIndicesCollection.Add(11);
  122.  
  123. myTriangleIndicesCollection.Add(12);
  124. myTriangleIndicesCollection.Add(13);
  125. myTriangleIndicesCollection.Add(14);
  126. myTriangleIndicesCollection.Add(15);
  127. myTriangleIndicesCollection.Add(16);
  128. myTriangleIndicesCollection.Add(17);
  129.  
  130. myTriangleIndicesCollection.Add(18);
  131. myTriangleIndicesCollection.Add(19);
  132. myTriangleIndicesCollection.Add(20);
  133. myTriangleIndicesCollection.Add(21);
  134. myTriangleIndicesCollection.Add(22);
  135. myTriangleIndicesCollection.Add(23);
  136.  
  137. myTriangleIndicesCollection.Add(24);
  138. myTriangleIndicesCollection.Add(25);
  139. myTriangleIndicesCollection.Add(26);
  140. myTriangleIndicesCollection.Add(27);
  141. myTriangleIndicesCollection.Add(28);
  142. myTriangleIndicesCollection.Add(29);
  143.  
  144. myTriangleIndicesCollection.Add(30);
  145. myTriangleIndicesCollection.Add(31);
  146. myTriangleIndicesCollection.Add(32);
  147. myTriangleIndicesCollection.Add(33);
  148. myTriangleIndicesCollection.Add(34);
  149. myTriangleIndicesCollection.Add(35);
  150.  
  151. myMeshGeometry3D.TriangleIndices = myTriangleIndicesCollection;
  152.  
  153. PointCollection myTextureCollection = new PointCollection();
  154. myTextureCollection.Add(new Point(0, 0));
  155. myTextureCollection.Add(new Point(1, 0));
  156. myTextureCollection.Add(new Point(1, 1));
  157. myTextureCollection.Add(new Point(1, 1));
  158. myTextureCollection.Add(new Point(0, 1));
  159. myTextureCollection.Add(new Point(0, 0));
  160.  
  161. myTextureCollection.Add(new Point(0, 0));
  162. myTextureCollection.Add(new Point(1, 0));
  163. myTextureCollection.Add(new Point(1, 1));
  164. myTextureCollection.Add(new Point(1, 1));
  165. myTextureCollection.Add(new Point(0, 1));
  166. myTextureCollection.Add(new Point(0, 0));
  167. myTextureCollection.Add(new Point(0, 0));
  168. myTextureCollection.Add(new Point(1, 0));
  169. myTextureCollection.Add(new Point(1, 1));
  170. myTextureCollection.Add(new Point(1, 1));
  171. myTextureCollection.Add(new Point(0, 1));
  172. myTextureCollection.Add(new Point(0, 0));
  173.  
  174. myTextureCollection.Add(new Point(0, 0));
  175. myTextureCollection.Add(new Point(1, 0));
  176. myTextureCollection.Add(new Point(1, 1));
  177. myTextureCollection.Add(new Point(1, 1));
  178. myTextureCollection.Add(new Point(0, 1));
  179. myTextureCollection.Add(new Point(0, 0));
  180.  
  181. myTextureCollection.Add(new Point(0, 0));
  182. myTextureCollection.Add(new Point(1, 0));
  183. myTextureCollection.Add(new Point(1, 1));
  184. myTextureCollection.Add(new Point(1, 1));
  185. myTextureCollection.Add(new Point(0, 1));
  186. myTextureCollection.Add(new Point(0, 0));
  187.  
  188. myTextureCollection.Add(new Point(0, 0));
  189. myTextureCollection.Add(new Point(1, 0));
  190. myTextureCollection.Add(new Point(1, 1));
  191. myTextureCollection.Add(new Point(1, 1));
  192. myTextureCollection.Add(new Point(0, 1));
  193. myTextureCollection.Add(new Point(0, 0));
  194.  
  195. myMeshGeometry3D.TextureCoordinates = myTextureCollection;
  196.  
  197.  
  198. // Apply the mesh to the geometry model.
  199. myGeometryModel.Geometry = myMeshGeometry3D;
  200.  
  201.  
  202. BitmapImage mybit = new BitmapImage();
  203. mybit.BeginInit();
  204. mybit.UriSource = new Uri(@"D:\Study\MatGraf\Wpf_2\catwalk.png");
  205. mybit.EndInit();
  206.  
  207. ImageBrush img = new ImageBrush();
  208. img.ImageSource = mybit;
  209. DiffuseMaterial myMaterial = new DiffuseMaterial();
  210. myMaterial.Brush = img;
  211. myGeometryModel.Material = myMaterial;
  212.  
  213. RotateTransform3D myRotateTransform3D = new RotateTransform3D(new AxisAngleRotation3D(new Vector3D(1, 1, 0), 0), new Point3D(0, 0, 0));
  214.  
  215. Transform3DGroup trGrp = new Transform3DGroup();
  216. RotateTransform3D nrt1 = new RotateTransform3D(new AxisAngleRotation3D(new Vector3D(1, 1, 0), 45));
  217. RotateTransform3D nrt2 = new RotateTransform3D(new AxisAngleRotation3D(new Vector3D(1, 1, 0), 45));
  218. TranslateTransform3D trs = new TranslateTransform3D(new Vector3D(0, 0, 0));
  219. trGrp.Children.Clear();
  220. trGrp.Children.Add(nrt1);
  221. trGrp.Children.Add(nrt2);
  222. trGrp.Children.Add(myRotateTransform3D);
  223. trGrp.Children.Add(trs);
  224. myGeometryModel.Transform = trGrp;
  225.  
  226. DoubleAnimation rotAnimaion = new DoubleAnimation(360, 0, new Duration(TimeSpan.FromSeconds(2)));
  227. rotAnimaion.RepeatBehavior = RepeatBehavior.Forever;
  228. myRotateTransform3D.Rotation.BeginAnimation(AxisAngleRotation3D.AngleProperty, rotAnimaion);
  229.  
  230. // Add the geometry model to the model group.
  231.  
  232. myModel3DGroup.Children.Add(myGeometryModel);
  233.  
  234. // Add the group of models to the ModelVisual3d.
  235. myModelVisual3D.Content = myModel3DGroup;
  236. //
  237. myViewport3D.Children.Add(myModelVisual3D);
  238.  
  239. // Apply the viewport to the page so it will be rendered.
  240. this.Content = myViewport3D;
  241. }
  242. }
  243. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement