/// <summary> /// Creates a simple viewport without helix /// </summary> /// <param name="chromo"></param> /// <param name="owner"></param> public ViewportBasic(Chromosome chromo, BiomorpherWindow owner) { InitializeComponent(); Owner = owner; thisDesign = chromo; this.ToolTip = "double click to display in main viewport"; myViewport = new Viewport3D(); List <Mesh> rMesh = thisDesign.phenotype; List <ModelVisual3D> vis = new List <ModelVisual3D>(); Model3DGroup boundsGroup = new Model3DGroup(); for (int i = 0; i < rMesh.Count; i++) { if (rMesh[i] != null) { MeshGeometry3D wMesh = new MeshGeometry3D(); DiffuseMaterial material = new DiffuseMaterial(); Friends.ConvertRhinotoWpfMesh(rMesh[i], wMesh, material); GeometryModel3D model = new GeometryModel3D(wMesh, material); model.BackMaterial = material; DirectionalLight myLight = new DirectionalLight(Colors.White, new Vector3D(-0.5, -1, -1)); // ModelGroup Model3DGroup modelGroup = new Model3DGroup(); modelGroup.Children.Add(model); modelGroup.Children.Add(myLight); ModelVisual3D v = new ModelVisual3D(); v.Content = modelGroup; vis.Add(v); boundsGroup.Children.Add(model); } } bounds = boundsGroup.Bounds; for (int i = 0; i < vis.Count; i++) { myViewport.Children.Add(vis[i]); } ZoomExtents(); //Add viewport to user control this.AddChild(myViewport); }
private void create3DViewPort(List <Mesh> meshes, List <PolylineCurve> polys, bool hasViewcube) { hVp3D = new HelixViewport3D(); //hVp3D = new HelixToolkit.Wpf.SharpDX.Viewport3DX(); //Settings hVp3D.ShowFrameRate = false; //hVp3D.ViewCubeOpacity = 0.1; hVp3D.ViewCubeTopText = "T"; hVp3D.ViewCubeBottomText = "B"; hVp3D.ViewCubeFrontText = "E"; hVp3D.ViewCubeRightText = "N"; hVp3D.ViewCubeLeftText = "S"; hVp3D.ViewCubeBackText = "W"; hVp3D.ViewCubeHeight = 40; hVp3D.ViewCubeWidth = 40; hVp3D.ShowViewCube = hasViewcube; DefaultLights lights = new DefaultLights(); hVp3D.Children.Add(lights); hVp3D.IsInertiaEnabled = true; hVp3D.ZoomExtentsWhenLoaded = true; List <ModelVisual3D> vis = new List <ModelVisual3D>(); for (int i = 0; i < meshes.Count; i++) { if (meshes[i] != null) { MeshGeometry3D wMesh = new MeshGeometry3D(); DiffuseMaterial material = new DiffuseMaterial(); Friends.ConvertRhinotoWpfMesh(meshes[i], wMesh, material); GeometryModel3D model = new GeometryModel3D(wMesh, material); model.BackMaterial = material; ModelVisual3D v = new ModelVisual3D(); v.Content = model; vis.Add(v); } } for (int i = 0; i < polys.Count; i++) { if (polys[i] != null) { LinesVisual3D line = new LinesVisual3D(); line.Color = Colors.Black; line.Thickness = 1; Rhino.Geometry.Polyline result = new Rhino.Geometry.Polyline(); polys[i].TryGetPolyline(out result); for (int j = 0; j < result.Count - 1; j++) { line.Points.Add(new Point3D(result[j].X, result[j].Y, result[j].Z)); line.Points.Add(new Point3D(result[j + 1].X, result[j + 1].Y, result[j + 1].Z)); } vis.Add(line); } } for (int i = 0; i < vis.Count; i++) { hVp3D.Children.Add(vis[i]); } //Add viewport to user control this.AddChild(hVp3D); /* * ContextMenu myMenu = new ContextMenu(); * * MenuItem item1 = new MenuItem(); * MenuItem item2 = new MenuItem(); * * item1.Header = "item1"; * //item1.Click += new RoutedEventHandler(item1_Click); * myMenu.Items.Add(item1); * * item2.Header = "item2"; * //item2.Click += new RoutedEventHandler(item2_Click); * myMenu.Items.Add(item2); * * //this.ContextMenu = myMenu; * //myMenu.IsOpen = true; * hVp3D.ContextMenu = myMenu; */ }
private void create3DViewPort(List <Mesh> rMesh, bool hasViewcube) { hVp3D = new HelixViewport3D(); //hVp3D = new HelixToolkit.Wpf.SharpDX.Viewport3DX(); //Settings hVp3D.ShowFrameRate = false; hVp3D.ViewCubeOpacity = 0.1; hVp3D.ViewCubeTopText = "T"; hVp3D.ViewCubeBottomText = "B"; hVp3D.ViewCubeFrontText = "E"; hVp3D.ViewCubeRightText = "N"; hVp3D.ViewCubeLeftText = "S"; hVp3D.ViewCubeBackText = "W"; hVp3D.ViewCubeHeight = 40; hVp3D.ViewCubeWidth = 40; hVp3D.ShowViewCube = hasViewcube; var lights = new DefaultLights(); hVp3D.Children.Add(lights); hVp3D.IsInertiaEnabled = true; hVp3D.ZoomExtentsWhenLoaded = true; //hVp3D.Camera = Friends.dummyHelix.Camera; List <ModelVisual3D> vis = new List <ModelVisual3D>(); for (int i = 0; i < rMesh.Count; i++) { if (rMesh[i] != null) { MeshGeometry3D wMesh = new MeshGeometry3D(); DiffuseMaterial material = new DiffuseMaterial(); Friends.ConvertRhinotoWpfMesh(rMesh[i], wMesh, material); GeometryModel3D model = new GeometryModel3D(wMesh, material); model.BackMaterial = material; ModelVisual3D v = new ModelVisual3D(); v.Content = model; vis.Add(v); } } for (int i = 0; i < vis.Count; i++) { hVp3D.Children.Add(vis[i]); } //Add viewport to user control this.AddChild(hVp3D); /* * ContextMenu myMenu = new ContextMenu(); * * MenuItem item1 = new MenuItem(); * MenuItem item2 = new MenuItem(); * * item1.Header = "item1"; * //item1.Click += new RoutedEventHandler(item1_Click); * myMenu.Items.Add(item1); * * item2.Header = "item2"; * //item2.Click += new RoutedEventHandler(item2_Click); * myMenu.Items.Add(item2); * * //this.ContextMenu = myMenu; * //myMenu.IsOpen = true; * hVp3D.ContextMenu = myMenu; */ }
/// <summary> /// Creates a simple viewport without helix /// </summary> /// <param name="chromo"></param> /// <param name="owner"></param> public ViewportBasic(Chromosome chromo, BiomorpherWindow owner) { InitializeComponent(); Owner = owner; thisDesign = chromo; this.ToolTip = "double click to display in main viewport"; myViewport = new HelixViewport3D(); myViewport.ZoomExtentsWhenLoaded = true; myViewport.ShowViewCube = false; DefaultLights lights = new DefaultLights(); myViewport.Children.Add(lights); List <Mesh> rMesh = thisDesign.phenoMesh; List <PolylineCurve> polys = thisDesign.phenoPoly; List <ModelVisual3D> vis = new List <ModelVisual3D>(); for (int i = 0; i < rMesh.Count; i++) { if (rMesh[i] != null) { MeshGeometry3D wMesh = new MeshGeometry3D(); DiffuseMaterial material = new DiffuseMaterial(); Friends.ConvertRhinotoWpfMesh(rMesh[i], wMesh, material); GeometryModel3D model = new GeometryModel3D(wMesh, material); model.BackMaterial = material; // DirectionalLight myLight = new DirectionalLight(Colors.White, new Vector3D(-0.5, -1, -1)); Model3DGroup modelGroup = new Model3DGroup(); modelGroup.Children.Add(model); //modelGroup.Children.Add(myLight); ModelVisual3D v = new ModelVisual3D(); v.Content = modelGroup; vis.Add(v); } } for (int i = 0; i < polys.Count; i++) { if (polys[i] != null) { LinesVisual3D line = new LinesVisual3D(); line.Color = Colors.Black; line.Thickness = 1; Rhino.Geometry.Polyline result = new Rhino.Geometry.Polyline(); polys[i].TryGetPolyline(out result); for (int j = 0; j < result.Count - 1; j++) { line.Points.Add(new Point3D(result[j].X, result[j].Y, result[j].Z)); line.Points.Add(new Point3D(result[j + 1].X, result[j + 1].Y, result[j + 1].Z)); } vis.Add(line); } } for (int i = 0; i < vis.Count; i++) { myViewport.Children.Add(vis[i]); } myViewport.IsEnabled = false; //Add viewport to user control this.AddChild(myViewport); }