private static void NullPoint() { vtkPoints points = vtkPoints.New(); points.InsertNextPoint(1, 1, 1); points.InsertNextPoint(2, 2, 2); points.InsertNextPoint(3, 3, 3); vtkPolyData polydata = vtkPolyData.New(); polydata.SetPoints(points); vtkFloatArray floatArray = vtkFloatArray.New(); floatArray.SetNumberOfValues(3); floatArray.SetNumberOfComponents(1); floatArray.SetName("FloatArray"); for (int i = 0; i < 3; i++) { floatArray.SetValue(i, 2); } polydata.GetPointData().AddArray(floatArray); vtkIntArray intArray = vtkIntArray.New(); intArray.SetNumberOfValues(3); intArray.SetNumberOfComponents(1); intArray.SetName("IntArray"); for (int i = 0; i < 3; i++) { intArray.SetValue(i, 2); } polydata.GetPointData().AddArray(intArray); Console.WriteLine("PointIdx x y z " + "floatArray" + " " + "intArray"); Console.WriteLine("----------------------------------------"); for (int i = 0; i < 3; i++) { double[] p = polydata.GetPoint(i); vtkFloatArray pointsFloatArray = vtkFloatArray.SafeDownCast(polydata.GetPointData().GetArray("FloatArray")); vtkIntArray pointsIntArray = vtkIntArray.SafeDownCast(polydata.GetPointData().GetArray("IntArray")); Console.WriteLine(" " + i + " " + p[0] + " " + p[1] + " " + p[2] + " " + pointsFloatArray.GetValue(i) + " " + pointsIntArray.GetValue(i)); } polydata.GetPointData().NullPoint(1); polydata.Modified(); Console.WriteLine(""); for (int i = 0; i < 3; i++) { double[] p = polydata.GetPoint(i); vtkFloatArray pointsFloatArray = vtkFloatArray.SafeDownCast(polydata.GetPointData().GetArray("FloatArray")); vtkIntArray pointsIntArray = vtkIntArray.SafeDownCast(polydata.GetPointData().GetArray("IntArray")); Console.WriteLine(" " + i + " " + p[0] + " " + p[1] + " " + p[2] + " " + pointsFloatArray.GetValue(i) + " " + pointsIntArray.GetValue(i)); } }
private void ElevationFilter() { // Created a grid of points (heigh/terrian map) vtkPoints points = vtkPoints.New(); uint GridSize = 10; for (uint x = 0; x < GridSize; x++) { for (uint y = 0; y < GridSize; y++) { points.InsertNextPoint(x, y, (x + y) / (y + 1)); } } double[] bounds = points.GetBounds(); // Add the grid points to a polydata object vtkPolyData inputPolyData = vtkPolyData.New(); inputPolyData.SetPoints(points); // Triangulate the grid points vtkDelaunay2D delaunay = vtkDelaunay2D.New(); #if VTK_MAJOR_VERSION_5 delaunay.SetInput(inputPolyData); #else delaunay.SetInputData(inputPolyData); #endif delaunay.Update(); vtkElevationFilter elevationFilter = vtkElevationFilter.New(); elevationFilter.SetInputConnection(delaunay.GetOutputPort()); elevationFilter.SetLowPoint(0.0, 0.0, bounds[4]); elevationFilter.SetHighPoint(0.0, 0.0, bounds[5]); elevationFilter.Update(); vtkPolyData output = vtkPolyData.New(); output.ShallowCopy(vtkPolyData.SafeDownCast(elevationFilter.GetOutput())); vtkFloatArray elevation = vtkFloatArray.SafeDownCast(output.GetPointData().GetArray("Elevation")); // Create the color map vtkLookupTable colorLookupTable = vtkLookupTable.New(); colorLookupTable.SetTableRange(bounds[4], bounds[5]); colorLookupTable.Build(); // Generate the colors for each point based on the color map vtkUnsignedCharArray colors = vtkUnsignedCharArray.New(); colors.SetNumberOfComponents(3); colors.SetName("Colors"); for (int i = 0; i < output.GetNumberOfPoints(); i++) { double val = elevation.GetValue(i); Debug.WriteLine("val: " + val); double[] dcolor = colorLookupTable.GetColor(val); //Debug.WriteLine("dcolor: " // + dcolor[0] + " " // + dcolor[1] + " " // + dcolor[2]); byte[] color = new byte[3]; for (int j = 0; j < 3; j++) { color[j] = (byte)(255 * dcolor[j]); } //Debug.WriteLine("color: " // + color[0] + " " // + color[1] + " " // + color[2]); colors.InsertNextTuple3(color[0], color[1], color[2]); } output.GetPointData().AddArray(colors); // Visualize vtkPolyDataMapper mapper = vtkPolyDataMapper.New(); #if VTK_MAJOR_VERSION_5 mapper.SetInputConnection(output.GetProducerPort()); #else mapper.SetInputData(output); #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(0.2, 0.3, 0.4); // add our actor to the renderer renderer.AddActor(actor); }