private void DrawMap() { this.SetFrameTime(); if (this.lines.Count == 0) { return; } vtkRenderWindow renderWindow = this.MapRenderWindow.RenderWindow; vtkRenderer renderer = renderWindow.GetRenderers().GetFirstRenderer(); renderer.SetBackground(0.6f, 0.6f, 0.6f); renderer.RemoveAllViewProps(); renderer.Clear(); renderer.AddActor(GetMapImage()); foreach (vtkActor actor in DrawMapBars()) { renderer.AddActor(actor); } this.MapRenderWindow.Invalidate(); }
private void Line() { // Create a line. vtkLineSource lineSource = vtkLineSource.New(); // Create two points, P0 and P1 double[] p0 = new double[] { 1.0, 0.0, 0.0 }; double[] p1 = new double[] { 0.0, 1.0, 0.0 }; lineSource.SetPoint1(p0[0], p0[1], p0[2]); lineSource.SetPoint2(p1[0], p1[1], p1[2]); // Visualize vtkPolyDataMapper mapper = vtkPolyDataMapper.New(); mapper.SetInputConnection(lineSource.GetOutputPort()); vtkActor actor = vtkActor.New(); actor.SetMapper(mapper); actor.GetProperty().SetLineWidth(4); vtkRenderWindow renderWindow = renderWindowControl1.RenderWindow; vtkRenderer renderer = renderWindow.GetRenderers().GetFirstRenderer(); renderer.SetBackground(0.2, 0.3, 0.4); renderer.AddActor(actor); renderer.ResetCamera(); }
private void Vertex() { vtkPoints points = vtkPoints.New(); points.InsertNextPoint(0, 0, 0); vtkVertex vertex = vtkVertex.New(); vertex.GetPointIds().SetId(0, 0); vtkCellArray vertices = vtkCellArray.New(); vertices.InsertNextCell(vertex); vtkPolyData polydata = vtkPolyData.New(); polydata.SetPoints(points); polydata.SetVerts(vertices); // Visualize vtkPolyDataMapper mapper = vtkPolyDataMapper.New(); mapper.SetInputConnection(polydata.GetProducerPort()); vtkActor actor = vtkActor.New(); actor.SetMapper(mapper); actor.GetProperty().SetPointSize(10); vtkRenderWindow renderWindow = renderWindowControl1.RenderWindow; vtkRenderer renderer = renderWindow.GetRenderers().GetFirstRenderer(); renderer.SetBackground(0.2, 0.3, 0.4); // Add the actor to the scene renderer.AddActor(actor); }
private void Arrow() { // Create two arrows. vtkArrowSource arrowSource01 = vtkArrowSource.New(); vtkArrowSource arrowSource02 = vtkArrowSource.New(); arrowSource02.SetShaftResolution(24); // default = 6 arrowSource02.SetTipResolution(36); // default = 6 // Visualize vtkPolyDataMapper mapper01 = vtkPolyDataMapper.New(); vtkPolyDataMapper mapper02 = vtkPolyDataMapper.New(); mapper01.SetInputConnection(arrowSource01.GetOutputPort()); mapper02.SetInputConnection(arrowSource02.GetOutputPort()); vtkActor actor01 = vtkActor.New(); vtkActor actor02 = vtkActor.New(); actor01.SetMapper(mapper01); actor02.SetMapper(mapper02); actor01.SetPosition(0.0, 0.25, 0.0); actor02.SetPosition(0.0, -0.25, 0.0); vtkRenderWindow renderWindow = renderWindowControl1.RenderWindow; vtkRenderer renderer = renderWindow.GetRenderers().GetFirstRenderer(); renderer.SetBackground(0.2, 0.3, 0.4); renderer.AddActor(actor01); renderer.AddActor(actor02); renderer.ResetCamera(); }
private void Sphere() { // Create a sphere. vtkSphereSource sphereSource = vtkSphereSource.New(); sphereSource.SetRadius(0.5); // a more smoother sphere //sphereSource.SetPhiResolution(36); //sphereSource.SetThetaResolution(36); //not a complete sphere, only a spherical shell //sphereSource.SetEndPhi(120); //sphereSource.SetEndTheta(90); // Visualize vtkPolyDataMapper mapper = vtkPolyDataMapper.New(); mapper.SetInputConnection(sphereSource.GetOutputPort()); vtkActor actor = vtkActor.New(); actor.SetMapper(mapper); vtkRenderWindow renderWindow = renderWindowControl1.RenderWindow; vtkRenderer renderer = renderWindow.GetRenderers().GetFirstRenderer(); renderer.SetBackground(0.3, 0.2, 0.1); renderer.AddActor(actor); }
private void SimplePointsReader() { // Path to vtk data must be set as an environment variable // VTK_DATA_ROOT = "C:\VTK\vtkdata-5.8.0" vtkTesting test = vtkTesting.New(); string root = test.GetDataRoot(); string filePath = System.IO.Path.Combine(root, @"Data\points.txt"); vtkSimplePointsReader reader = vtkSimplePointsReader.New(); reader.SetFileName(filePath); reader.Update(); // Visualize vtkPolyDataMapper mapper = vtkPolyDataMapper.New(); mapper.SetInputConnection(reader.GetOutputPort()); vtkActor actor = vtkActor.New(); actor.SetMapper(mapper); actor.GetProperty().SetPointSize(4); vtkRenderWindow renderWindow = renderWindowControl1.RenderWindow; vtkRenderer renderer = renderWindow.GetRenderers().GetFirstRenderer(); renderer.SetBackground(0.2, 0.3, 0.4); renderer.AddActor(actor); //renderer.ResetCamera(); }
private void ShrinkPolyData() { vtkSphereSource sphereSource = vtkSphereSource.New(); sphereSource.SetRadius(10); sphereSource.SetPhiResolution(12); sphereSource.SetThetaResolution(12); sphereSource.Update(); vtkShrinkPolyData shrinkFilter = vtkShrinkPolyData.New(); shrinkFilter.SetInputConnection(sphereSource.GetOutputPort()); shrinkFilter.Update(); vtkPolyDataMapper mapper = vtkPolyDataMapper.New(); mapper.SetInputConnection(shrinkFilter.GetOutputPort()); vtkActor actor = vtkActor.New(); actor.SetMapper(mapper); // get a reference to the renderwindow of our renderWindowControl1 vtkRenderWindow renderWindow = renderWindowControl1.RenderWindow; // renderer vtkRenderer renderer = renderWindow.GetRenderers().GetFirstRenderer(); // set background color renderer.SetBackground(.2, .3, .4); //Add the actors to the renderer, set the background and size renderer.AddActor(actor); }
private void ReadSTL() { // Path to vtk data must be set as an environment variable // VTK_DATA_ROOT = "C:\VTK\vtkdata-5.8.0" vtkTesting test = vtkTesting.New(); string root = test.GetDataRoot(); string filePath = System.IO.Path.Combine(root, @"Data\42400-IDGH.stl"); vtkSTLReader reader = vtkSTLReader.New(); reader.SetFileName(filePath); reader.Update(); vtkPolyDataMapper mapper = vtkPolyDataMapper.New(); mapper.SetInputConnection(reader.GetOutputPort()); vtkActor actor = vtkActor.New(); actor.SetMapper(mapper); // get a reference to the renderwindow of our renderWindowControl1 vtkRenderWindow renderWindow = renderWindowControl1.RenderWindow; // renderer vtkRenderer renderer = renderWindow.GetRenderers().GetFirstRenderer(); // set background color renderer.SetBackground(0.2, 0.3, 0.4); // add our actor to the renderer renderer.AddActor(actor); }
// Trigger hook events private void MainPaltform_Load(object sender, EventArgs e) { m_RenderWindow = renderWindowControl1.RenderWindow; m_Renderer = m_RenderWindow.GetRenderers().GetFirstRenderer(); this.HookEvents(); }
private void ReadMetaImage() { // Path to vtk data must be set as an environment variable // VTK_DATA_ROOT = "C:\VTK\vtkdata-5.8.0" vtkTesting test = vtkTesting.New(); string root = test.GetDataRoot(); string filePath = System.IO.Path.Combine(root, @"Data\foot\foot.mha"); vtkMetaImageReader reader = vtkMetaImageReader.New(); if (reader.CanReadFile(filePath) == 0) { MessageBox.Show("Cannot read file \"" + filePath + "\"", "Error", MessageBoxButtons.OK); return; } reader.SetFileName(filePath); reader.Update(); vtkImageActor actor = vtkImageActor.New(); actor.SetInput(reader.GetOutput()); // Visualize vtkRenderWindow renderWindow = renderWindowControl1.RenderWindow; // renderer vtkRenderer renderer = renderWindow.GetRenderers().GetFirstRenderer(); // set background color renderer.SetBackground(0.2, 0.3, 0.4); renderer.AddActor(actor); }
private void ReadPNM() { // Path to vtk data must be set as an environment variable // VTK_DATA_ROOT = "C:\VTK\vtkdata-5.8.0" vtkTesting test = vtkTesting.New(); string root = test.GetDataRoot(); string filePath = System.IO.Path.Combine(root, @"Data\earth.ppm"); //Read the image vtkPNMReader reader = vtkPNMReader.New(); if (reader.CanReadFile(filePath) == 0) { MessageBox.Show("Cannot read file \"" + filePath + "\"", "Error", MessageBoxButtons.OK); return; } reader.SetFileName(filePath); reader.Update(); // Visualize vtkImageViewer2 imageViewer = vtkImageViewer2.New(); imageViewer.SetInputConnection(reader.GetOutputPort()); // get a reference to the renderwindow of our renderWindowControl1 vtkRenderWindow renderWindow = renderWindowControl1.RenderWindow; // renderer vtkRenderer renderer = renderWindow.GetRenderers().GetFirstRenderer(); // set background color renderer.SetBackground(0.2, 0.3, 0.4); imageViewer.SetRenderer(renderer); }
private void vtkPolyDataConnectivityFilter_LargestRegion() { // Small sphere vtkSphereSource sphereSource1 = vtkSphereSource.New(); sphereSource1.Update(); // Large sphere vtkSphereSource sphereSource2 = vtkSphereSource.New(); sphereSource2.SetRadius(10); sphereSource2.SetCenter(25, 0, 0); sphereSource2.SetThetaResolution(10); sphereSource2.SetPhiResolution(10); sphereSource2.Update(); vtkAppendPolyData appendFilter = vtkAppendPolyData.New(); appendFilter.AddInputConnection(sphereSource1.GetOutputPort()); appendFilter.AddInputConnection(sphereSource2.GetOutputPort()); appendFilter.Update(); vtkPolyDataConnectivityFilter connectivityFilter = vtkPolyDataConnectivityFilter.New(); connectivityFilter.SetInputConnection(appendFilter.GetOutputPort()); connectivityFilter.SetExtractionModeToLargestRegion(); connectivityFilter.Update(); // Create a mapper and actor for original data vtkPolyDataMapper originalMapper = vtkPolyDataMapper.New(); originalMapper.SetInputConnection(appendFilter.GetOutputPort()); originalMapper.Update(); vtkActor originalActor = vtkActor.New(); originalActor.SetMapper(originalMapper); // Create a mapper and actor for extracted data vtkPolyDataMapper extractedMapper = vtkPolyDataMapper.New(); extractedMapper.SetInputConnection(connectivityFilter.GetOutputPort()); extractedMapper.Update(); vtkActor extractedActor = vtkActor.New(); extractedActor.GetProperty().SetColor(1, 0, 0); extractedActor.SetMapper(extractedMapper); // get a reference to the renderwindow of our renderWindowControl1 vtkRenderWindow renderWindow = renderWindowControl1.RenderWindow; // renderer vtkRenderer renderer = renderWindow.GetRenderers().GetFirstRenderer(); // set background color renderer.SetBackground(0.2, 0.3, 0.4); // add our actor to the renderer renderer.AddActor(originalActor); renderer.AddActor(extractedActor); }
private void m_renderWinCtrl_Load(object sender, EventArgs e) { m_renWindow = m_renderWinCtrl.RenderWindow; m_render = m_renWindow.GetRenderers().GetFirstRenderer(); m_iren = m_renWindow.GetInteractor(); InitRenderWindow(); }
private void ImplicitBoolean() { vtkSphere sphere1 = vtkSphere.New(); sphere1.SetCenter(.9, 0, 0); vtkSphere sphere2 = vtkSphere.New(); sphere2.SetCenter(-.9, 0, 0); vtkImplicitBoolean implicitBoolean = vtkImplicitBoolean.New(); implicitBoolean.AddFunction(sphere1); implicitBoolean.AddFunction(sphere2); implicitBoolean.SetOperationTypeToUnion(); //implicitBoolean.SetOperationTypeToIntersection(); // Sample the function vtkSampleFunction sample = vtkSampleFunction.New(); sample.SetSampleDimensions(50, 50, 50); sample.SetImplicitFunction(implicitBoolean); double value = 3.0; double xmin = -value, xmax = value, ymin = -value, ymax = value, zmin = -value, zmax = value; sample.SetModelBounds(xmin, xmax, ymin, ymax, zmin, zmax); // Create the 0 isosurface vtkContourFilter contours = vtkContourFilter.New(); #if VTK_MAJOR_VERSION_5 contours.SetInputConnection(sample.GetOutputPort()); #else contours.SetInputData(sample); #endif contours.GenerateValues(1, 1, 1); // Map the contours to graphical primitives vtkPolyDataMapper contourMapper = vtkPolyDataMapper.New(); #if VTK_MAJOR_VERSION_5 contourMapper.SetInputConnection(contours.GetOutputPort()); #else contourMapper.SetInputData(contours); #endif contourMapper.ScalarVisibilityOff(); // Create an actor for the contours vtkActor contourActor = vtkActor.New(); contourActor.SetMapper(contourMapper); // get a reference to the renderwindow of our renderWindowControl1 vtkRenderWindow renderWindow = renderWindowControl1.RenderWindow; // renderer vtkRenderer renderer = renderWindow.GetRenderers().GetFirstRenderer(); // set background color renderer.SetBackground(.2, .3, .4); renderer.AddActor(contourActor); }
private void Hexahedron() { // Setup the coordinates of eight points // (faces must be in counter clockwise order as viewed from the outside) double[,] p = new double[, ] { { 0.0, 0.0, 0.0 }, { 1.0, 0.0, 0.0 }, { 1.0, 1.0, 0.0 }, { 0.0, 1.0, 0.0 }, { 0.0, 0.0, 1.0 }, { 1.0, 0.0, 1.0 }, { 1.0, 1.0, 1.0 }, { 0.0, 1.0, 1.0 } }; // Create the points vtkPoints points = vtkPoints.New(); for (int i = 0; i < 8; i++) { points.InsertNextPoint(p[i, 0], p[i, 1], p[i, 2]); } // Create a hexahedron from the points vtkHexahedron hex = vtkHexahedron.New(); for (int i = 0; i < 8; i++) { hex.GetPointIds().SetId(i, i); } // Add the hexahedron to a cell array vtkCellArray hexs = vtkCellArray.New(); hexs.InsertNextCell(hex); // Add the points and hexahedron to an unstructured grid vtkUnstructuredGrid uGrid = vtkUnstructuredGrid.New(); uGrid.SetPoints(points); uGrid.InsertNextCell(hex.GetCellType(), hex.GetPointIds()); // Visualize vtkDataSetMapper mapper = vtkDataSetMapper.New(); mapper.SetInput(uGrid); vtkActor actor = vtkActor.New(); actor.SetMapper(mapper); actor.GetProperty().SetLineWidth(4); vtkRenderWindow renderWindow = renderWindowControl1.RenderWindow; vtkRenderer renderer = renderWindow.GetRenderers().GetFirstRenderer(); renderer.SetBackground(0.2, 0.3, 0.4); renderer.AddActor(actor); renderer.ResetCamera(); }
private void WritePNG() { // Path to vtk data must be set as an environment variable // VTK_DATA_ROOT = "C:\VTK\vtkdata-5.8.0" vtkTesting test = vtkTesting.New(); string root = test.GetDataRoot(); string filePath = System.IO.Path.Combine(root, @"Data\test_png.png"); int[] extent = new int[] { 0, 99, 0, 99, 0, 0 }; vtkImageCanvasSource2D imageSource = vtkImageCanvasSource2D.New(); imageSource.SetExtent(extent[0], extent[1], extent[2], extent[3], extent[4], extent[5]); imageSource.SetScalarTypeToUnsignedChar(); imageSource.SetNumberOfScalarComponents(3); imageSource.SetDrawColor(127, 45, 255); imageSource.FillBox(0, 99, 0, 99); imageSource.SetDrawColor(255, 255, 255); imageSource.FillBox(40, 70, 20, 50); imageSource.Update(); vtkImageCast castFilter = vtkImageCast.New(); castFilter.SetOutputScalarTypeToUnsignedChar(); castFilter.SetInputConnection(imageSource.GetOutputPort()); castFilter.Update(); vtkPNGWriter writer = vtkPNGWriter.New(); writer.SetFileName(filePath); writer.SetInputConnection(castFilter.GetOutputPort()); writer.Write(); // Read and display file for verification that it was written correctly vtkPNGReader reader = vtkPNGReader.New(); if (reader.CanReadFile(filePath) == 0) { MessageBox.Show("Cannot read file \"" + filePath + "\"", "Error", MessageBoxButtons.OK); return; } reader.SetFileName(filePath); reader.Update(); // Visualize vtkImageViewer2 imageViewer = vtkImageViewer2.New(); imageViewer.SetInputConnection(reader.GetOutputPort()); // get a reference to the renderwindow of our renderWindowControl1 vtkRenderWindow renderWindow = renderWindowControl1.RenderWindow; // renderer vtkRenderer renderer = renderWindow.GetRenderers().GetFirstRenderer(); // set background color renderer.SetBackground(0.2, 0.3, 0.4); imageViewer.SetRenderer(renderer); renderer.ResetCamera(); }
public void setRender(vtkRenderWindow renWin) { _renWin = renWin; _render = renWin.GetRenderers().GetFirstRenderer(); CompontData data = genData(true); _actor = CompontFactory.genActor(data, CompontFactory.genClickProperty()); _render.AddViewProp(_actor); _renWin.Render(); }
private void DrawTriangle() { //创建点数据 vtkPoints points = vtkPoints.New(); points.InsertNextPoint(1.0, 0.0, 0.0); points.InsertNextPoint(0.0, 1.0, 0.0); points.InsertNextPoint(0.0, 0.0, 0.0); //每两个坐标之间分别创建一条线 //SetId()的第一个参数是线段的端点ID,第二参数是连接的的点的ID vtkLine line0 = vtkLine.New(); line0.GetPointIds().SetId(0, 0); line0.GetPointIds().SetId(1, 1); vtkLine line1 = vtkLine.New(); line1.GetPointIds().SetId(0, 1); line1.GetPointIds().SetId(1, 2); vtkLine line2 = vtkLine.New(); line2.GetPointIds().SetId(0, 2); line2.GetPointIds().SetId(1, 0); //创建单元数组,用于存储以上创建的线段 vtkCellArray lines = vtkCellArray.New(); lines.InsertNextCell(line0); lines.InsertNextCell(line1); lines.InsertNextCell(line2); //将点和线加入数据集中,前者定义数据集的几何结构,后者定义拓扑结构 //创建vtkPolyData类型的数据,是一种数据集 vtkPolyData polyData = vtkPolyData.New(); //将创建的点数据加入vtkPolyData数据里 polyData.SetPoints(points); //点数据定义了polydata数据集的几何结构。 polyData.SetLines(lines); //定义拓扑结构 //显示数据 vtkPolyDataMapper mapper = vtkPolyDataMapper.New(); mapper.SetInputData(polyData); vtkActor actor = vtkActor.New(); actor.SetMapper(mapper); actor.GetProperty().SetColor(1.0, 0.0, 0.0); vtkRenderWindow renWin = myRenderWindowControl.RenderWindow; vtkRenderer renderer = renWin.GetRenderers().GetFirstRenderer(); renderer.SetBackground(1.0, 1.0, 1.0); renderer.AddActor(actor); }
private void ExtractEdges() { vtkSphereSource sphereSource = vtkSphereSource.New(); sphereSource.Update(); Debug.WriteLine("Sphere" + Environment.NewLine + "----------"); Debug.WriteLine("There are " + sphereSource.GetOutput().GetNumberOfCells() + " cells."); Debug.WriteLine("There are " + sphereSource.GetOutput().GetNumberOfPoints() + " points."); vtkExtractEdges extractEdges = vtkExtractEdges.New(); #if VTK_MAJOR_VERSION_5 extractEdges.SetInputConnection(sphereSource.GetOutputPort()); #else extractEdges.SetInputData(sphereSource); #endif extractEdges.Update(); vtkCellArray lines = extractEdges.GetOutput().GetLines(); vtkPoints points = extractEdges.GetOutput().GetPoints(); Debug.WriteLine(Environment.NewLine + "Edges" + Environment.NewLine + "----------"); Debug.WriteLine("There are " + lines.GetNumberOfCells() + " cells."); Debug.WriteLine("There are " + points.GetNumberOfPoints() + " points."); // Traverse all of the edges for (int i = 0; i < extractEdges.GetOutput().GetNumberOfCells(); i++) { //Debug.WriteLine("Type: " + extractEdges.GetOutput().GetCell(i).GetClassName() ); vtkLine line = vtkLine.SafeDownCast(extractEdges.GetOutput().GetCell(i)); Debug.WriteLine("Line " + i + " : " + line); } // Visualize the edges // Create a mapper and actor vtkPolyDataMapper mapper = vtkPolyDataMapper.New(); #if VTK_MAJOR_VERSION_5 mapper.SetInputConnection(extractEdges.GetOutputPort()); #else mapper.SetInputData(extractEdges); #endif vtkActor actor = vtkActor.New(); actor.SetMapper(mapper); // get a reference to the renderwindow of our renderWindowControl1 vtkRenderWindow renderWindow = renderWindowControl1.RenderWindow; // renderer vtkRenderer renderer = renderWindow.GetRenderers().GetFirstRenderer(); // set background color renderer.SetBackground(1, 1, 1); // add our actor to the renderer renderer.AddActor(actor); }
private void PolyLine() { // Create five points double[,] p = new double[, ] { { 0.0, 0.0, 0.0 }, { 1.0, 0.0, 0.0 }, { 0.0, 1.0, 0.0 }, { 0.0, 1.0, 2.0 }, { 0.0, 3.0, 3.0 } }; // Create the points vtkPoints points = vtkPoints.New(); for (int i = 0; i < 5; i++) { points.InsertNextPoint(p[i, 0], p[i, 1], p[i, 2]); } vtkPolyLine polyLine = vtkPolyLine.New(); polyLine.GetPointIds().SetNumberOfIds(5); for (int i = 0; i < 5; i++) { polyLine.GetPointIds().SetId(i, i); } // Create a cell array to store the lines in and add the lines to it vtkCellArray cells = vtkCellArray.New(); cells.InsertNextCell(polyLine); // Create a polydata to store everything in vtkPolyData polyData = vtkPolyData.New(); // Add the points to the dataset polyData.SetPoints(points); // Add the lines to the dataset polyData.SetLines(cells); //Create an actor and mapper vtkPolyDataMapper mapper = vtkPolyDataMapper.New(); mapper.SetInput(polyData); vtkActor actor = vtkActor.New(); actor.SetMapper(mapper); vtkRenderWindow renderWindow = renderWindowControl1.RenderWindow; vtkRenderer renderer = renderWindow.GetRenderers().GetFirstRenderer(); renderer.SetBackground(0.2, 0.3, 0.4); renderer.AddActor(actor); }
public MyInteractorStyle(RenderWindowControl ctrl) { m_RWCtrl = ctrl; m_rendWin = ctrl.RenderWindow; m_renderer = m_rendWin.GetRenderers().GetFirstRenderer(); m_iren = m_rendWin.GetInteractor(); m_iren.LeftButtonReleaseEvt += new vtkObjectEventHandler(m_interactor_LeftButtonReleaseEvt); m_iren.LeftButtonPressEvt += new vtkObjectEventHandler(m_iren_RightButtonPressEvt); }
private void MarchingCubes() { vtkSphereSource sphereSource = vtkSphereSource.New(); sphereSource.SetPhiResolution(20); sphereSource.SetThetaResolution(20); sphereSource.Update(); double[] bounds = sphereSource.GetOutput().GetBounds(); for (int i = 0; i < 6; i += 2) { double range = bounds[i + 1] - bounds[i]; bounds[i] = bounds[i] - .1 * range; bounds[i + 1] = bounds[i + 1] + .1 * range; } vtkVoxelModeller voxelModeller = vtkVoxelModeller.New(); voxelModeller.SetSampleDimensions(50, 50, 50); voxelModeller.SetModelBounds(bounds[0], bounds[1], bounds[2], bounds[3], bounds[4], bounds[5]); voxelModeller.SetScalarTypeToFloat(); voxelModeller.SetMaximumDistance(.1); #if VTK_MAJOR_VERSION_5 voxelModeller.SetInputConnection(sphereSource.GetOutputPort()); #else voxelModeller.SetInputData(sphereSource); #endif vtkMarchingCubes surface = vtkMarchingCubes.New(); #if VTK_MAJOR_VERSION_5 surface.SetInputConnection(voxelModeller.GetOutputPort()); #else surface.SetInputData(voxelModeller); #endif surface.ComputeNormalsOn(); surface.SetValue(0, 0.5); vtkPolyDataMapper mapper = vtkPolyDataMapper.New(); #if VTK_MAJOR_VERSION_5 mapper.SetInputConnection(surface.GetOutputPort()); #else mapper.SetInputData(surface); #endif vtkActor actor = vtkActor.New(); actor.SetMapper(mapper); // get a reference to the renderwindow of our renderWindowControl1 vtkRenderWindow renderWindow = renderWindowControl1.RenderWindow; // renderer vtkRenderer renderer = renderWindow.GetRenderers().GetFirstRenderer(); // set background color renderer.SetBackground(.2, .3, .4); // add our actor to the renderer renderer.AddActor(actor); }
private void LongLine() { // Create five points double[,] p = new double[, ] { { 0.0, 0.0, 0.0 }, { 1.0, 0.0, 0.0 }, { 0.0, 1.0, 0.0 }, { 0.0, 1.0, 2.0 }, { 1.0, 2.0, 3.0 } }; // Create a vtkPoints object and store the points in it vtkPoints points = vtkPoints.New(); for (int i = 0; i < 5; i++) { points.InsertNextPoint(p[i, 0], p[i, 1], p[i, 2]); } // Create a cell array to store the lines in and add the lines to it vtkCellArray lines = vtkCellArray.New(); for (int i = 0; i < 4; i++) { vtkLine line = vtkLine.New(); line.GetPointIds().SetId(0, i); line.GetPointIds().SetId(1, i + 1); lines.InsertNextCell(line); } // Create a polydata to store everything in vtkPolyData linesPolyData = vtkPolyData.New(); // Add the points to the dataset linesPolyData.SetPoints(points); // Add the lines to the dataset linesPolyData.SetLines(lines); // Visualize vtkPolyDataMapper mapper = vtkPolyDataMapper.New(); mapper.SetInput(linesPolyData); vtkActor actor = vtkActor.New(); actor.SetMapper(mapper); actor.GetProperty().SetLineWidth(4); vtkRenderWindow renderWindow = renderWindowControl1.RenderWindow; vtkRenderer renderer = renderWindow.GetRenderers().GetFirstRenderer(); renderer.SetBackground(0.2, 0.3, 0.4); renderer.AddActor(actor); renderer.ResetCamera(); }
private void DrawPoint() { // Create the geometry of the points (the coordinate) vtkPoints points = vtkPoints.New(); double[,] p = new double[, ] { { 1.0, 2.0, 3.0 }, { 3.0, 1.0, 2.0 }, { 2.0, 3.0, 1.0 }, { 1.0, 3.0, 3.0 } }; // Create topology of the points (a vertex per point) vtkCellArray vertices = vtkCellArray.New(); int nPts = 4; int[] ids = new int[nPts]; for (int i = 0; i < nPts; i++) { ids[i] = (int)points.InsertNextPoint(p[i, 0], p[i, 1], p[i, 2]); } int size = Marshal.SizeOf(typeof(int)) * nPts; IntPtr pIds = Marshal.AllocHGlobal(size); Marshal.Copy(ids, 0, pIds, nPts); vertices.InsertNextCell(nPts, pIds); Marshal.FreeHGlobal(pIds); // Create a polydata object vtkPolyData pointPoly = vtkPolyData.New(); // Set the points and vertices we created as the geometry and topology of the polydata pointPoly.SetPoints(points); pointPoly.SetVerts(vertices); // Visualize vtkPolyDataMapper mapper = vtkPolyDataMapper.New(); mapper.SetInputData(pointPoly); vtkActor actor = vtkActor.New(); actor.SetMapper(mapper); actor.GetProperty().SetPointSize(10); vtkRenderWindow renderWindow = myRenderWindowControl.RenderWindow; vtkRenderer renderer = renderWindow.GetRenderers().GetFirstRenderer(); renderer.SetBackground(0.3, 0.2, 0.1); renderer.AddActor(actor); }
private void ReadPLOT3D() { // Path to vtk data must be set as an environment variable // VTK_DATA_ROOT = "C:\VTK\vtkdata-5.8.0" vtkTesting test = vtkTesting.New(); string root = test.GetDataRoot(); string filePathXYZ = System.IO.Path.Combine(root, @"Data\bluntfinxyz.bin"); string filePathQ = System.IO.Path.Combine(root, @"Data\bluntfinq.bin"); //string filePathXYZ = System.IO.Path.Combine(root, @"Data\combxyz.bin"); //string filePathQ = System.IO.Path.Combine(root, @"Data\combq.bin"); vtkMultiBlockPLOT3DReader reader = vtkMultiBlockPLOT3DReader.New(); reader.SetXYZFileName(filePathXYZ); reader.SetQFileName(filePathQ); // Specify the scalar function to extract. If ==(-1), then no scalar function is extracted. int scalarFctNo = reader.GetScalarFunctionNumber(); int vectorFctNo = reader.GetVectorFunctionNumber(); if(scalarFctNo != -1) reader.SetScalarFunctionNumber(scalarFctNo); // Specify the vector function to extract. If ==(-1), then no vector function is extracted. if(vectorFctNo != -1) reader.SetVectorFunctionNumber(vectorFctNo); reader.Update(); //// geometry filter //// This filter is multi-block aware and will request blocks from the //// input. These blocks will be processed by simple processes as if they //// are the whole dataset //vtkCompositeDataGeometryFilter geom1 = vtkCompositeDataGeometryFilter.New(); //geom1.SetInputConnection(0, reader.GetOutputPort(0)); vtkStructuredGridGeometryFilter geometryFilter = vtkStructuredGridGeometryFilter.New(); geometryFilter.SetInput(reader.GetOutput().GetBlock(0)); //geometryFilter.SetInputConnection(geom1.GetOutputPort(0)); geometryFilter.Update(); // Visualize vtkPolyDataMapper mapper = vtkPolyDataMapper.New(); mapper.SetInputConnection(geometryFilter.GetOutputPort()); //mapper.SetInputConnection(geom1.GetOutputPort()); mapper.ScalarVisibilityOn(); vtkActor actor = vtkActor.New(); actor.SetMapper(mapper); // get a reference to the renderwindow of our renderWindowControl1 vtkRenderWindow renderWindow = renderWindowControl1.RenderWindow; // renderer vtkRenderer renderer = renderWindow.GetRenderers().GetFirstRenderer(); // set background color renderer.SetBackground(0.2, 0.3, 0.4); // add our actor to the renderer renderer.AddActor(actor); }
private void RenderAddActor(vtkActor Actor) { vtkRenderWindow renderWindow = myRenderWindowControl.RenderWindow; vtkRenderer renderer = renderWindow.GetRenderers().GetFirstRenderer(); renderer.RemoveAllViewProps(); renderer.ResetCamera(); renderer.SetBackground(0.2, 0.3, 0.4); renderer.AddActor(Actor); renderer.ResetCamera(); myRenderWindowControl.Refresh(); }
private void ReadUnknownTypeXMLFile() { // Path to vtk data must be set as an environment variable // VTK_DATA_ROOT = "C:\VTK\vtkdata-5.8.0" vtkTesting test = vtkTesting.New(); string root = test.GetDataRoot(); string filePath = System.IO.Path.Combine(root, @"Data\quadraticTetra01.vtu"); //string filePath = System.IO.Path.Combine(root, @"Data\SyntheticPolyline.vtp"); // reader // Read all the data from the file vtkXMLGenericDataObjectReader reader = vtkXMLGenericDataObjectReader.New(); // caution: you cannot use CanReadFile with the generic reader //if(reader.CanReadFile(filePath) == 0) { // MessageBox.Show("Cannot read file \"" + filePath + "\"", "Error", MessageBoxButtons.OK); // return; //} reader.SetFileName(filePath); reader.Update(); // here we read the file actually // All of the standard data types can be checked and obtained like this: if (vtkPolyData.SafeDownCast(reader.GetOutput()) != null) { Debug.WriteLine("File is a polydata"); } else if (vtkUnstructuredGrid.SafeDownCast(reader.GetOutput()) != null) { Debug.WriteLine("File is an unstructured grid"); } // mapper vtkDataSetMapper mapper = vtkDataSetMapper.New(); mapper.SetInputConnection(reader.GetOutputPort()); // actor vtkActor actor = vtkActor.New(); actor.SetMapper(mapper); //actor.GetProperty().SetRepresentationToWireframe(); // get a reference to the renderwindow of our renderWindowControl1 vtkRenderWindow renderWindow = renderWindowControl1.RenderWindow; vtkRenderer renderer = renderWindow.GetRenderers().GetFirstRenderer(); // set background color renderer.SetBackground(0.2, 0.3, 0.4); // add our actor to the renderer renderer.AddActor(actor); }
private void SolidClip() { // Create a superquadric vtkSuperquadricSource superquadricSource = vtkSuperquadricSource.New(); superquadricSource.SetPhiRoundness(3.1); superquadricSource.SetThetaRoundness(2.2); // Define a clipping plane vtkPlane clipPlane = vtkPlane.New(); clipPlane.SetNormal(1.0, -1.0, -1.0); clipPlane.SetOrigin(0.0, 0.0, 0.0); // Clip the source with the plane vtkClipPolyData clipper = vtkClipPolyData.New(); #if VTK_MAJOR_VERSION_5 clipper.SetInputConnection(superquadricSource.GetOutputPort()); #else clipper.SetInputData(superquadricSource); #endif clipper.SetClipFunction(clipPlane); //Create a mapper and actor vtkPolyDataMapper superquadricMapper = vtkPolyDataMapper.New(); #if VTK_MAJOR_VERSION_5 superquadricMapper.SetInputConnection(clipper.GetOutputPort()); #else superquadricMapper.SetInputData(clipper); #endif vtkActor superquadricActor = vtkActor.New(); superquadricActor.SetMapper(superquadricMapper); // Create a property to be used for the back faces. Turn off all // shading by specifying 0 weights for specular and diffuse. Max the // ambient. vtkProperty backFaces = vtkProperty.New(); backFaces.SetSpecular(0.0); backFaces.SetDiffuse(0.0); backFaces.SetAmbient(1.0); backFaces.SetAmbientColor(1.0000, 0.3882, 0.2784); superquadricActor.SetBackfaceProperty(backFaces); // get a reference to the renderwindow of our renderWindowControl1 vtkRenderWindow renderWindow = renderWindowControl1.RenderWindow; // renderer vtkRenderer renderer = renderWindow.GetRenderers().GetFirstRenderer(); // add our actor to the renderer renderer.AddActor(superquadricActor); }
private void ColorDisconnectedRegions() { // Create some spheres vtkSphereSource sphereSource1 = vtkSphereSource.New(); sphereSource1.Update(); vtkSphereSource sphereSource2 = vtkSphereSource.New(); sphereSource2.SetCenter(5, 0, 0); sphereSource2.Update(); vtkSphereSource sphereSource3 = vtkSphereSource.New(); sphereSource3.SetCenter(10, 0, 0); sphereSource3.Update(); vtkAppendPolyData appendFilter = vtkAppendPolyData.New(); appendFilter.AddInputConnection(sphereSource1.GetOutputPort()); appendFilter.AddInputConnection(sphereSource2.GetOutputPort()); appendFilter.AddInputConnection(sphereSource3.GetOutputPort()); vtkPolyDataConnectivityFilter connectivityFilter = vtkPolyDataConnectivityFilter.New(); connectivityFilter.SetInputConnection(appendFilter.GetOutputPort()); connectivityFilter.SetExtractionModeToAllRegions(); connectivityFilter.ColorRegionsOn(); connectivityFilter.Update(); // Visualize vtkPolyDataMapper mapper = vtkPolyDataMapper.New(); mapper.SetInputConnection(connectivityFilter.GetOutputPort()); double[] range = connectivityFilter.GetOutput().GetPointData().GetArray("RegionId").GetRange(); mapper.SetScalarRange(range[0], range[1]); vtkActor actor = vtkActor.New(); actor.SetMapper(mapper); // get a reference to the renderwindow of our renderWindowControl1 vtkRenderWindow renderWindow = renderWindowControl1.RenderWindow; // renderer vtkRenderer renderer = renderWindow.GetRenderers().GetFirstRenderer(); // set background color renderer.SetBackground(0.0, 0.0, 0.0); // add our actor to the renderer renderer.AddActor(actor); }
private void Frustum() { // Create a frustum. // in this example we need the renderer first to retrieve the active camera // in order to get camera's frustum planes vtkRenderWindow renderWindow = renderWindowControl1.RenderWindow; vtkRenderer renderer = renderWindow.GetRenderers().GetFirstRenderer(); vtkCamera camera = renderer.GetActiveCamera(); double[] aspect = renderer.GetAspect(); double aspectRatio = aspect[0] / aspect[1]; // allocate memory for 24 unmanaged doubles int size = Marshal.SizeOf(typeof(double)) * 24; IntPtr ptr = Marshal.AllocHGlobal(size); camera.GetFrustumPlanes(aspectRatio, ptr); // in case we would need this values directly we could copy // the unmanaged double array to a managed array like so: // double[] planesArray = new double[24]; // Marshal.Copy(ptr, planesArray, 0, 24); // but fortunately we can forward the IntPtr directly to the function // SetFrustumPlanes() vtkPlanes planes = vtkPlanes.New(); planes.SetFrustumPlanes(ptr); // free unmanaged memory Marshal.FreeHGlobal(ptr); vtkFrustumSource frustumSource = vtkFrustumSource.New(); frustumSource.SetPlanes(planes); frustumSource.Update(); vtkPolyData frustum = frustumSource.GetOutput(); // Visualize vtkPolyDataMapper mapper = vtkPolyDataMapper.New(); mapper.SetInput(frustum); vtkActor actor = vtkActor.New(); actor.SetMapper(mapper); renderer.SetBackground(.2, .1, .3); // Background color dark purple renderer.AddActor(actor); renderer.ResetCamera(); }
private void WriteMetaImage() { // Path to vtk data must be set as an environment variable // VTK_DATA_ROOT = "C:\VTK\vtkdata-5.8.0" vtkTesting test = vtkTesting.New(); string root = test.GetDataRoot(); string filePath = System.IO.Path.Combine(root, @"Data\test_mha.mhd"); string filePathRaw = System.IO.Path.Combine(root, @"Data\test_mha.raw"); // Create an image vtkImageMandelbrotSource source = vtkImageMandelbrotSource.New(); source.Update(); vtkImageCast castFilter = vtkImageCast.New(); castFilter.SetOutputScalarTypeToUnsignedChar(); castFilter.SetInputConnection(source.GetOutputPort()); castFilter.Update(); vtkMetaImageWriter writer = vtkMetaImageWriter.New(); writer.SetInputConnection(castFilter.GetOutputPort()); writer.SetFileName(filePath); writer.SetRAWFileName(filePathRaw); writer.Write(); // Read and display file for verification that it was written correctly vtkMetaImageReader reader = vtkMetaImageReader.New(); if (reader.CanReadFile(filePath) == 0) { MessageBox.Show("Cannot read file \"" + filePath + "\"", "Error", MessageBoxButtons.OK); return; } reader.SetFileName(filePath); reader.Update(); vtkImageActor actor = vtkImageActor.New(); actor.SetInput(reader.GetOutput()); // Visualize vtkRenderWindow renderWindow = renderWindowControl1.RenderWindow; // renderer vtkRenderer renderer = renderWindow.GetRenderers().GetFirstRenderer(); // set background color renderer.SetBackground(0.2, 0.3, 0.4); renderer.AddActor(actor); }
public Simulation(vtkRenderWindow renderWindow) { RenderWindow = renderWindow; Renderer = renderWindow.GetRenderers().GetFirstRenderer(); //Background Renderer.GradientBackgroundOn(); Renderer.SetBackground((double)colorBackground.R / 255, (double)colorBackground.G / 255, (double)colorBackground.B / 255); Renderer.SetBackground2((double)colorBackground2.R / 255, (double)colorBackground2.G / 255, (double)colorBackground2.B / 255); //Base baseAxes.SetTotalLength(200, 200, 200); baseAxes.AxisLabelsOff(); Renderer.AddActor(baseAxes); //Floor vtkPlaneSource planeSource = vtkPlaneSource.New(); planeSource.SetOrigin(-1000.0, -1000.0, 0); planeSource.SetPoint1(-1000.0, 1000.0, 0); planeSource.SetPoint2(1000.0, -1000.0, 0); planeSource.Update(); vtkPolyDataMapper mapper = vtkPolyDataMapper.New(); vtkPolyData plane = planeSource.GetOutput(); mapper.SetInput(plane); floor = vtkActor.New(); floor.SetMapper(mapper); floor.GetProperty().SetColor(0.8, 0.8, 0.8); Renderer.AddActor(floor); //Robot1 robot1Pos = new Position(-500, 0, 0, 0, 0, 0); //Robots.Robot1.Base = new Position(-500, 0, 0, 0, 0, 0); robot1part1 = LoadSTL(robot1part1, @"\Robot\agilus_00.stl", Color.FromArgb(25, 25, 25)); robot1part2 = LoadSTL(robot1part2, @"\Robot\agilus_01.stl", Color.FromArgb(255, 110, 0)); robot1part3 = LoadSTL(robot1part3, @"\Robot\agilus_02.stl", Color.FromArgb(255, 110, 0)); robot1part4 = LoadSTL(robot1part4, @"\Robot\agilus_03.stl", Color.FromArgb(255, 110, 0)); robot1part5 = LoadSTL(robot1part5, @"\Robot\agilus_04.stl", Color.FromArgb(255, 110, 0)); robot1part6 = LoadSTL(robot1part6, @"\Robot\agilus_05.stl", Color.FromArgb(255, 110, 0)); robot1part7 = LoadSTL(robot1part6, @"\Robot\agilus_06.stl", Color.DarkGray); robot1part1.SetPosition(robot1Pos.X, robot1Pos.Y, robot1Pos.Z); Renderer.AddActor(robot1part1); Renderer.AddActor(robot1part2); Renderer.AddActor(robot1part3); Renderer.AddActor(robot1part4); Renderer.AddActor(robot1part5); Renderer.AddActor(robot1part6); Renderer.AddActor(robot1part7); robot1axes1.SetTotalLength(200, 200, 200); robot1axes1.AxisLabelsOff(); Renderer.AddActor(robot1axes1); robot1axes2.SetTotalLength(200, 200, 200); robot1axes2.AxisLabelsOff(); Renderer.AddActor(robot1axes2); robot1axes3.SetTotalLength(200, 200, 200); robot1axes3.AxisLabelsOff(); Renderer.AddActor(robot1axes3); robot1axes4.SetTotalLength(200, 200, 200); robot1axes4.AxisLabelsOff(); Renderer.AddActor(robot1axes4); robot1axes5.SetTotalLength(200, 200, 200); robot1axes5.AxisLabelsOff(); Renderer.AddActor(robot1axes5); robot1axes6.SetTotalLength(200, 200, 200); robot1axes6.AxisLabelsOff(); Renderer.AddActor(robot1axes6); //Robot2 robot2Pos = new Position(1000, 0, 0, 0, 0, 0); Robots.Robot2.Base = robot2Pos; robot2part1 = LoadSTL(robot2part1, @"\Robot\agilus_00.stl", Color.FromArgb(25, 25, 25)); robot2part2 = LoadSTL(robot2part2, @"\Robot\agilus_01.stl", Color.FromArgb(255, 110, 0)); robot2part3 = LoadSTL(robot2part3, @"\Robot\agilus_02.stl", Color.FromArgb(255, 110, 0)); robot2part4 = LoadSTL(robot2part4, @"\Robot\agilus_03.stl", Color.FromArgb(255, 110, 0)); robot2part5 = LoadSTL(robot2part5, @"\Robot\agilus_04.stl", Color.FromArgb(255, 110, 0)); robot2part6 = LoadSTL(robot2part6, @"\Robot\agilus_05.stl", Color.FromArgb(255, 110, 0)); robot2part7 = LoadSTL(robot2part6, @"\Robot\agilus_06.stl", Color.DarkGray); robot2part1.SetPosition(Robots.Robot2.Base.X, Robots.Robot2.Base.Y, Robots.Robot2.Base.Z); Renderer.AddActor(robot2part1); Renderer.AddActor(robot2part2); Renderer.AddActor(robot2part3); Renderer.AddActor(robot2part4); Renderer.AddActor(robot2part5); Renderer.AddActor(robot2part6); Renderer.AddActor(robot2part7); robot2axes1.SetTotalLength(200, 200, 200); robot2axes1.AxisLabelsOff(); Renderer.AddActor(robot2axes1); robot2axes2.SetTotalLength(200, 200, 200); robot2axes2.AxisLabelsOff(); Renderer.AddActor(robot2axes2); robot2axes3.SetTotalLength(200, 200, 200); robot2axes3.AxisLabelsOff(); Renderer.AddActor(robot2axes3); robot2axes4.SetTotalLength(200, 200, 200); robot2axes4.AxisLabelsOff(); Renderer.AddActor(robot2axes4); robot2axes5.SetTotalLength(200, 200, 200); robot2axes5.AxisLabelsOff(); Renderer.AddActor(robot2axes5); robot2axes6.SetTotalLength(200, 200, 200); robot2axes6.AxisLabelsOff(); Renderer.AddActor(robot2axes6); Renderer.AddActor(drawPointCloud()); Renderer.Render(); worker.DoWork += worker_DoWork; worker.RunWorkerAsync(); }
/// <summary> /// 读取stl文件,并在窗口进行显示,并设置全局变量originalMesh /// </summary> private void ReadSTL() { //Path to vtk data must be set as an environment variable //VTK_DATA_ROOT="" vtkSTLReader reader = vtkSTLReader.New(); reader.SetFileName(FileFullName); reader.Update(); mapper = vtkPolyDataMapper.New(); mapper.SetInputConnection(reader.GetOutputPort()); actor = vtkActor.New(); actor.SetMapper(mapper); //get a reference to the renderwindow of our renderWindowControll renderWindow = renderWindowControl1.RenderWindow; //renderer renderer = renderWindow.GetRenderers().GetFirstRenderer(); //移除之前所有prop renderer.RemoveAllViewProps(); //set background color renderer.SetBackground(0.2, 0.3, 0.4); //add our actor to the renderer renderer.AddActor(actor); originalMesh = vtkPolyData.New(); originalMesh.DeepCopy(reader.GetOutput()); tb_numOfPoint.Text = originalMesh.GetNumberOfPoints().ToString(); //creat a cell picker picker = vtkCellPicker.New(); vtkRenderWindowInteractor iren = renderWindow.GetInteractor(); iren.SetPicker(picker); renderer.ResetCamera(); renderWindow.Render(); }