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 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 PolyDataGetPoint() { // Create a sphere vtkSphereSource sphereSource = vtkSphereSource.New(); sphereSource.Update(); vtkPolyData polydata = sphereSource.GetOutput(); // Write all of the coordinates of the points in the vtkPolyData to the console. for (int i = 0; i < polydata.GetNumberOfPoints(); i++) { double[] p = polydata.GetPoint(i); // This is identical to: // double[] p = polydata.GetPoints().GetPoint(i); Console.WriteLine("Point " + i + " : (" + p[0] + " " + p[1] + " " + p[2] + ")"); } }
private void Planes() { // in this example we need the renderer first to retrieve the active camera // in order to get camera's frustum planes and renderer's aspectratio vtkRenderWindow renderWindow = renderWindowControl1.RenderWindow; vtkRenderer renderer = vtkRenderer.New(); renderer = renderWindow.GetRenderers().GetFirstRenderer(); vtkCamera camera = renderer.GetActiveCamera(); double[] aspect = renderer.GetAspect(); double aspectRatio = aspect[0] / aspect[1]; vtkPlanes planes = vtkPlanes.New(); // one way { // 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 diectly 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() planes.SetFrustumPlanes(ptr); // free unmanaged memory Marshal.FreeHGlobal(ptr); } // another way { vtkSphereSource sphereSource = vtkSphereSource.New(); sphereSource.Update(); double[] bounds = new double[6]; bounds = sphereSource.GetOutput().GetBounds(); planes.SetBounds(bounds[0], bounds[1], bounds[2], bounds[3], bounds[4], bounds[5]); } // nothing to visualize }
private static void FindAllArrayNames(string filePath) { vtkPolyData polydata = vtkPolyData.New(); if (filePath == null) { vtkSphereSource sphereSource = vtkSphereSource.New(); sphereSource.Update(); vtkXMLPolyDataWriter writer = vtkXMLPolyDataWriter.New(); writer.SetFileName(@"c:\vtk\vtkdata-5.8.0\Data\testFindAllArrayNames.vtp"); writer.SetInputConnection(sphereSource.GetOutputPort()); writer.Write(); polydata = sphereSource.GetOutput(); } else { vtkXMLPolyDataReader reader = vtkXMLPolyDataReader.New(); reader.SetFileName(filePath); reader.Update(); polydata = reader.GetOutput(); } FindAllData(ref polydata); }
private void PlanesIntersection() { vtkSphereSource sphereSource = vtkSphereSource.New(); sphereSource.Update(); double[] bounds = new double[6]; bounds = sphereSource.GetOutput().GetBounds(); vtkPoints box = vtkPoints.New(); box.SetNumberOfPoints(8); double xMin, xMax, yMin, yMax, zMin, zMax; xMin = bounds[0]; xMax = bounds[1]; yMin = bounds[2]; yMax = bounds[3]; zMin = bounds[4]; zMax = bounds[5]; box.SetPoint(0, xMax, yMin, zMax); box.SetPoint(1, xMax, yMin, zMin); box.SetPoint(2, xMax, yMax, zMin); box.SetPoint(3, xMax, yMax, zMax); box.SetPoint(4, xMin, yMin, zMax); box.SetPoint(5, xMin, yMin, zMin); box.SetPoint(6, xMin, yMax, zMin); box.SetPoint(7, xMin, yMax, zMax); vtkPlanesIntersection planesIntersection = vtkPlanesIntersection.New(); planesIntersection.SetBounds(bounds[0], bounds[1], bounds[2], bounds[3], bounds[4], bounds[5]); int intersects = planesIntersection.IntersectsRegion(box); Debug.WriteLine("Intersects? " + ((intersects == 1) ? true : false).ToString()); // nothing to visualize }
private static void MultiBlockMergeFilter() { vtkSphereSource sphereSource1 = vtkSphereSource.New(); sphereSource1.Update(); vtkSphereSource sphereSource2 = vtkSphereSource.New(); sphereSource2.SetCenter(10, 10, 10); sphereSource2.Update(); vtkMultiBlockDataSet multiBlockDataSet1 = vtkMultiBlockDataSet.New(); multiBlockDataSet1.SetNumberOfBlocks(1); multiBlockDataSet1.SetBlock(0, sphereSource1.GetOutput()); #if VTK_MAJOR_VERSION_5 multiBlockDataSet1.Update(); #endif vtkMultiBlockDataSet multiBlockDataSet2 = vtkMultiBlockDataSet.New(); multiBlockDataSet2.SetNumberOfBlocks(1); multiBlockDataSet2.SetBlock(0, sphereSource2.GetOutput()); #if VTK_MAJOR_VERSION_5 multiBlockDataSet2.Update(); #endif vtkMultiBlockMergeFilter multiBlockMergeFilter = vtkMultiBlockMergeFilter.New(); #if VTK_MAJOR_VERSION_5 multiBlockMergeFilter.AddInput(multiBlockDataSet1); multiBlockMergeFilter.AddInput(multiBlockDataSet2); #else multiBlockMergeFilter.AddInputData(multiBlockDataSet1); multiBlockMergeFilter.AddInputData(multiBlockDataSet2); #endif multiBlockMergeFilter.Update(); }
private void WeightedTransformFilter() { // Use a sphere as a basis of the shape vtkSphereSource sphere = vtkSphereSource.New(); sphere.SetPhiResolution(40); sphere.SetThetaResolution(40); sphere.Update(); vtkPolyData sphereData = sphere.GetOutput(); // Create a data array to hold the weighting coefficients vtkFloatArray tfarray = vtkFloatArray.New(); int npoints = sphereData.GetNumberOfPoints(); tfarray.SetNumberOfComponents(2); tfarray.SetNumberOfTuples(npoints); // Parameterize the sphere along the z axis, and fill the weights // with (1.0-a, a) to linearly interpolate across the shape IntPtr pPoint = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(double)) * 3); double[] point = new double[3]; for (int i = 0; i < npoints; i++) { sphereData.GetPoint(i, pPoint); Marshal.Copy(pPoint, point, 0, 3); double x = point[0]; double y = point[1]; double z = point[2]; double zn = z + 0.5; double zn1 = 1.0 - zn; if (zn > 1.0) { zn = 1.0; } if (zn1 < 0.0) { zn1 = 0.0; } tfarray.SetComponent(i, 0, zn1); tfarray.SetComponent(i, 1, zn); } Marshal.FreeHGlobal(pPoint); // Create field data to hold the array, and bind it to the sphere vtkFieldData fd = vtkFieldData.New(); tfarray.SetName("weights"); sphereData.GetPointData().AddArray(tfarray); // Use an ordinary transform to stretch the shape vtkTransform stretch = vtkTransform.New(); stretch.Scale(1, 1, 3.2); vtkTransformFilter stretchFilter = vtkTransformFilter.New(); stretchFilter.SetInputConnection(sphereData.GetProducerPort()); stretchFilter.SetTransform(stretch); // Now, for the weighted transform stuff vtkWeightedTransformFilter weightedTrans = vtkWeightedTransformFilter.New(); // Create two transforms to interpolate between vtkTransform identity = vtkTransform.New(); identity.Identity(); vtkTransform rotated = vtkTransform.New(); double rotatedAngle = 45; rotated.RotateX(rotatedAngle); weightedTrans.SetNumberOfTransforms(2); weightedTrans.SetTransform(identity, 0); weightedTrans.SetTransform(rotated, 1); // which data array should the filter use ? weightedTrans.SetWeightArray("weights"); weightedTrans.SetInputConnection(stretchFilter.GetOutputPort()); vtkPolyDataMapper weightedTransMapper = vtkPolyDataMapper.New(); weightedTransMapper.SetInputConnection(weightedTrans.GetOutputPort()); vtkActor weightedTransActor = vtkActor.New(); weightedTransActor.SetMapper(weightedTransMapper); weightedTransActor.GetProperty().SetDiffuseColor(0.8, 0.8, 0.1); weightedTransActor.GetProperty().SetRepresentationToSurface(); // 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(weightedTransActor); renderer.ResetCamera(); renderer.GetActiveCamera().Azimuth(90); renderer.GetActiveCamera().Dolly(1); }
private void QuadricDecimation() { vtkSphereSource sphereSource = vtkSphereSource.New(); sphereSource.Update(); vtkPolyData input = vtkPolyData.New(); input.ShallowCopy(sphereSource.GetOutput()); Debug.WriteLine("Before decimation" + Environment.NewLine + "------------"); Debug.WriteLine("There are " + input.GetNumberOfPoints() + " points."); Debug.WriteLine("There are " + input.GetNumberOfPolys() + " polygons."); vtkQuadricDecimation decimate = vtkQuadricDecimation.New(); #if VTK_MAJOR_VERSION_5 decimate.SetInputConnection(input.GetProducerPort()); #else decimate.SetInputData(input); #endif decimate.Update(); vtkPolyData decimated = vtkPolyData.New(); decimated.ShallowCopy(decimate.GetOutput()); Debug.WriteLine("After decimation" + Environment.NewLine + "------------"); Debug.WriteLine("There are " + decimated.GetNumberOfPoints() + " points."); Debug.WriteLine("There are " + decimated.GetNumberOfPolys() + " polygons."); vtkPolyDataMapper inputMapper = vtkPolyDataMapper.New(); #if VTK_MAJOR_VERSION_5 inputMapper.SetInputConnection(input.GetProducerPort()); #else inputMapper.SetInputData(input); #endif vtkActor inputActor = vtkActor.New(); inputActor.SetMapper(inputMapper); vtkPolyDataMapper decimatedMapper = vtkPolyDataMapper.New(); #if VTK_MAJOR_VERSION_5 decimatedMapper.SetInputConnection(decimated.GetProducerPort()); #else decimatedMapper.SetInputData(decimated); #endif vtkActor decimatedActor = vtkActor.New(); decimatedActor.SetMapper(decimatedMapper); vtkRenderWindow renderWindow = renderWindowControl1.RenderWindow; this.Size = new System.Drawing.Size(612, 352); // Define viewport ranges // (xmin, ymin, xmax, ymax) double[] leftViewport = new double[] { 0.0, 0.0, 0.5, 1.0 }; double[] rightViewport = new double[] { 0.5, 0.0, 1.0, 1.0 }; // Setup both renderers vtkRenderer leftRenderer = vtkRenderer.New(); renderWindow.AddRenderer(leftRenderer); leftRenderer.SetViewport(leftViewport[0], leftViewport[1], leftViewport[2], leftViewport[3]); leftRenderer.SetBackground(.6, .5, .4); vtkRenderer rightRenderer = vtkRenderer.New(); renderWindow.AddRenderer(rightRenderer); rightRenderer.SetViewport(rightViewport[0], rightViewport[1], rightViewport[2], rightViewport[3]); rightRenderer.SetBackground(.4, .5, .6); // Add the sphere to the left and the cube to the right leftRenderer.AddActor(inputActor); rightRenderer.AddActor(decimatedActor); leftRenderer.ResetCamera(); rightRenderer.ResetCamera(); renderWindow.Render(); }
/// <summary> /// The main entry method called by the CSharp driver /// </summary> /// <param name="argv"></param> public static void AVTestCellDerivs(String [] argv) { //Prefix Content is: "" // Demonstrates vtkCellDerivatives for all cell types[] //[] // get the interactor ui[] ren1 = vtkRenderer.New(); renWin = vtkRenderWindow.New(); renWin.AddRenderer((vtkRenderer)ren1); iren = new vtkRenderWindowInteractor(); iren.SetRenderWindow((vtkRenderWindow)renWin); // create a scene with one of each cell type[] // Voxel[] voxelPoints = new vtkPoints(); voxelPoints.SetNumberOfPoints((int)8); voxelPoints.InsertPoint((int)0,(double)0,(double)0,(double)0); voxelPoints.InsertPoint((int)1,(double)1,(double)0,(double)0); voxelPoints.InsertPoint((int)2,(double)0,(double)1,(double)0); voxelPoints.InsertPoint((int)3,(double)1,(double)1,(double)0); voxelPoints.InsertPoint((int)4,(double)0,(double)0,(double)1); voxelPoints.InsertPoint((int)5,(double)1,(double)0,(double)1); voxelPoints.InsertPoint((int)6,(double)0,(double)1,(double)1); voxelPoints.InsertPoint((int)7,(double)1,(double)1,(double)1); aVoxel = new vtkVoxel(); aVoxel.GetPointIds().SetId((int)0,(int)0); aVoxel.GetPointIds().SetId((int)1,(int)1); aVoxel.GetPointIds().SetId((int)2,(int)2); aVoxel.GetPointIds().SetId((int)3,(int)3); aVoxel.GetPointIds().SetId((int)4,(int)4); aVoxel.GetPointIds().SetId((int)5,(int)5); aVoxel.GetPointIds().SetId((int)6,(int)6); aVoxel.GetPointIds().SetId((int)7,(int)7); aVoxelGrid = new vtkUnstructuredGrid(); aVoxelGrid.Allocate((int)1,(int)1); aVoxelGrid.InsertNextCell((int)aVoxel.GetCellType(),(vtkIdList)aVoxel.GetPointIds()); aVoxelGrid.SetPoints((vtkPoints)voxelPoints); aVoxelMapper = new vtkDataSetMapper(); aVoxelMapper.SetInput((vtkDataSet)aVoxelGrid); aVoxelActor = new vtkActor(); aVoxelActor.SetMapper((vtkMapper)aVoxelMapper); aVoxelActor.GetProperty().BackfaceCullingOn(); // Hexahedron[] hexahedronPoints = new vtkPoints(); hexahedronPoints.SetNumberOfPoints((int)8); hexahedronPoints.InsertPoint((int)0,(double)0,(double)0,(double)0); hexahedronPoints.InsertPoint((int)1,(double)1,(double)0,(double)0); hexahedronPoints.InsertPoint((int)2,(double)1,(double)1,(double)0); hexahedronPoints.InsertPoint((int)3,(double)0,(double)1,(double)0); hexahedronPoints.InsertPoint((int)4,(double)0,(double)0,(double)1); hexahedronPoints.InsertPoint((int)5,(double)1,(double)0,(double)1); hexahedronPoints.InsertPoint((int)6,(double)1,(double)1,(double)1); hexahedronPoints.InsertPoint((int)7,(double)0,(double)1,(double)1); aHexahedron = new vtkHexahedron(); aHexahedron.GetPointIds().SetId((int)0,(int)0); aHexahedron.GetPointIds().SetId((int)1,(int)1); aHexahedron.GetPointIds().SetId((int)2,(int)2); aHexahedron.GetPointIds().SetId((int)3,(int)3); aHexahedron.GetPointIds().SetId((int)4,(int)4); aHexahedron.GetPointIds().SetId((int)5,(int)5); aHexahedron.GetPointIds().SetId((int)6,(int)6); aHexahedron.GetPointIds().SetId((int)7,(int)7); aHexahedronGrid = new vtkUnstructuredGrid(); aHexahedronGrid.Allocate((int)1,(int)1); aHexahedronGrid.InsertNextCell((int)aHexahedron.GetCellType(),(vtkIdList)aHexahedron.GetPointIds()); aHexahedronGrid.SetPoints((vtkPoints)hexahedronPoints); aHexahedronMapper = new vtkDataSetMapper(); aHexahedronMapper.SetInput((vtkDataSet)aHexahedronGrid); aHexahedronActor = new vtkActor(); aHexahedronActor.SetMapper((vtkMapper)aHexahedronMapper); aHexahedronActor.AddPosition((double)2,(double)0,(double)0); aHexahedronActor.GetProperty().BackfaceCullingOn(); // Tetra[] tetraPoints = new vtkPoints(); tetraPoints.SetNumberOfPoints((int)4); tetraPoints.InsertPoint((int)0,(double)0,(double)0,(double)0); tetraPoints.InsertPoint((int)1,(double)1,(double)0,(double)0); tetraPoints.InsertPoint((int)2,(double)0,(double)1,(double)0); tetraPoints.InsertPoint((int)3,(double)1,(double)1,(double)1); aTetra = new vtkTetra(); aTetra.GetPointIds().SetId((int)0,(int)0); aTetra.GetPointIds().SetId((int)1,(int)1); aTetra.GetPointIds().SetId((int)2,(int)2); aTetra.GetPointIds().SetId((int)3,(int)3); aTetraGrid = new vtkUnstructuredGrid(); aTetraGrid.Allocate((int)1,(int)1); aTetraGrid.InsertNextCell((int)aTetra.GetCellType(),(vtkIdList)aTetra.GetPointIds()); aTetraGrid.SetPoints((vtkPoints)tetraPoints); aTetraMapper = new vtkDataSetMapper(); aTetraMapper.SetInput((vtkDataSet)aTetraGrid); aTetraActor = new vtkActor(); aTetraActor.SetMapper((vtkMapper)aTetraMapper); aTetraActor.AddPosition((double)4,(double)0,(double)0); aTetraActor.GetProperty().BackfaceCullingOn(); // Wedge[] wedgePoints = new vtkPoints(); wedgePoints.SetNumberOfPoints((int)6); wedgePoints.InsertPoint((int)0,(double)0,(double)1,(double)0); wedgePoints.InsertPoint((int)1,(double)0,(double)0,(double)0); wedgePoints.InsertPoint((int)2,(double)0,(double).5,(double).5); wedgePoints.InsertPoint((int)3,(double)1,(double)1,(double)0); wedgePoints.InsertPoint((int)4,(double)1,(double)0,(double)0); wedgePoints.InsertPoint((int)5,(double)1,(double).5,(double).5); aWedge = new vtkWedge(); aWedge.GetPointIds().SetId((int)0,(int)0); aWedge.GetPointIds().SetId((int)1,(int)1); aWedge.GetPointIds().SetId((int)2,(int)2); aWedge.GetPointIds().SetId((int)3,(int)3); aWedge.GetPointIds().SetId((int)4,(int)4); aWedge.GetPointIds().SetId((int)5,(int)5); aWedgeGrid = new vtkUnstructuredGrid(); aWedgeGrid.Allocate((int)1,(int)1); aWedgeGrid.InsertNextCell((int)aWedge.GetCellType(),(vtkIdList)aWedge.GetPointIds()); aWedgeGrid.SetPoints((vtkPoints)wedgePoints); aWedgeMapper = new vtkDataSetMapper(); aWedgeMapper.SetInput((vtkDataSet)aWedgeGrid); aWedgeActor = new vtkActor(); aWedgeActor.SetMapper((vtkMapper)aWedgeMapper); aWedgeActor.AddPosition((double)6,(double)0,(double)0); aWedgeActor.GetProperty().BackfaceCullingOn(); // Pyramid[] pyramidPoints = new vtkPoints(); pyramidPoints.SetNumberOfPoints((int)5); pyramidPoints.InsertPoint((int)0,(double)0,(double)0,(double)0); pyramidPoints.InsertPoint((int)1,(double)1,(double)0,(double)0); pyramidPoints.InsertPoint((int)2,(double)1,(double)1,(double)0); pyramidPoints.InsertPoint((int)3,(double)0,(double)1,(double)0); pyramidPoints.InsertPoint((int)4,(double).5,(double).5,(double)1); aPyramid = new vtkPyramid(); aPyramid.GetPointIds().SetId((int)0,(int)0); aPyramid.GetPointIds().SetId((int)1,(int)1); aPyramid.GetPointIds().SetId((int)2,(int)2); aPyramid.GetPointIds().SetId((int)3,(int)3); aPyramid.GetPointIds().SetId((int)4,(int)4); aPyramidGrid = new vtkUnstructuredGrid(); aPyramidGrid.Allocate((int)1,(int)1); aPyramidGrid.InsertNextCell((int)aPyramid.GetCellType(),(vtkIdList)aPyramid.GetPointIds()); aPyramidGrid.SetPoints((vtkPoints)pyramidPoints); aPyramidMapper = new vtkDataSetMapper(); aPyramidMapper.SetInput((vtkDataSet)aPyramidGrid); aPyramidActor = new vtkActor(); aPyramidActor.SetMapper((vtkMapper)aPyramidMapper); aPyramidActor.AddPosition((double)8,(double)0,(double)0); aPyramidActor.GetProperty().BackfaceCullingOn(); // Pixel[] pixelPoints = new vtkPoints(); pixelPoints.SetNumberOfPoints((int)4); pixelPoints.InsertPoint((int)0,(double)0,(double)0,(double)0); pixelPoints.InsertPoint((int)1,(double)1,(double)0,(double)0); pixelPoints.InsertPoint((int)2,(double)0,(double)1,(double)0); pixelPoints.InsertPoint((int)3,(double)1,(double)1,(double)0); aPixel = new vtkPixel(); aPixel.GetPointIds().SetId((int)0,(int)0); aPixel.GetPointIds().SetId((int)1,(int)1); aPixel.GetPointIds().SetId((int)2,(int)2); aPixel.GetPointIds().SetId((int)3,(int)3); aPixelGrid = new vtkUnstructuredGrid(); aPixelGrid.Allocate((int)1,(int)1); aPixelGrid.InsertNextCell((int)aPixel.GetCellType(),(vtkIdList)aPixel.GetPointIds()); aPixelGrid.SetPoints((vtkPoints)pixelPoints); aPixelMapper = new vtkDataSetMapper(); aPixelMapper.SetInput((vtkDataSet)aPixelGrid); aPixelActor = new vtkActor(); aPixelActor.SetMapper((vtkMapper)aPixelMapper); aPixelActor.AddPosition((double)0,(double)0,(double)2); aPixelActor.GetProperty().BackfaceCullingOn(); // Quad[] quadPoints = new vtkPoints(); quadPoints.SetNumberOfPoints((int)4); quadPoints.InsertPoint((int)0,(double)0,(double)0,(double)0); quadPoints.InsertPoint((int)1,(double)1,(double)0,(double)0); quadPoints.InsertPoint((int)2,(double)1,(double)1,(double)0); quadPoints.InsertPoint((int)3,(double)0,(double)1,(double)0); aQuad = new vtkQuad(); aQuad.GetPointIds().SetId((int)0,(int)0); aQuad.GetPointIds().SetId((int)1,(int)1); aQuad.GetPointIds().SetId((int)2,(int)2); aQuad.GetPointIds().SetId((int)3,(int)3); aQuadGrid = new vtkUnstructuredGrid(); aQuadGrid.Allocate((int)1,(int)1); aQuadGrid.InsertNextCell((int)aQuad.GetCellType(),(vtkIdList)aQuad.GetPointIds()); aQuadGrid.SetPoints((vtkPoints)quadPoints); aQuadMapper = new vtkDataSetMapper(); aQuadMapper.SetInput((vtkDataSet)aQuadGrid); aQuadActor = new vtkActor(); aQuadActor.SetMapper((vtkMapper)aQuadMapper); aQuadActor.AddPosition((double)2,(double)0,(double)2); aQuadActor.GetProperty().BackfaceCullingOn(); // Triangle[] trianglePoints = new vtkPoints(); trianglePoints.SetNumberOfPoints((int)3); trianglePoints.InsertPoint((int)0,(double)0,(double)0,(double)0); trianglePoints.InsertPoint((int)1,(double)1,(double)0,(double)0); trianglePoints.InsertPoint((int)2,(double).5,(double).5,(double)0); triangleTCoords = new vtkFloatArray(); triangleTCoords.SetNumberOfComponents((int)2); triangleTCoords.SetNumberOfTuples((int)3); triangleTCoords.InsertTuple2((int)0,(double)1,(double)1); triangleTCoords.InsertTuple2((int)1,(double)2,(double)2); triangleTCoords.InsertTuple2((int)2,(double)3,(double)3); aTriangle = new vtkTriangle(); aTriangle.GetPointIds().SetId((int)0,(int)0); aTriangle.GetPointIds().SetId((int)1,(int)1); aTriangle.GetPointIds().SetId((int)2,(int)2); aTriangleGrid = new vtkUnstructuredGrid(); aTriangleGrid.Allocate((int)1,(int)1); aTriangleGrid.InsertNextCell((int)aTriangle.GetCellType(),(vtkIdList)aTriangle.GetPointIds()); aTriangleGrid.SetPoints((vtkPoints)trianglePoints); aTriangleGrid.GetPointData().SetTCoords((vtkDataArray)triangleTCoords); aTriangleMapper = new vtkDataSetMapper(); aTriangleMapper.SetInput((vtkDataSet)aTriangleGrid); aTriangleActor = new vtkActor(); aTriangleActor.SetMapper((vtkMapper)aTriangleMapper); aTriangleActor.AddPosition((double)4,(double)0,(double)2); aTriangleActor.GetProperty().BackfaceCullingOn(); // Polygon[] polygonPoints = new vtkPoints(); polygonPoints.SetNumberOfPoints((int)4); polygonPoints.InsertPoint((int)0,(double)0,(double)0,(double)0); polygonPoints.InsertPoint((int)1,(double)1,(double)0,(double)0); polygonPoints.InsertPoint((int)2,(double)1,(double)1,(double)0); polygonPoints.InsertPoint((int)3,(double)0,(double)1,(double)0); aPolygon = new vtkPolygon(); aPolygon.GetPointIds().SetNumberOfIds((int)4); aPolygon.GetPointIds().SetId((int)0,(int)0); aPolygon.GetPointIds().SetId((int)1,(int)1); aPolygon.GetPointIds().SetId((int)2,(int)2); aPolygon.GetPointIds().SetId((int)3,(int)3); aPolygonGrid = new vtkUnstructuredGrid(); aPolygonGrid.Allocate((int)1,(int)1); aPolygonGrid.InsertNextCell((int)aPolygon.GetCellType(),(vtkIdList)aPolygon.GetPointIds()); aPolygonGrid.SetPoints((vtkPoints)polygonPoints); aPolygonMapper = new vtkDataSetMapper(); aPolygonMapper.SetInput((vtkDataSet)aPolygonGrid); aPolygonActor = new vtkActor(); aPolygonActor.SetMapper((vtkMapper)aPolygonMapper); aPolygonActor.AddPosition((double)6,(double)0,(double)2); aPolygonActor.GetProperty().BackfaceCullingOn(); // Triangle strip[] triangleStripPoints = new vtkPoints(); triangleStripPoints.SetNumberOfPoints((int)5); triangleStripPoints.InsertPoint((int)0,(double)0,(double)1,(double)0); triangleStripPoints.InsertPoint((int)1,(double)0,(double)0,(double)0); triangleStripPoints.InsertPoint((int)2,(double)1,(double)1,(double)0); triangleStripPoints.InsertPoint((int)3,(double)1,(double)0,(double)0); triangleStripPoints.InsertPoint((int)4,(double)2,(double)1,(double)0); triangleStripTCoords = new vtkFloatArray(); triangleStripTCoords.SetNumberOfComponents((int)2); triangleStripTCoords.SetNumberOfTuples((int)3); triangleStripTCoords.InsertTuple2((int)0,(double)1,(double)1); triangleStripTCoords.InsertTuple2((int)1,(double)2,(double)2); triangleStripTCoords.InsertTuple2((int)2,(double)3,(double)3); triangleStripTCoords.InsertTuple2((int)3,(double)4,(double)4); triangleStripTCoords.InsertTuple2((int)4,(double)5,(double)5); aTriangleStrip = new vtkTriangleStrip(); aTriangleStrip.GetPointIds().SetNumberOfIds((int)5); aTriangleStrip.GetPointIds().SetId((int)0,(int)0); aTriangleStrip.GetPointIds().SetId((int)1,(int)1); aTriangleStrip.GetPointIds().SetId((int)2,(int)2); aTriangleStrip.GetPointIds().SetId((int)3,(int)3); aTriangleStrip.GetPointIds().SetId((int)4,(int)4); aTriangleStripGrid = new vtkUnstructuredGrid(); aTriangleStripGrid.Allocate((int)1,(int)1); aTriangleStripGrid.InsertNextCell((int)aTriangleStrip.GetCellType(),(vtkIdList)aTriangleStrip.GetPointIds()); aTriangleStripGrid.SetPoints((vtkPoints)triangleStripPoints); aTriangleStripGrid.GetPointData().SetTCoords((vtkDataArray)triangleStripTCoords); aTriangleStripMapper = new vtkDataSetMapper(); aTriangleStripMapper.SetInput((vtkDataSet)aTriangleStripGrid); aTriangleStripActor = new vtkActor(); aTriangleStripActor.SetMapper((vtkMapper)aTriangleStripMapper); aTriangleStripActor.AddPosition((double)8,(double)0,(double)2); aTriangleStripActor.GetProperty().BackfaceCullingOn(); // Line[] linePoints = new vtkPoints(); linePoints.SetNumberOfPoints((int)2); linePoints.InsertPoint((int)0,(double)0,(double)0,(double)0); linePoints.InsertPoint((int)1,(double)1,(double)1,(double)0); aLine = new vtkLine(); aLine.GetPointIds().SetId((int)0,(int)0); aLine.GetPointIds().SetId((int)1,(int)1); aLineGrid = new vtkUnstructuredGrid(); aLineGrid.Allocate((int)1,(int)1); aLineGrid.InsertNextCell((int)aLine.GetCellType(),(vtkIdList)aLine.GetPointIds()); aLineGrid.SetPoints((vtkPoints)linePoints); aLineMapper = new vtkDataSetMapper(); aLineMapper.SetInput((vtkDataSet)aLineGrid); aLineActor = new vtkActor(); aLineActor.SetMapper((vtkMapper)aLineMapper); aLineActor.AddPosition((double)0,(double)0,(double)4); aLineActor.GetProperty().BackfaceCullingOn(); // Polyline[] polyLinePoints = new vtkPoints(); polyLinePoints.SetNumberOfPoints((int)3); polyLinePoints.InsertPoint((int)0,(double)0,(double)0,(double)0); polyLinePoints.InsertPoint((int)1,(double)1,(double)1,(double)0); polyLinePoints.InsertPoint((int)2,(double)1,(double)0,(double)0); aPolyLine = new vtkPolyLine(); aPolyLine.GetPointIds().SetNumberOfIds((int)3); aPolyLine.GetPointIds().SetId((int)0,(int)0); aPolyLine.GetPointIds().SetId((int)1,(int)1); aPolyLine.GetPointIds().SetId((int)2,(int)2); aPolyLineGrid = new vtkUnstructuredGrid(); aPolyLineGrid.Allocate((int)1,(int)1); aPolyLineGrid.InsertNextCell((int)aPolyLine.GetCellType(),(vtkIdList)aPolyLine.GetPointIds()); aPolyLineGrid.SetPoints((vtkPoints)polyLinePoints); aPolyLineMapper = new vtkDataSetMapper(); aPolyLineMapper.SetInput((vtkDataSet)aPolyLineGrid); aPolyLineActor = new vtkActor(); aPolyLineActor.SetMapper((vtkMapper)aPolyLineMapper); aPolyLineActor.AddPosition((double)2,(double)0,(double)4); aPolyLineActor.GetProperty().BackfaceCullingOn(); // Vertex[] vertexPoints = new vtkPoints(); vertexPoints.SetNumberOfPoints((int)1); vertexPoints.InsertPoint((int)0,(double)0,(double)0,(double)0); aVertex = new vtkVertex(); aVertex.GetPointIds().SetId((int)0,(int)0); aVertexGrid = new vtkUnstructuredGrid(); aVertexGrid.Allocate((int)1,(int)1); aVertexGrid.InsertNextCell((int)aVertex.GetCellType(),(vtkIdList)aVertex.GetPointIds()); aVertexGrid.SetPoints((vtkPoints)vertexPoints); aVertexMapper = new vtkDataSetMapper(); aVertexMapper.SetInput((vtkDataSet)aVertexGrid); aVertexActor = new vtkActor(); aVertexActor.SetMapper((vtkMapper)aVertexMapper); aVertexActor.AddPosition((double)0,(double)0,(double)6); aVertexActor.GetProperty().BackfaceCullingOn(); // Polyvertex[] polyVertexPoints = new vtkPoints(); polyVertexPoints.SetNumberOfPoints((int)3); polyVertexPoints.InsertPoint((int)0,(double)0,(double)0,(double)0); polyVertexPoints.InsertPoint((int)1,(double)1,(double)0,(double)0); polyVertexPoints.InsertPoint((int)2,(double)1,(double)1,(double)0); aPolyVertex = new vtkPolyVertex(); aPolyVertex.GetPointIds().SetNumberOfIds((int)3); aPolyVertex.GetPointIds().SetId((int)0,(int)0); aPolyVertex.GetPointIds().SetId((int)1,(int)1); aPolyVertex.GetPointIds().SetId((int)2,(int)2); aPolyVertexGrid = new vtkUnstructuredGrid(); aPolyVertexGrid.Allocate((int)1,(int)1); aPolyVertexGrid.InsertNextCell((int)aPolyVertex.GetCellType(),(vtkIdList)aPolyVertex.GetPointIds()); aPolyVertexGrid.SetPoints((vtkPoints)polyVertexPoints); aPolyVertexMapper = new vtkDataSetMapper(); aPolyVertexMapper.SetInput((vtkDataSet)aPolyVertexGrid); aPolyVertexActor = new vtkActor(); aPolyVertexActor.SetMapper((vtkMapper)aPolyVertexMapper); aPolyVertexActor.AddPosition((double)2,(double)0,(double)6); aPolyVertexActor.GetProperty().BackfaceCullingOn(); // Pentagonal prism[] pentaPoints = new vtkPoints(); pentaPoints.SetNumberOfPoints((int)10); pentaPoints.InsertPoint((int)0,(double)0.25,(double)0.0,(double)0.0); pentaPoints.InsertPoint((int)1,(double)0.75,(double)0.0,(double)0.0); pentaPoints.InsertPoint((int)2,(double)1.0,(double)0.5,(double)0.0); pentaPoints.InsertPoint((int)3,(double)0.5,(double)1.0,(double)0.0); pentaPoints.InsertPoint((int)4,(double)0.0,(double)0.5,(double)0.0); pentaPoints.InsertPoint((int)5,(double)0.25,(double)0.0,(double)1.0); pentaPoints.InsertPoint((int)6,(double)0.75,(double)0.0,(double)1.0); pentaPoints.InsertPoint((int)7,(double)1.0,(double)0.5,(double)1.0); pentaPoints.InsertPoint((int)8,(double)0.5,(double)1.0,(double)1.0); pentaPoints.InsertPoint((int)9,(double)0.0,(double)0.5,(double)1.0); aPenta = new vtkPentagonalPrism(); aPenta.GetPointIds().SetId((int)0,(int)0); aPenta.GetPointIds().SetId((int)1,(int)1); aPenta.GetPointIds().SetId((int)2,(int)2); aPenta.GetPointIds().SetId((int)3,(int)3); aPenta.GetPointIds().SetId((int)4,(int)4); aPenta.GetPointIds().SetId((int)5,(int)5); aPenta.GetPointIds().SetId((int)6,(int)6); aPenta.GetPointIds().SetId((int)7,(int)7); aPenta.GetPointIds().SetId((int)8,(int)8); aPenta.GetPointIds().SetId((int)9,(int)9); aPentaGrid = new vtkUnstructuredGrid(); aPentaGrid.Allocate((int)1,(int)1); aPentaGrid.InsertNextCell((int)aPenta.GetCellType(),(vtkIdList)aPenta.GetPointIds()); aPentaGrid.SetPoints((vtkPoints)pentaPoints); aPentaMapper = new vtkDataSetMapper(); aPentaMapper.SetInput((vtkDataSet)aPentaGrid); aPentaActor = new vtkActor(); aPentaActor.SetMapper((vtkMapper)aPentaMapper); aPentaActor.AddPosition((double)10,(double)0,(double)0); aPentaActor.GetProperty().BackfaceCullingOn(); // Hexagonal prism[] hexaPoints = new vtkPoints(); hexaPoints.SetNumberOfPoints((int)12); hexaPoints.InsertPoint((int)0,(double)0.0,(double)0.0,(double)0.0); hexaPoints.InsertPoint((int)1,(double)0.5,(double)0.0,(double)0.0); hexaPoints.InsertPoint((int)2,(double)1.0,(double)0.5,(double)0.0); hexaPoints.InsertPoint((int)3,(double)1.0,(double)1.0,(double)0.0); hexaPoints.InsertPoint((int)4,(double)0.5,(double)1.0,(double)0.0); hexaPoints.InsertPoint((int)5,(double)0.0,(double)0.5,(double)0.0); hexaPoints.InsertPoint((int)6,(double)0.0,(double)0.0,(double)1.0); hexaPoints.InsertPoint((int)7,(double)0.5,(double)0.0,(double)1.0); hexaPoints.InsertPoint((int)8,(double)1.0,(double)0.5,(double)1.0); hexaPoints.InsertPoint((int)9,(double)1.0,(double)1.0,(double)1.0); hexaPoints.InsertPoint((int)10,(double)0.5,(double)1.0,(double)1.0); hexaPoints.InsertPoint((int)11,(double)0.0,(double)0.5,(double)1.0); aHexa = new vtkHexagonalPrism(); aHexa.GetPointIds().SetId((int)0,(int)0); aHexa.GetPointIds().SetId((int)1,(int)1); aHexa.GetPointIds().SetId((int)2,(int)2); aHexa.GetPointIds().SetId((int)3,(int)3); aHexa.GetPointIds().SetId((int)4,(int)4); aHexa.GetPointIds().SetId((int)5,(int)5); aHexa.GetPointIds().SetId((int)6,(int)6); aHexa.GetPointIds().SetId((int)7,(int)7); aHexa.GetPointIds().SetId((int)8,(int)8); aHexa.GetPointIds().SetId((int)9,(int)9); aHexa.GetPointIds().SetId((int)10,(int)10); aHexa.GetPointIds().SetId((int)11,(int)11); aHexaGrid = new vtkUnstructuredGrid(); aHexaGrid.Allocate((int)1,(int)1); aHexaGrid.InsertNextCell((int)aHexa.GetCellType(),(vtkIdList)aHexa.GetPointIds()); aHexaGrid.SetPoints((vtkPoints)hexaPoints); aHexaMapper = new vtkDataSetMapper(); aHexaMapper.SetInput((vtkDataSet)aHexaGrid); aHexaActor = new vtkActor(); aHexaActor.SetMapper((vtkMapper)aHexaMapper); aHexaActor.AddPosition((double)12,(double)0,(double)0); aHexaActor.GetProperty().BackfaceCullingOn(); ren1.SetBackground((double)1,(double)1,(double)1); ren1.AddActor((vtkProp)aVoxelActor); aVoxelActor.GetProperty().SetDiffuseColor((double)1,(double)0,(double)0); ren1.AddActor((vtkProp)aHexahedronActor); aHexahedronActor.GetProperty().SetDiffuseColor((double)1,(double)1,(double)0); ren1.AddActor((vtkProp)aTetraActor); aTetraActor.GetProperty().SetDiffuseColor((double)0,(double)1,(double)0); ren1.AddActor((vtkProp)aWedgeActor); aWedgeActor.GetProperty().SetDiffuseColor((double)0,(double)1,(double)1); ren1.AddActor((vtkProp)aPyramidActor); aPyramidActor.GetProperty().SetDiffuseColor((double)1,(double)0,(double)1); ren1.AddActor((vtkProp)aPixelActor); aPixelActor.GetProperty().SetDiffuseColor((double)0,(double)1,(double)1); ren1.AddActor((vtkProp)aQuadActor); aQuadActor.GetProperty().SetDiffuseColor((double)1,(double)0,(double)1); ren1.AddActor((vtkProp)aTriangleActor); aTriangleActor.GetProperty().SetDiffuseColor((double).3,(double)1,(double).5); ren1.AddActor((vtkProp)aPolygonActor); aPolygonActor.GetProperty().SetDiffuseColor((double)1,(double).4,(double).5); ren1.AddActor((vtkProp)aTriangleStripActor); aTriangleStripActor.GetProperty().SetDiffuseColor((double).3,(double).7,(double)1); ren1.AddActor((vtkProp)aLineActor); aLineActor.GetProperty().SetDiffuseColor((double).2,(double)1,(double)1); ren1.AddActor((vtkProp)aPolyLineActor); aPolyLineActor.GetProperty().SetDiffuseColor((double)1,(double)1,(double)1); ren1.AddActor((vtkProp)aVertexActor); aVertexActor.GetProperty().SetDiffuseColor((double)1,(double)1,(double)1); ren1.AddActor((vtkProp)aPolyVertexActor); aPolyVertexActor.GetProperty().SetDiffuseColor((double)1,(double)1,(double)1); ren1.AddActor((vtkProp)aPentaActor); aPentaActor.GetProperty().SetDiffuseColor((double)1,(double)1,(double)0); ren1.AddActor((vtkProp)aHexaActor); aHexaActor.GetProperty().SetDiffuseColor((double)1,(double)1,(double)0); //[] // get the cell center of each type and put a glyph there[] //[] ball = new vtkSphereSource(); ball.SetRadius((double).2); bool tryWorked = false; aVoxelScalars = new vtkFloatArray(); N = aVoxelGrid.GetNumberOfPoints(); aVoxelScalar = new vtkFloatArray(); aVoxelScalar.SetNumberOfTuples((int)N); aVoxelScalar.SetNumberOfComponents(1); i = 0; while((i) < N) { aVoxelScalar.SetValue(i,0); i = i + 1; } aVoxelScalar.SetValue(0,4); aVoxelGrid.GetPointData().SetScalars(aVoxelScalar); aHexahedronScalars = new vtkFloatArray(); N = aHexahedronGrid.GetNumberOfPoints(); aHexahedronScalar = new vtkFloatArray(); aHexahedronScalar.SetNumberOfTuples((int)N); aHexahedronScalar.SetNumberOfComponents(1); i = 0; while((i) < N) { aHexahedronScalar.SetValue(i,0); i = i + 1; } aHexahedronScalar.SetValue(0,4); aHexahedronGrid.GetPointData().SetScalars(aHexahedronScalar); aWedgeScalars = new vtkFloatArray(); N = aWedgeGrid.GetNumberOfPoints(); aWedgeScalar = new vtkFloatArray(); aWedgeScalar.SetNumberOfTuples((int)N); aWedgeScalar.SetNumberOfComponents(1); i = 0; while((i) < N) { aWedgeScalar.SetValue(i,0); i = i + 1; } aWedgeScalar.SetValue(0,4); aWedgeGrid.GetPointData().SetScalars(aWedgeScalar); aPyramidScalars = new vtkFloatArray(); N = aPyramidGrid.GetNumberOfPoints(); aPyramidScalar = new vtkFloatArray(); aPyramidScalar.SetNumberOfTuples((int)N); aPyramidScalar.SetNumberOfComponents(1); i = 0; while((i) < N) { aPyramidScalar.SetValue(i,0); i = i + 1; } aPyramidScalar.SetValue(0,4); aPyramidGrid.GetPointData().SetScalars(aPyramidScalar); aTetraScalars = new vtkFloatArray(); N = aTetraGrid.GetNumberOfPoints(); aTetraScalar = new vtkFloatArray(); aTetraScalar.SetNumberOfTuples((int)N); aTetraScalar.SetNumberOfComponents(1); i = 0; while((i) < N) { aTetraScalar.SetValue(i,0); i = i + 1; } aTetraScalar.SetValue(0,4); aTetraGrid.GetPointData().SetScalars(aTetraScalar); aQuadScalars = new vtkFloatArray(); N = aQuadGrid.GetNumberOfPoints(); aQuadScalar = new vtkFloatArray(); aQuadScalar.SetNumberOfTuples((int)N); aQuadScalar.SetNumberOfComponents(1); i = 0; while((i) < N) { aQuadScalar.SetValue(i,0); i = i + 1; } aQuadScalar.SetValue(0,4); aQuadGrid.GetPointData().SetScalars(aQuadScalar); aTriangleScalars = new vtkFloatArray(); N = aTriangleGrid.GetNumberOfPoints(); aTriangleScalar = new vtkFloatArray(); aTriangleScalar.SetNumberOfTuples((int)N); aTriangleScalar.SetNumberOfComponents(1); i = 0; while((i) < N) { aTriangleScalar.SetValue(i,0); i = i + 1; } aTriangleScalar.SetValue(0,4); aTriangleGrid.GetPointData().SetScalars(aTriangleScalar); aTriangleStripScalars = new vtkFloatArray(); N = aTriangleStripGrid.GetNumberOfPoints(); aTriangleStripScalar = new vtkFloatArray(); aTriangleStripScalar.SetNumberOfTuples((int)N); aTriangleStripScalar.SetNumberOfComponents(1); i = 0; while((i) < N) { aTriangleStripScalar.SetValue(i,0); i = i + 1; } aTriangleStripScalar.SetValue(0,4); aTriangleStripGrid.GetPointData().SetScalars(aTriangleStripScalar); aLineScalars = new vtkFloatArray(); N = aLineGrid.GetNumberOfPoints(); aLineScalar = new vtkFloatArray(); aLineScalar.SetNumberOfTuples((int)N); aLineScalar.SetNumberOfComponents(1); i = 0; while((i) < N) { aLineScalar.SetValue(i,0); i = i + 1; } aLineScalar.SetValue(0,4); aLineGrid.GetPointData().SetScalars(aLineScalar); aPolyLineScalars = new vtkFloatArray(); N = aPolyLineGrid.GetNumberOfPoints(); aPolyLineScalar = new vtkFloatArray(); aPolyLineScalar.SetNumberOfTuples((int)N); aPolyLineScalar.SetNumberOfComponents(1); i = 0; while((i) < N) { aPolyLineScalar.SetValue(i,0); i = i + 1; } aPolyLineScalar.SetValue(0,4); aPolyLineGrid.GetPointData().SetScalars(aPolyLineScalar); aVertexScalars = new vtkFloatArray(); N = aVertexGrid.GetNumberOfPoints(); aVertexScalar = new vtkFloatArray(); aVertexScalar.SetNumberOfTuples((int)N); aVertexScalar.SetNumberOfComponents(1); i = 0; while((i) < N) { aVertexScalar.SetValue(i,0); i = i + 1; } aVertexScalar.SetValue(0,4); aVertexGrid.GetPointData().SetScalars(aVertexScalar); aPolyVertexScalars = new vtkFloatArray(); N = aPolyVertexGrid.GetNumberOfPoints(); aPolyVertexScalar = new vtkFloatArray(); aPolyVertexScalar.SetNumberOfTuples((int)N); aPolyVertexScalar.SetNumberOfComponents(1); i = 0; while((i) < N) { aPolyVertexScalar.SetValue(i,0); i = i + 1; } aPolyVertexScalar.SetValue(0,4); aPolyVertexGrid.GetPointData().SetScalars(aPolyVertexScalar); aPixelScalars = new vtkFloatArray(); N = aPixelGrid.GetNumberOfPoints(); aPixelScalar = new vtkFloatArray(); aPixelScalar.SetNumberOfTuples((int)N); aPixelScalar.SetNumberOfComponents(1); i = 0; while((i) < N) { aPixelScalar.SetValue(i,0); i = i + 1; } aPixelScalar.SetValue(0,4); aPixelGrid.GetPointData().SetScalars(aPixelScalar); aPolygonScalars = new vtkFloatArray(); N = aPolygonGrid.GetNumberOfPoints(); aPolygonScalar = new vtkFloatArray(); aPolygonScalar.SetNumberOfTuples((int)N); aPolygonScalar.SetNumberOfComponents(1); i = 0; while((i) < N) { aPolygonScalar.SetValue(i,0); i = i + 1; } aPolygonScalar.SetValue(0,4); aPolygonGrid.GetPointData().SetScalars(aPolygonScalar); aPentaScalars = new vtkFloatArray(); N = aPentaGrid.GetNumberOfPoints(); aPentaScalar = new vtkFloatArray(); aPentaScalar.SetNumberOfTuples((int)N); aPentaScalar.SetNumberOfComponents(1); i = 0; while((i) < N) { aPentaScalar.SetValue(i,0); i = i + 1; } aPentaScalar.SetValue(0,4); aPentaGrid.GetPointData().SetScalars(aPentaScalar); aHexaScalars = new vtkFloatArray(); N = aHexaGrid.GetNumberOfPoints(); aHexaScalar = new vtkFloatArray(); aHexaScalar.SetNumberOfTuples((int)N); aHexaScalar.SetNumberOfComponents(1); i = 0; while((i) < N) { aHexaScalar.SetValue(i,0); i = i + 1; } aHexaScalar.SetValue(0,4); aHexaGrid.GetPointData().SetScalars(aHexaScalar); // write to the temp directory if possible, otherwise use .[] dir = "."; dir = TclToCsScriptTestDriver.GetTempDirectory(); aVoxelderivs = new vtkCellDerivatives(); aVoxelderivs.SetInput(aVoxelGrid); aVoxelderivs.SetVectorModeToComputeGradient(); FileName = dir; FileName += "/aVoxel"; FileName += ".vtk"; // make sure the directory is writeable first[] tryWorked = false; try { channel = new StreamWriter("" + (dir.ToString()) + "/test.tmp"); tryWorked = true; } catch(Exception) { tryWorked = false; } if(tryWorked) { channel.Close(); File.Delete("" + (dir.ToString()) + "/test.tmp"); aVoxelWriter = new vtkUnstructuredGridWriter(); aVoxelWriter.SetInputConnection(aVoxelderivs.GetOutputPort()); aVoxelWriter.SetFileName(FileName); aVoxelWriter.Write(); // delete the file[] File.Delete("FileName"); } aVoxelCenters = new vtkCellCenters(); aVoxelCenters.SetInputConnection(aVoxelderivs.GetOutputPort()); aVoxelCenters.VertexCellsOn(); aVoxelhog = new vtkHedgeHog(); aVoxelhog.SetInputConnection(aVoxelCenters.GetOutputPort()); aVoxelmapHog = vtkPolyDataMapper.New(); aVoxelmapHog.SetInputConnection(aVoxelhog.GetOutputPort()); aVoxelmapHog.SetScalarModeToUseCellData(); aVoxelmapHog.ScalarVisibilityOff(); aVoxelhogActor = new vtkActor(); aVoxelhogActor.SetMapper(aVoxelmapHog); aVoxelhogActor.GetProperty().SetColor(0,1,0); aVoxelGlyph3D = new vtkGlyph3D(); aVoxelGlyph3D.SetInputConnection(aVoxelCenters.GetOutputPort()); aVoxelGlyph3D.SetSource(ball.GetOutput()); aVoxelCentersMapper = vtkPolyDataMapper.New(); aVoxelCentersMapper.SetInputConnection(aVoxelGlyph3D.GetOutputPort()); aVoxelCentersActor = new vtkActor(); aVoxelCentersActor.SetMapper(aVoxelCentersMapper); aVoxelhogActor.SetPosition(aVoxelActor.GetPosition()[0],aVoxelActor.GetPosition()[1],aVoxelActor.GetPosition()[2]); ren1.AddActor((vtkProp)aVoxelhogActor); aVoxelhogActor.GetProperty().SetRepresentationToWireframe(); aHexahedronderivs = new vtkCellDerivatives(); aHexahedronderivs.SetInput(aHexahedronGrid); aHexahedronderivs.SetVectorModeToComputeGradient(); FileName = dir; FileName += "/aHexahedron"; FileName += ".vtk"; // make sure the directory is writeable first[] tryWorked = false; try { channel = new StreamWriter("" + (dir.ToString()) + "/test.tmp"); tryWorked = true; } catch(Exception) { tryWorked = false; } if(tryWorked) { channel.Close(); File.Delete("" + (dir.ToString()) + "/test.tmp"); aHexahedronWriter = new vtkUnstructuredGridWriter(); aHexahedronWriter.SetInputConnection(aHexahedronderivs.GetOutputPort()); aHexahedronWriter.SetFileName(FileName); aHexahedronWriter.Write(); // delete the file[] File.Delete("FileName"); } aHexahedronCenters = new vtkCellCenters(); aHexahedronCenters.SetInputConnection(aHexahedronderivs.GetOutputPort()); aHexahedronCenters.VertexCellsOn(); aHexahedronhog = new vtkHedgeHog(); aHexahedronhog.SetInputConnection(aHexahedronCenters.GetOutputPort()); aHexahedronmapHog = vtkPolyDataMapper.New(); aHexahedronmapHog.SetInputConnection(aHexahedronhog.GetOutputPort()); aHexahedronmapHog.SetScalarModeToUseCellData(); aHexahedronmapHog.ScalarVisibilityOff(); aHexahedronhogActor = new vtkActor(); aHexahedronhogActor.SetMapper(aHexahedronmapHog); aHexahedronhogActor.GetProperty().SetColor(0,1,0); aHexahedronGlyph3D = new vtkGlyph3D(); aHexahedronGlyph3D.SetInputConnection(aHexahedronCenters.GetOutputPort()); aHexahedronGlyph3D.SetSource(ball.GetOutput()); aHexahedronCentersMapper = vtkPolyDataMapper.New(); aHexahedronCentersMapper.SetInputConnection(aHexahedronGlyph3D.GetOutputPort()); aHexahedronCentersActor = new vtkActor(); aHexahedronCentersActor.SetMapper(aHexahedronCentersMapper); aHexahedronhogActor.SetPosition(aHexahedronActor.GetPosition()[0],aHexahedronActor.GetPosition()[1],aHexahedronActor.GetPosition()[2]); ren1.AddActor((vtkProp)aHexahedronhogActor); aHexahedronhogActor.GetProperty().SetRepresentationToWireframe(); aWedgederivs = new vtkCellDerivatives(); aWedgederivs.SetInput(aWedgeGrid); aWedgederivs.SetVectorModeToComputeGradient(); FileName = dir; FileName += "/aWedge"; FileName += ".vtk"; // make sure the directory is writeable first[] tryWorked = false; try { channel = new StreamWriter("" + (dir.ToString()) + "/test.tmp"); tryWorked = true; } catch(Exception) { tryWorked = false; } if(tryWorked) { channel.Close(); File.Delete("" + (dir.ToString()) + "/test.tmp"); aWedgeWriter = new vtkUnstructuredGridWriter(); aWedgeWriter.SetInputConnection(aWedgederivs.GetOutputPort()); aWedgeWriter.SetFileName(FileName); aWedgeWriter.Write(); // delete the file[] File.Delete("FileName"); } aWedgeCenters = new vtkCellCenters(); aWedgeCenters.SetInputConnection(aWedgederivs.GetOutputPort()); aWedgeCenters.VertexCellsOn(); aWedgehog = new vtkHedgeHog(); aWedgehog.SetInputConnection(aWedgeCenters.GetOutputPort()); aWedgemapHog = vtkPolyDataMapper.New(); aWedgemapHog.SetInputConnection(aWedgehog.GetOutputPort()); aWedgemapHog.SetScalarModeToUseCellData(); aWedgemapHog.ScalarVisibilityOff(); aWedgehogActor = new vtkActor(); aWedgehogActor.SetMapper(aWedgemapHog); aWedgehogActor.GetProperty().SetColor(0,1,0); aWedgeGlyph3D = new vtkGlyph3D(); aWedgeGlyph3D.SetInputConnection(aWedgeCenters.GetOutputPort()); aWedgeGlyph3D.SetSource(ball.GetOutput()); aWedgeCentersMapper = vtkPolyDataMapper.New(); aWedgeCentersMapper.SetInputConnection(aWedgeGlyph3D.GetOutputPort()); aWedgeCentersActor = new vtkActor(); aWedgeCentersActor.SetMapper(aWedgeCentersMapper); aWedgehogActor.SetPosition(aWedgeActor.GetPosition()[0],aWedgeActor.GetPosition()[1],aWedgeActor.GetPosition()[2]); ren1.AddActor((vtkProp)aWedgehogActor); aWedgehogActor.GetProperty().SetRepresentationToWireframe(); aPyramidderivs = new vtkCellDerivatives(); aPyramidderivs.SetInput(aPyramidGrid); aPyramidderivs.SetVectorModeToComputeGradient(); FileName = dir; FileName += "/aPyramid"; FileName += ".vtk"; // make sure the directory is writeable first[] tryWorked = false; try { channel = new StreamWriter("" + (dir.ToString()) + "/test.tmp"); tryWorked = true; } catch(Exception) { tryWorked = false; } if(tryWorked) { channel.Close(); File.Delete("" + (dir.ToString()) + "/test.tmp"); aPyramidWriter = new vtkUnstructuredGridWriter(); aPyramidWriter.SetInputConnection(aPyramidderivs.GetOutputPort()); aPyramidWriter.SetFileName(FileName); aPyramidWriter.Write(); // delete the file[] File.Delete("FileName"); } aPyramidCenters = new vtkCellCenters(); aPyramidCenters.SetInputConnection(aPyramidderivs.GetOutputPort()); aPyramidCenters.VertexCellsOn(); aPyramidhog = new vtkHedgeHog(); aPyramidhog.SetInputConnection(aPyramidCenters.GetOutputPort()); aPyramidmapHog = vtkPolyDataMapper.New(); aPyramidmapHog.SetInputConnection(aPyramidhog.GetOutputPort()); aPyramidmapHog.SetScalarModeToUseCellData(); aPyramidmapHog.ScalarVisibilityOff(); aPyramidhogActor = new vtkActor(); aPyramidhogActor.SetMapper(aPyramidmapHog); aPyramidhogActor.GetProperty().SetColor(0,1,0); aPyramidGlyph3D = new vtkGlyph3D(); aPyramidGlyph3D.SetInputConnection(aPyramidCenters.GetOutputPort()); aPyramidGlyph3D.SetSource(ball.GetOutput()); aPyramidCentersMapper = vtkPolyDataMapper.New(); aPyramidCentersMapper.SetInputConnection(aPyramidGlyph3D.GetOutputPort()); aPyramidCentersActor = new vtkActor(); aPyramidCentersActor.SetMapper(aPyramidCentersMapper); aPyramidhogActor.SetPosition(aPyramidActor.GetPosition()[0],aPyramidActor.GetPosition()[1],aPyramidActor.GetPosition()[2]); ren1.AddActor((vtkProp)aPyramidhogActor); aPyramidhogActor.GetProperty().SetRepresentationToWireframe(); aTetraderivs = new vtkCellDerivatives(); aTetraderivs.SetInput(aTetraGrid); aTetraderivs.SetVectorModeToComputeGradient(); FileName = dir; FileName += "/aTetra"; FileName += ".vtk"; // make sure the directory is writeable first[] tryWorked = false; try { channel = new StreamWriter("" + (dir.ToString()) + "/test.tmp"); tryWorked = true; } catch(Exception) { tryWorked = false; } if(tryWorked) { channel.Close(); File.Delete("" + (dir.ToString()) + "/test.tmp"); aTetraWriter = new vtkUnstructuredGridWriter(); aTetraWriter.SetInputConnection(aTetraderivs.GetOutputPort()); aTetraWriter.SetFileName(FileName); aTetraWriter.Write(); // delete the file[] File.Delete("FileName"); } aTetraCenters = new vtkCellCenters(); aTetraCenters.SetInputConnection(aTetraderivs.GetOutputPort()); aTetraCenters.VertexCellsOn(); aTetrahog = new vtkHedgeHog(); aTetrahog.SetInputConnection(aTetraCenters.GetOutputPort()); aTetramapHog = vtkPolyDataMapper.New(); aTetramapHog.SetInputConnection(aTetrahog.GetOutputPort()); aTetramapHog.SetScalarModeToUseCellData(); aTetramapHog.ScalarVisibilityOff(); aTetrahogActor = new vtkActor(); aTetrahogActor.SetMapper(aTetramapHog); aTetrahogActor.GetProperty().SetColor(0,1,0); aTetraGlyph3D = new vtkGlyph3D(); aTetraGlyph3D.SetInputConnection(aTetraCenters.GetOutputPort()); aTetraGlyph3D.SetSource(ball.GetOutput()); aTetraCentersMapper = vtkPolyDataMapper.New(); aTetraCentersMapper.SetInputConnection(aTetraGlyph3D.GetOutputPort()); aTetraCentersActor = new vtkActor(); aTetraCentersActor.SetMapper(aTetraCentersMapper); aTetrahogActor.SetPosition(aTetraActor.GetPosition()[0],aTetraActor.GetPosition()[1],aTetraActor.GetPosition()[2]); ren1.AddActor((vtkProp)aTetrahogActor); aTetrahogActor.GetProperty().SetRepresentationToWireframe(); aQuadderivs = new vtkCellDerivatives(); aQuadderivs.SetInput(aQuadGrid); aQuadderivs.SetVectorModeToComputeGradient(); FileName = dir; FileName += "/aQuad"; FileName += ".vtk"; // make sure the directory is writeable first[] tryWorked = false; try { channel = new StreamWriter("" + (dir.ToString()) + "/test.tmp"); tryWorked = true; } catch(Exception) { tryWorked = false; } if(tryWorked) { channel.Close(); File.Delete("" + (dir.ToString()) + "/test.tmp"); aQuadWriter = new vtkUnstructuredGridWriter(); aQuadWriter.SetInputConnection(aQuadderivs.GetOutputPort()); aQuadWriter.SetFileName(FileName); aQuadWriter.Write(); // delete the file[] File.Delete("FileName"); } aQuadCenters = new vtkCellCenters(); aQuadCenters.SetInputConnection(aQuadderivs.GetOutputPort()); aQuadCenters.VertexCellsOn(); aQuadhog = new vtkHedgeHog(); aQuadhog.SetInputConnection(aQuadCenters.GetOutputPort()); aQuadmapHog = vtkPolyDataMapper.New(); aQuadmapHog.SetInputConnection(aQuadhog.GetOutputPort()); aQuadmapHog.SetScalarModeToUseCellData(); aQuadmapHog.ScalarVisibilityOff(); aQuadhogActor = new vtkActor(); aQuadhogActor.SetMapper(aQuadmapHog); aQuadhogActor.GetProperty().SetColor(0,1,0); aQuadGlyph3D = new vtkGlyph3D(); aQuadGlyph3D.SetInputConnection(aQuadCenters.GetOutputPort()); aQuadGlyph3D.SetSource(ball.GetOutput()); aQuadCentersMapper = vtkPolyDataMapper.New(); aQuadCentersMapper.SetInputConnection(aQuadGlyph3D.GetOutputPort()); aQuadCentersActor = new vtkActor(); aQuadCentersActor.SetMapper(aQuadCentersMapper); aQuadhogActor.SetPosition(aQuadActor.GetPosition()[0],aQuadActor.GetPosition()[1],aQuadActor.GetPosition()[2]); ren1.AddActor((vtkProp)aQuadhogActor); aQuadhogActor.GetProperty().SetRepresentationToWireframe(); aTrianglederivs = new vtkCellDerivatives(); aTrianglederivs.SetInput(aTriangleGrid); aTrianglederivs.SetVectorModeToComputeGradient(); FileName = dir; FileName += "/aTriangle"; FileName += ".vtk"; // make sure the directory is writeable first[] tryWorked = false; try { channel = new StreamWriter("" + (dir.ToString()) + "/test.tmp"); tryWorked = true; } catch(Exception) { tryWorked = false; } if(tryWorked) { channel.Close(); File.Delete("" + (dir.ToString()) + "/test.tmp"); aTriangleWriter = new vtkUnstructuredGridWriter(); aTriangleWriter.SetInputConnection(aTrianglederivs.GetOutputPort()); aTriangleWriter.SetFileName(FileName); aTriangleWriter.Write(); // delete the file[] File.Delete("FileName"); } aTriangleCenters = new vtkCellCenters(); aTriangleCenters.SetInputConnection(aTrianglederivs.GetOutputPort()); aTriangleCenters.VertexCellsOn(); aTrianglehog = new vtkHedgeHog(); aTrianglehog.SetInputConnection(aTriangleCenters.GetOutputPort()); aTrianglemapHog = vtkPolyDataMapper.New(); aTrianglemapHog.SetInputConnection(aTrianglehog.GetOutputPort()); aTrianglemapHog.SetScalarModeToUseCellData(); aTrianglemapHog.ScalarVisibilityOff(); aTrianglehogActor = new vtkActor(); aTrianglehogActor.SetMapper(aTrianglemapHog); aTrianglehogActor.GetProperty().SetColor(0,1,0); aTriangleGlyph3D = new vtkGlyph3D(); aTriangleGlyph3D.SetInputConnection(aTriangleCenters.GetOutputPort()); aTriangleGlyph3D.SetSource(ball.GetOutput()); aTriangleCentersMapper = vtkPolyDataMapper.New(); aTriangleCentersMapper.SetInputConnection(aTriangleGlyph3D.GetOutputPort()); aTriangleCentersActor = new vtkActor(); aTriangleCentersActor.SetMapper(aTriangleCentersMapper); aTrianglehogActor.SetPosition(aTriangleActor.GetPosition()[0],aTriangleActor.GetPosition()[1],aTriangleActor.GetPosition()[2]); ren1.AddActor((vtkProp)aTrianglehogActor); aTrianglehogActor.GetProperty().SetRepresentationToWireframe(); aTriangleStripderivs = new vtkCellDerivatives(); aTriangleStripderivs.SetInput(aTriangleStripGrid); aTriangleStripderivs.SetVectorModeToComputeGradient(); FileName = dir; FileName += "/aTriangleStrip"; FileName += ".vtk"; // make sure the directory is writeable first[] tryWorked = false; try { channel = new StreamWriter("" + (dir.ToString()) + "/test.tmp"); tryWorked = true; } catch(Exception) { tryWorked = false; } if(tryWorked) { channel.Close(); File.Delete("" + (dir.ToString()) + "/test.tmp"); aTriangleStripWriter = new vtkUnstructuredGridWriter(); aTriangleStripWriter.SetInputConnection(aTriangleStripderivs.GetOutputPort()); aTriangleStripWriter.SetFileName(FileName); aTriangleStripWriter.Write(); // delete the file[] File.Delete("FileName"); } aTriangleStripCenters = new vtkCellCenters(); aTriangleStripCenters.SetInputConnection(aTriangleStripderivs.GetOutputPort()); aTriangleStripCenters.VertexCellsOn(); aTriangleStriphog = new vtkHedgeHog(); aTriangleStriphog.SetInputConnection(aTriangleStripCenters.GetOutputPort()); aTriangleStripmapHog = vtkPolyDataMapper.New(); aTriangleStripmapHog.SetInputConnection(aTriangleStriphog.GetOutputPort()); aTriangleStripmapHog.SetScalarModeToUseCellData(); aTriangleStripmapHog.ScalarVisibilityOff(); aTriangleStriphogActor = new vtkActor(); aTriangleStriphogActor.SetMapper(aTriangleStripmapHog); aTriangleStriphogActor.GetProperty().SetColor(0,1,0); aTriangleStripGlyph3D = new vtkGlyph3D(); aTriangleStripGlyph3D.SetInputConnection(aTriangleStripCenters.GetOutputPort()); aTriangleStripGlyph3D.SetSource(ball.GetOutput()); aTriangleStripCentersMapper = vtkPolyDataMapper.New(); aTriangleStripCentersMapper.SetInputConnection(aTriangleStripGlyph3D.GetOutputPort()); aTriangleStripCentersActor = new vtkActor(); aTriangleStripCentersActor.SetMapper(aTriangleStripCentersMapper); aTriangleStriphogActor.SetPosition(aTriangleStripActor.GetPosition()[0],aTriangleStripActor.GetPosition()[1],aTriangleStripActor.GetPosition()[2]); ren1.AddActor((vtkProp)aTriangleStriphogActor); aTriangleStriphogActor.GetProperty().SetRepresentationToWireframe(); aLinederivs = new vtkCellDerivatives(); aLinederivs.SetInput(aLineGrid); aLinederivs.SetVectorModeToComputeGradient(); FileName = dir; FileName += "/aLine"; FileName += ".vtk"; // make sure the directory is writeable first[] tryWorked = false; try { channel = new StreamWriter("" + (dir.ToString()) + "/test.tmp"); tryWorked = true; } catch(Exception) { tryWorked = false; } if(tryWorked) { channel.Close(); File.Delete("" + (dir.ToString()) + "/test.tmp"); aLineWriter = new vtkUnstructuredGridWriter(); aLineWriter.SetInputConnection(aLinederivs.GetOutputPort()); aLineWriter.SetFileName(FileName); aLineWriter.Write(); // delete the file[] File.Delete("FileName"); } aLineCenters = new vtkCellCenters(); aLineCenters.SetInputConnection(aLinederivs.GetOutputPort()); aLineCenters.VertexCellsOn(); aLinehog = new vtkHedgeHog(); aLinehog.SetInputConnection(aLineCenters.GetOutputPort()); aLinemapHog = vtkPolyDataMapper.New(); aLinemapHog.SetInputConnection(aLinehog.GetOutputPort()); aLinemapHog.SetScalarModeToUseCellData(); aLinemapHog.ScalarVisibilityOff(); aLinehogActor = new vtkActor(); aLinehogActor.SetMapper(aLinemapHog); aLinehogActor.GetProperty().SetColor(0,1,0); aLineGlyph3D = new vtkGlyph3D(); aLineGlyph3D.SetInputConnection(aLineCenters.GetOutputPort()); aLineGlyph3D.SetSource(ball.GetOutput()); aLineCentersMapper = vtkPolyDataMapper.New(); aLineCentersMapper.SetInputConnection(aLineGlyph3D.GetOutputPort()); aLineCentersActor = new vtkActor(); aLineCentersActor.SetMapper(aLineCentersMapper); aLinehogActor.SetPosition(aLineActor.GetPosition()[0],aLineActor.GetPosition()[1],aLineActor.GetPosition()[2]); ren1.AddActor((vtkProp)aLinehogActor); aLinehogActor.GetProperty().SetRepresentationToWireframe(); aPolyLinederivs = new vtkCellDerivatives(); aPolyLinederivs.SetInput(aPolyLineGrid); aPolyLinederivs.SetVectorModeToComputeGradient(); FileName = dir; FileName += "/aPolyLine"; FileName += ".vtk"; // make sure the directory is writeable first[] tryWorked = false; try { channel = new StreamWriter("" + (dir.ToString()) + "/test.tmp"); tryWorked = true; } catch(Exception) { tryWorked = false; } if(tryWorked) { channel.Close(); File.Delete("" + (dir.ToString()) + "/test.tmp"); aPolyLineWriter = new vtkUnstructuredGridWriter(); aPolyLineWriter.SetInputConnection(aPolyLinederivs.GetOutputPort()); aPolyLineWriter.SetFileName(FileName); aPolyLineWriter.Write(); // delete the file[] File.Delete("FileName"); } aPolyLineCenters = new vtkCellCenters(); aPolyLineCenters.SetInputConnection(aPolyLinederivs.GetOutputPort()); aPolyLineCenters.VertexCellsOn(); aPolyLinehog = new vtkHedgeHog(); aPolyLinehog.SetInputConnection(aPolyLineCenters.GetOutputPort()); aPolyLinemapHog = vtkPolyDataMapper.New(); aPolyLinemapHog.SetInputConnection(aPolyLinehog.GetOutputPort()); aPolyLinemapHog.SetScalarModeToUseCellData(); aPolyLinemapHog.ScalarVisibilityOff(); aPolyLinehogActor = new vtkActor(); aPolyLinehogActor.SetMapper(aPolyLinemapHog); aPolyLinehogActor.GetProperty().SetColor(0,1,0); aPolyLineGlyph3D = new vtkGlyph3D(); aPolyLineGlyph3D.SetInputConnection(aPolyLineCenters.GetOutputPort()); aPolyLineGlyph3D.SetSource(ball.GetOutput()); aPolyLineCentersMapper = vtkPolyDataMapper.New(); aPolyLineCentersMapper.SetInputConnection(aPolyLineGlyph3D.GetOutputPort()); aPolyLineCentersActor = new vtkActor(); aPolyLineCentersActor.SetMapper(aPolyLineCentersMapper); aPolyLinehogActor.SetPosition(aPolyLineActor.GetPosition()[0],aPolyLineActor.GetPosition()[1],aPolyLineActor.GetPosition()[2]); ren1.AddActor((vtkProp)aPolyLinehogActor); aPolyLinehogActor.GetProperty().SetRepresentationToWireframe(); aVertexderivs = new vtkCellDerivatives(); aVertexderivs.SetInput(aVertexGrid); aVertexderivs.SetVectorModeToComputeGradient(); FileName = dir; FileName += "/aVertex"; FileName += ".vtk"; // make sure the directory is writeable first[] tryWorked = false; try { channel = new StreamWriter("" + (dir.ToString()) + "/test.tmp"); tryWorked = true; } catch(Exception) { tryWorked = false; } if(tryWorked) { channel.Close(); File.Delete("" + (dir.ToString()) + "/test.tmp"); aVertexWriter = new vtkUnstructuredGridWriter(); aVertexWriter.SetInputConnection(aVertexderivs.GetOutputPort()); aVertexWriter.SetFileName(FileName); aVertexWriter.Write(); // delete the file[] File.Delete("FileName"); } aVertexCenters = new vtkCellCenters(); aVertexCenters.SetInputConnection(aVertexderivs.GetOutputPort()); aVertexCenters.VertexCellsOn(); aVertexhog = new vtkHedgeHog(); aVertexhog.SetInputConnection(aVertexCenters.GetOutputPort()); aVertexmapHog = vtkPolyDataMapper.New(); aVertexmapHog.SetInputConnection(aVertexhog.GetOutputPort()); aVertexmapHog.SetScalarModeToUseCellData(); aVertexmapHog.ScalarVisibilityOff(); aVertexhogActor = new vtkActor(); aVertexhogActor.SetMapper(aVertexmapHog); aVertexhogActor.GetProperty().SetColor(0,1,0); aVertexGlyph3D = new vtkGlyph3D(); aVertexGlyph3D.SetInputConnection(aVertexCenters.GetOutputPort()); aVertexGlyph3D.SetSource(ball.GetOutput()); aVertexCentersMapper = vtkPolyDataMapper.New(); aVertexCentersMapper.SetInputConnection(aVertexGlyph3D.GetOutputPort()); aVertexCentersActor = new vtkActor(); aVertexCentersActor.SetMapper(aVertexCentersMapper); aVertexhogActor.SetPosition(aVertexActor.GetPosition()[0],aVertexActor.GetPosition()[1],aVertexActor.GetPosition()[2]); ren1.AddActor((vtkProp)aVertexhogActor); aVertexhogActor.GetProperty().SetRepresentationToWireframe(); aPolyVertexderivs = new vtkCellDerivatives(); aPolyVertexderivs.SetInput(aPolyVertexGrid); aPolyVertexderivs.SetVectorModeToComputeGradient(); FileName = dir; FileName += "/aPolyVertex"; FileName += ".vtk"; // make sure the directory is writeable first[] tryWorked = false; try { channel = new StreamWriter("" + (dir.ToString()) + "/test.tmp"); tryWorked = true; } catch(Exception) { tryWorked = false; } if(tryWorked) { channel.Close(); File.Delete("" + (dir.ToString()) + "/test.tmp"); aPolyVertexWriter = new vtkUnstructuredGridWriter(); aPolyVertexWriter.SetInputConnection(aPolyVertexderivs.GetOutputPort()); aPolyVertexWriter.SetFileName(FileName); aPolyVertexWriter.Write(); // delete the file[] File.Delete("FileName"); } aPolyVertexCenters = new vtkCellCenters(); aPolyVertexCenters.SetInputConnection(aPolyVertexderivs.GetOutputPort()); aPolyVertexCenters.VertexCellsOn(); aPolyVertexhog = new vtkHedgeHog(); aPolyVertexhog.SetInputConnection(aPolyVertexCenters.GetOutputPort()); aPolyVertexmapHog = vtkPolyDataMapper.New(); aPolyVertexmapHog.SetInputConnection(aPolyVertexhog.GetOutputPort()); aPolyVertexmapHog.SetScalarModeToUseCellData(); aPolyVertexmapHog.ScalarVisibilityOff(); aPolyVertexhogActor = new vtkActor(); aPolyVertexhogActor.SetMapper(aPolyVertexmapHog); aPolyVertexhogActor.GetProperty().SetColor(0,1,0); aPolyVertexGlyph3D = new vtkGlyph3D(); aPolyVertexGlyph3D.SetInputConnection(aPolyVertexCenters.GetOutputPort()); aPolyVertexGlyph3D.SetSource(ball.GetOutput()); aPolyVertexCentersMapper = vtkPolyDataMapper.New(); aPolyVertexCentersMapper.SetInputConnection(aPolyVertexGlyph3D.GetOutputPort()); aPolyVertexCentersActor = new vtkActor(); aPolyVertexCentersActor.SetMapper(aPolyVertexCentersMapper); aPolyVertexhogActor.SetPosition(aPolyVertexActor.GetPosition()[0],aPolyVertexActor.GetPosition()[1],aPolyVertexActor.GetPosition()[2]); ren1.AddActor((vtkProp)aPolyVertexhogActor); aPolyVertexhogActor.GetProperty().SetRepresentationToWireframe(); aPixelderivs = new vtkCellDerivatives(); aPixelderivs.SetInput(aPixelGrid); aPixelderivs.SetVectorModeToComputeGradient(); FileName = dir; FileName += "/aPixel"; FileName += ".vtk"; // make sure the directory is writeable first[] tryWorked = false; try { channel = new StreamWriter("" + (dir.ToString()) + "/test.tmp"); tryWorked = true; } catch(Exception) { tryWorked = false; } if(tryWorked) { channel.Close(); File.Delete("" + (dir.ToString()) + "/test.tmp"); aPixelWriter = new vtkUnstructuredGridWriter(); aPixelWriter.SetInputConnection(aPixelderivs.GetOutputPort()); aPixelWriter.SetFileName(FileName); aPixelWriter.Write(); // delete the file[] File.Delete("FileName"); } aPixelCenters = new vtkCellCenters(); aPixelCenters.SetInputConnection(aPixelderivs.GetOutputPort()); aPixelCenters.VertexCellsOn(); aPixelhog = new vtkHedgeHog(); aPixelhog.SetInputConnection(aPixelCenters.GetOutputPort()); aPixelmapHog = vtkPolyDataMapper.New(); aPixelmapHog.SetInputConnection(aPixelhog.GetOutputPort()); aPixelmapHog.SetScalarModeToUseCellData(); aPixelmapHog.ScalarVisibilityOff(); aPixelhogActor = new vtkActor(); aPixelhogActor.SetMapper(aPixelmapHog); aPixelhogActor.GetProperty().SetColor(0,1,0); aPixelGlyph3D = new vtkGlyph3D(); aPixelGlyph3D.SetInputConnection(aPixelCenters.GetOutputPort()); aPixelGlyph3D.SetSource(ball.GetOutput()); aPixelCentersMapper = vtkPolyDataMapper.New(); aPixelCentersMapper.SetInputConnection(aPixelGlyph3D.GetOutputPort()); aPixelCentersActor = new vtkActor(); aPixelCentersActor.SetMapper(aPixelCentersMapper); aPixelhogActor.SetPosition(aPixelActor.GetPosition()[0],aPixelActor.GetPosition()[1],aPixelActor.GetPosition()[2]); ren1.AddActor((vtkProp)aPixelhogActor); aPixelhogActor.GetProperty().SetRepresentationToWireframe(); aPolygonderivs = new vtkCellDerivatives(); aPolygonderivs.SetInput(aPolygonGrid); aPolygonderivs.SetVectorModeToComputeGradient(); FileName = dir; FileName += "/aPolygon"; FileName += ".vtk"; // make sure the directory is writeable first[] tryWorked = false; try { channel = new StreamWriter("" + (dir.ToString()) + "/test.tmp"); tryWorked = true; } catch(Exception) { tryWorked = false; } if(tryWorked) { channel.Close(); File.Delete("" + (dir.ToString()) + "/test.tmp"); aPolygonWriter = new vtkUnstructuredGridWriter(); aPolygonWriter.SetInputConnection(aPolygonderivs.GetOutputPort()); aPolygonWriter.SetFileName(FileName); aPolygonWriter.Write(); // delete the file[] File.Delete("FileName"); } aPolygonCenters = new vtkCellCenters(); aPolygonCenters.SetInputConnection(aPolygonderivs.GetOutputPort()); aPolygonCenters.VertexCellsOn(); aPolygonhog = new vtkHedgeHog(); aPolygonhog.SetInputConnection(aPolygonCenters.GetOutputPort()); aPolygonmapHog = vtkPolyDataMapper.New(); aPolygonmapHog.SetInputConnection(aPolygonhog.GetOutputPort()); aPolygonmapHog.SetScalarModeToUseCellData(); aPolygonmapHog.ScalarVisibilityOff(); aPolygonhogActor = new vtkActor(); aPolygonhogActor.SetMapper(aPolygonmapHog); aPolygonhogActor.GetProperty().SetColor(0,1,0); aPolygonGlyph3D = new vtkGlyph3D(); aPolygonGlyph3D.SetInputConnection(aPolygonCenters.GetOutputPort()); aPolygonGlyph3D.SetSource(ball.GetOutput()); aPolygonCentersMapper = vtkPolyDataMapper.New(); aPolygonCentersMapper.SetInputConnection(aPolygonGlyph3D.GetOutputPort()); aPolygonCentersActor = new vtkActor(); aPolygonCentersActor.SetMapper(aPolygonCentersMapper); aPolygonhogActor.SetPosition(aPolygonActor.GetPosition()[0],aPolygonActor.GetPosition()[1],aPolygonActor.GetPosition()[2]); ren1.AddActor((vtkProp)aPolygonhogActor); aPolygonhogActor.GetProperty().SetRepresentationToWireframe(); aPentaderivs = new vtkCellDerivatives(); aPentaderivs.SetInput(aPentaGrid); aPentaderivs.SetVectorModeToComputeGradient(); FileName = dir; FileName += "/aPenta"; FileName += ".vtk"; // make sure the directory is writeable first[] tryWorked = false; try { channel = new StreamWriter("" + (dir.ToString()) + "/test.tmp"); tryWorked = true; } catch(Exception) { tryWorked = false; } if(tryWorked) { channel.Close(); File.Delete("" + (dir.ToString()) + "/test.tmp"); aPentaWriter = new vtkUnstructuredGridWriter(); aPentaWriter.SetInputConnection(aPentaderivs.GetOutputPort()); aPentaWriter.SetFileName(FileName); aPentaWriter.Write(); // delete the file[] File.Delete("FileName"); } aPentaCenters = new vtkCellCenters(); aPentaCenters.SetInputConnection(aPentaderivs.GetOutputPort()); aPentaCenters.VertexCellsOn(); aPentahog = new vtkHedgeHog(); aPentahog.SetInputConnection(aPentaCenters.GetOutputPort()); aPentamapHog = vtkPolyDataMapper.New(); aPentamapHog.SetInputConnection(aPentahog.GetOutputPort()); aPentamapHog.SetScalarModeToUseCellData(); aPentamapHog.ScalarVisibilityOff(); aPentahogActor = new vtkActor(); aPentahogActor.SetMapper(aPentamapHog); aPentahogActor.GetProperty().SetColor(0,1,0); aPentaGlyph3D = new vtkGlyph3D(); aPentaGlyph3D.SetInputConnection(aPentaCenters.GetOutputPort()); aPentaGlyph3D.SetSource(ball.GetOutput()); aPentaCentersMapper = vtkPolyDataMapper.New(); aPentaCentersMapper.SetInputConnection(aPentaGlyph3D.GetOutputPort()); aPentaCentersActor = new vtkActor(); aPentaCentersActor.SetMapper(aPentaCentersMapper); aPentahogActor.SetPosition(aPentaActor.GetPosition()[0],aPentaActor.GetPosition()[1],aPentaActor.GetPosition()[2]); ren1.AddActor((vtkProp)aPentahogActor); aPentahogActor.GetProperty().SetRepresentationToWireframe(); aHexaderivs = new vtkCellDerivatives(); aHexaderivs.SetInput(aHexaGrid); aHexaderivs.SetVectorModeToComputeGradient(); FileName = dir; FileName += "/aHexa"; FileName += ".vtk"; // make sure the directory is writeable first[] tryWorked = false; try { channel = new StreamWriter("" + (dir.ToString()) + "/test.tmp"); tryWorked = true; } catch(Exception) { tryWorked = false; } if(tryWorked) { channel.Close(); File.Delete("" + (dir.ToString()) + "/test.tmp"); aHexaWriter = new vtkUnstructuredGridWriter(); aHexaWriter.SetInputConnection(aHexaderivs.GetOutputPort()); aHexaWriter.SetFileName(FileName); aHexaWriter.Write(); // delete the file[] File.Delete("FileName"); } aHexaCenters = new vtkCellCenters(); aHexaCenters.SetInputConnection(aHexaderivs.GetOutputPort()); aHexaCenters.VertexCellsOn(); aHexahog = new vtkHedgeHog(); aHexahog.SetInputConnection(aHexaCenters.GetOutputPort()); aHexamapHog = vtkPolyDataMapper.New(); aHexamapHog.SetInputConnection(aHexahog.GetOutputPort()); aHexamapHog.SetScalarModeToUseCellData(); aHexamapHog.ScalarVisibilityOff(); aHexahogActor = new vtkActor(); aHexahogActor.SetMapper(aHexamapHog); aHexahogActor.GetProperty().SetColor(0,1,0); aHexaGlyph3D = new vtkGlyph3D(); aHexaGlyph3D.SetInputConnection(aHexaCenters.GetOutputPort()); aHexaGlyph3D.SetSource(ball.GetOutput()); aHexaCentersMapper = vtkPolyDataMapper.New(); aHexaCentersMapper.SetInputConnection(aHexaGlyph3D.GetOutputPort()); aHexaCentersActor = new vtkActor(); aHexaCentersActor.SetMapper(aHexaCentersMapper); aHexahogActor.SetPosition(aHexaActor.GetPosition()[0],aHexaActor.GetPosition()[1],aHexaActor.GetPosition()[2]); ren1.AddActor((vtkProp)aHexahogActor); aHexahogActor.GetProperty().SetRepresentationToWireframe(); ren1.ResetCamera(); ren1.GetActiveCamera().Azimuth((double)30); ren1.GetActiveCamera().Elevation((double)20); ren1.GetActiveCamera().Dolly((double)3.0); ren1.ResetCameraClippingRange(); renWin.SetSize((int)300,(int)150); renWin.Render(); // render the image[] //[] iren.Initialize(); //deleteAllVTKObjects(); }
/// <summary> /// The main entry method called by the CSharp driver /// </summary> /// <param name="argv"></param> public static void AVgaussian(String [] argv) { //Prefix Content is: "" ren1 = vtkRenderer.New(); renWin = vtkRenderWindow.New(); renWin.AddRenderer((vtkRenderer)ren1); renWin.SetSize((int)300,(int)300); iren = new vtkRenderWindowInteractor(); iren.SetRenderWindow((vtkRenderWindow)renWin); camera = new vtkCamera(); camera.ParallelProjectionOn(); camera.SetViewUp((double)0,(double)1,(double)0); camera.SetFocalPoint((double)12,(double)10.5,(double)15); camera.SetPosition((double)-70,(double)15,(double)34); camera.ComputeViewPlaneNormal(); ren1.SetActiveCamera((vtkCamera)camera); // Create the reader for the data[] //vtkStructuredPointsReader reader[] reader = new vtkGaussianCubeReader(); reader.SetFileName((string)"" + (VTK_DATA_ROOT.ToString()) + "/Data/m4_TotalDensity.cube"); reader.SetHBScale((double)1.1); reader.SetBScale((double)10); reader.Update(); range = reader.GetGridOutput().GetPointData().GetScalars().GetRange(); min = (double)(lindex(range,0)); max = (double)(lindex(range,1)); readerSS = new vtkImageShiftScale(); readerSS.SetInput((vtkDataObject)reader.GetGridOutput()); readerSS.SetShift((double)min*-1); readerSS.SetScale((double)255/(max-min)); readerSS.SetOutputScalarTypeToUnsignedChar(); bounds = new vtkOutlineFilter(); bounds.SetInput((vtkDataObject)reader.GetGridOutput()); boundsMapper = vtkPolyDataMapper.New(); boundsMapper.SetInputConnection((vtkAlgorithmOutput)bounds.GetOutputPort()); boundsActor = new vtkActor(); boundsActor.SetMapper((vtkMapper)boundsMapper); boundsActor.GetProperty().SetColor((double)0,(double)0,(double)0); contour = new vtkContourFilter(); contour.SetInput((vtkDataObject)reader.GetGridOutput()); contour.GenerateValues((int)5,(double)0,(double).05); contourMapper = vtkPolyDataMapper.New(); contourMapper.SetInputConnection((vtkAlgorithmOutput)contour.GetOutputPort()); contourMapper.SetScalarRange((double)0,(double).1); ((vtkLookupTable)contourMapper.GetLookupTable()).SetHueRange(0.32,0); contourActor = new vtkActor(); contourActor.SetMapper((vtkMapper)contourMapper); contourActor.GetProperty().SetOpacity((double).5); // Create transfer mapping scalar value to opacity[] opacityTransferFunction = new vtkPiecewiseFunction(); opacityTransferFunction.AddPoint((double)0,(double)0.01); opacityTransferFunction.AddPoint((double)255,(double)0.35); opacityTransferFunction.ClampingOn(); // Create transfer mapping scalar value to color[] colorTransferFunction = new vtkColorTransferFunction(); colorTransferFunction.AddHSVPoint((double)0.0,(double)0.66,(double)1.0,(double)1.0); colorTransferFunction.AddHSVPoint((double)50.0,(double)0.33,(double)1.0,(double)1.0); colorTransferFunction.AddHSVPoint((double)100.0,(double)0.00,(double)1.0,(double)1.0); // The property describes how the data will look[] volumeProperty = new vtkVolumeProperty(); volumeProperty.SetColor((vtkColorTransferFunction)colorTransferFunction); volumeProperty.SetScalarOpacity((vtkPiecewiseFunction)opacityTransferFunction); volumeProperty.SetInterpolationTypeToLinear(); // The mapper / ray cast function know how to render the data[] compositeFunction = new vtkVolumeRayCastCompositeFunction(); volumeMapper = new vtkVolumeRayCastMapper(); //vtkVolumeTextureMapper2D volumeMapper[] volumeMapper.SetVolumeRayCastFunction((vtkVolumeRayCastFunction)compositeFunction); volumeMapper.SetInputConnection((vtkAlgorithmOutput)readerSS.GetOutputPort()); // The volume holds the mapper and the property and[] // can be used to position/orient the volume[] volume = new vtkVolume(); volume.SetMapper((vtkAbstractVolumeMapper)volumeMapper); volume.SetProperty((vtkVolumeProperty)volumeProperty); ren1.AddVolume((vtkProp)volume); //ren1 AddActor contourActor[] ren1.AddActor((vtkProp)boundsActor); //#####################################################################[] Sphere = new vtkSphereSource(); Sphere.SetCenter((double)0,(double)0,(double)0); Sphere.SetRadius((double)1); Sphere.SetThetaResolution((int)16); Sphere.SetStartTheta((double)0); Sphere.SetEndTheta((double)360); Sphere.SetPhiResolution((int)16); Sphere.SetStartPhi((double)0); Sphere.SetEndPhi((double)180); Glyph = new vtkGlyph3D(); Glyph.SetInputConnection((vtkAlgorithmOutput)reader.GetOutputPort()); Glyph.SetOrient((int)1); Glyph.SetColorMode((int)1); //Glyph ScalingOn[] Glyph.SetScaleMode((int)2); Glyph.SetScaleFactor((double).6); Glyph.SetSource((vtkPolyData)Sphere.GetOutput()); AtomsMapper = vtkPolyDataMapper.New(); AtomsMapper.SetInputConnection((vtkAlgorithmOutput)Glyph.GetOutputPort()); AtomsMapper.SetImmediateModeRendering((int)1); AtomsMapper.UseLookupTableScalarRangeOff(); AtomsMapper.SetScalarVisibility((int)1); AtomsMapper.SetScalarModeToDefault(); Atoms = new vtkActor(); Atoms.SetMapper((vtkMapper)AtomsMapper); Atoms.GetProperty().SetRepresentationToSurface(); Atoms.GetProperty().SetInterpolationToGouraud(); Atoms.GetProperty().SetAmbient((double)0.15); Atoms.GetProperty().SetDiffuse((double)0.85); Atoms.GetProperty().SetSpecular((double)0.1); Atoms.GetProperty().SetSpecularPower((double)100); Atoms.GetProperty().SetSpecularColor((double)1,(double)1,(double)1); Atoms.GetProperty().SetColor((double)1,(double)1,(double)1); Tube = new vtkTubeFilter(); Tube.SetInputConnection((vtkAlgorithmOutput)reader.GetOutputPort()); Tube.SetNumberOfSides((int)16); Tube.SetCapping((int)0); Tube.SetRadius((double)0.2); Tube.SetVaryRadius((int)0); Tube.SetRadiusFactor((double)10); BondsMapper = vtkPolyDataMapper.New(); BondsMapper.SetInputConnection((vtkAlgorithmOutput)Tube.GetOutputPort()); BondsMapper.SetImmediateModeRendering((int)1); BondsMapper.UseLookupTableScalarRangeOff(); BondsMapper.SetScalarVisibility((int)1); BondsMapper.SetScalarModeToDefault(); Bonds = new vtkActor(); Bonds.SetMapper((vtkMapper)BondsMapper); Bonds.GetProperty().SetRepresentationToSurface(); Bonds.GetProperty().SetInterpolationToGouraud(); Bonds.GetProperty().SetAmbient((double)0.15); Bonds.GetProperty().SetDiffuse((double)0.85); Bonds.GetProperty().SetSpecular((double)0.1); Bonds.GetProperty().SetSpecularPower((double)100); Bonds.GetProperty().SetSpecularColor((double)1,(double)1,(double)1); Bonds.GetProperty().SetColor((double)1,(double)1,(double)1); ren1.AddActor((vtkProp)Bonds); ren1.AddActor((vtkProp)Atoms); //###################################################[] ren1.SetBackground((double)1,(double)1,(double)1); ren1.ResetCamera(); renWin.Render(); //method moved renWin.AbortCheckEvt += new Kitware.VTK.vtkObject.vtkObjectEventHandler(TkCheckAbort_Command.Execute); iren.Initialize(); //deleteAllVTKObjects(); }
/// <summary> /// The main entry method called by the CSharp driver /// </summary> /// <param name="argv"></param> public static void AVclosedSplines(String [] argv) { //Prefix Content is: "" // get the interactor ui[] // Now create the RenderWindow, Renderer and Interactor[] //[] ren1 = vtkRenderer.New(); renWin = vtkRenderWindow.New(); renWin.AddRenderer((vtkRenderer)ren1); iren = new vtkRenderWindowInteractor(); iren.SetRenderWindow((vtkRenderWindow)renWin); math = new vtkMath(); numberOfInputPoints = 30; aKSplineX = new vtkKochanekSpline(); aKSplineX.ClosedOn(); aKSplineY = new vtkKochanekSpline(); aKSplineY.ClosedOn(); aKSplineZ = new vtkKochanekSpline(); aKSplineZ.ClosedOn(); aCSplineX = new vtkCardinalSpline(); aCSplineX.ClosedOn(); aCSplineY = new vtkCardinalSpline(); aCSplineY.ClosedOn(); aCSplineZ = new vtkCardinalSpline(); aCSplineZ.ClosedOn(); // add some points[] inputPoints = new vtkPoints(); x = -1.0; y = -1.0; z = 0.0; aKSplineX.AddPoint((double)0,(double)x); aKSplineY.AddPoint((double)0,(double)y); aKSplineZ.AddPoint((double)0,(double)z); aCSplineX.AddPoint((double)0,(double)x); aCSplineY.AddPoint((double)0,(double)y); aCSplineZ.AddPoint((double)0,(double)z); inputPoints.InsertPoint((int)0,(double)x,(double)y,(double)z); x = 1.0; y = -1.0; z = 0.0; aKSplineX.AddPoint((double)1,(double)x); aKSplineY.AddPoint((double)1,(double)y); aKSplineZ.AddPoint((double)1,(double)z); aCSplineX.AddPoint((double)1,(double)x); aCSplineY.AddPoint((double)1,(double)y); aCSplineZ.AddPoint((double)1,(double)z); inputPoints.InsertPoint((int)1,(double)x,(double)y,(double)z); x = 1.0; y = 1.0; z = 0.0; aKSplineX.AddPoint((double)2,(double)x); aKSplineY.AddPoint((double)2,(double)y); aKSplineZ.AddPoint((double)2,(double)z); aCSplineX.AddPoint((double)2,(double)x); aCSplineY.AddPoint((double)2,(double)y); aCSplineZ.AddPoint((double)2,(double)z); inputPoints.InsertPoint((int)2,(double)x,(double)y,(double)z); x = -1.0; y = 1.0; z = 0.0; aKSplineX.AddPoint((double)3,(double)x); aKSplineY.AddPoint((double)3,(double)y); aKSplineZ.AddPoint((double)3,(double)z); aCSplineX.AddPoint((double)3,(double)x); aCSplineY.AddPoint((double)3,(double)y); aCSplineZ.AddPoint((double)3,(double)z); inputPoints.InsertPoint((int)3,(double)x,(double)y,(double)z); inputData = new vtkPolyData(); inputData.SetPoints((vtkPoints)inputPoints); balls = new vtkSphereSource(); balls.SetRadius((double).04); balls.SetPhiResolution((int)10); balls.SetThetaResolution((int)10); glyphPoints = new vtkGlyph3D(); glyphPoints.SetInput((vtkDataObject)inputData); glyphPoints.SetSource((vtkPolyData)balls.GetOutput()); glyphMapper = vtkPolyDataMapper.New(); glyphMapper.SetInputConnection((vtkAlgorithmOutput)glyphPoints.GetOutputPort()); glyph = new vtkActor(); glyph.SetMapper((vtkMapper)glyphMapper); glyph.GetProperty().SetDiffuseColor((double) 1.0000, 0.3882, 0.2784 ); glyph.GetProperty().SetSpecular((double).3); glyph.GetProperty().SetSpecularPower((double)30); ren1.AddActor((vtkProp)glyph); Kpoints = new vtkPoints(); Cpoints = new vtkPoints(); profileKData = new vtkPolyData(); profileCData = new vtkPolyData(); numberOfInputPoints = 5; numberOfOutputPoints = 100; offset = 1.0; //method moved fit(); lines = new vtkCellArray(); lines.InsertNextCell((int)numberOfOutputPoints); i = 0; while((i) < numberOfOutputPoints) { lines.InsertCellPoint((int)i); i = i + 1; } profileKData.SetPoints((vtkPoints)Kpoints); profileKData.SetLines((vtkCellArray)lines); profileCData.SetPoints((vtkPoints)Cpoints); profileCData.SetLines((vtkCellArray)lines); profileKTubes = new vtkTubeFilter(); profileKTubes.SetNumberOfSides((int)8); profileKTubes.SetInput((vtkDataObject)profileKData); profileKTubes.SetRadius((double).01); profileKMapper = vtkPolyDataMapper.New(); profileKMapper.SetInputConnection((vtkAlgorithmOutput)profileKTubes.GetOutputPort()); profileK = new vtkActor(); profileK.SetMapper((vtkMapper)profileKMapper); profileK.GetProperty().SetDiffuseColor((double) 0.8900, 0.8100, 0.3400 ); profileK.GetProperty().SetSpecular((double).3); profileK.GetProperty().SetSpecularPower((double)30); ren1.AddActor((vtkProp)profileK); profileCTubes = new vtkTubeFilter(); profileCTubes.SetNumberOfSides((int)8); profileCTubes.SetInput((vtkDataObject)profileCData); profileCTubes.SetRadius((double).01); profileCMapper = vtkPolyDataMapper.New(); profileCMapper.SetInputConnection((vtkAlgorithmOutput)profileCTubes.GetOutputPort()); profileC = new vtkActor(); profileC.SetMapper((vtkMapper)profileCMapper); profileC.GetProperty().SetDiffuseColor((double) 0.2000, 0.6300, 0.7900 ); profileC.GetProperty().SetSpecular((double).3); profileC.GetProperty().SetSpecularPower((double)30); ren1.AddActor((vtkProp)profileC); ren1.ResetCamera(); ren1.GetActiveCamera().Dolly((double)1.5); ren1.ResetCameraClippingRange(); renWin.SetSize((int)300,(int)300); // render the image[] //[] iren.Initialize(); // prevent the tk window from showing up then start the event loop[] //method moved //method moved //method moved //method moved //method moved //method moved //deleteAllVTKObjects(); }
private void Subdivision(string filePath) { vtkPolyData originalMesh; if (filePath != null) { vtkXMLPolyDataReader reader = vtkXMLPolyDataReader.New(); reader.SetFileName(filePath); // Subdivision filters only work on triangles vtkTriangleFilter triangles = vtkTriangleFilter.New(); triangles.SetInputConnection(reader.GetOutputPort()); triangles.Update(); originalMesh = triangles.GetOutput(); } else { vtkSphereSource sphereSource = vtkSphereSource.New(); sphereSource.Update(); originalMesh = sphereSource.GetOutput(); } Debug.WriteLine("Before subdivision"); Debug.WriteLine(" There are " + originalMesh.GetNumberOfPoints() + " points."); Debug.WriteLine(" There are " + originalMesh.GetNumberOfPolys() + " triangles."); int numberOfViewports = 3; vtkRenderWindow renderWindow = renderWindowControl1.RenderWindow; this.Size = new System.Drawing.Size(200 * numberOfViewports + 12, 252); this.Text += " - Subdivision"; Random rnd = new Random(2); int numberOfSubdivisions = 2; // Create one text property for all vtkTextProperty textProperty = vtkTextProperty.New(); textProperty.SetFontSize(14); textProperty.SetJustificationToCentered(); for (int i = 0; i < numberOfViewports; i++) { // Note: Here we create a superclass pointer (vtkPolyDataAlgorithm) so that we can easily instantiate different // types of subdivision filters. Typically you would not want to do this, but rather create the pointer to be the type // filter you will actually use, e.g. // <vtkLinearSubdivisionFilter> subdivisionFilter = <vtkLinearSubdivisionFilter>.New(); vtkPolyDataAlgorithm subdivisionFilter; switch (i) { case 0: subdivisionFilter = vtkLinearSubdivisionFilter.New(); ((vtkLinearSubdivisionFilter)subdivisionFilter).SetNumberOfSubdivisions(numberOfSubdivisions); break; case 1: subdivisionFilter = vtkLoopSubdivisionFilter.New(); ((vtkLoopSubdivisionFilter)subdivisionFilter).SetNumberOfSubdivisions(numberOfSubdivisions); break; case 2: subdivisionFilter = vtkButterflySubdivisionFilter.New(); ((vtkButterflySubdivisionFilter)subdivisionFilter).SetNumberOfSubdivisions(numberOfSubdivisions); break; default: subdivisionFilter = vtkLinearSubdivisionFilter.New(); ((vtkLinearSubdivisionFilter)subdivisionFilter).SetNumberOfSubdivisions(numberOfSubdivisions); break; } #if VTK_MAJOR_VERSION_5 subdivisionFilter.SetInputConnection(originalMesh.GetProducerPort()); #else subdivisionFilter.SetInputData(originalMesh); #endif subdivisionFilter.Update(); vtkRenderer renderer = vtkRenderer.New(); renderWindow.AddRenderer(renderer); renderer.SetViewport((float)i / numberOfViewports, 0, (float)(i + 1) / numberOfViewports, 1); renderer.SetBackground(.2 + rnd.NextDouble() / 8, .3 + rnd.NextDouble() / 8, .4 + rnd.NextDouble() / 8); vtkTextMapper textMapper = vtkTextMapper.New(); vtkActor2D textActor = vtkActor2D.New(); textMapper.SetInput(subdivisionFilter.GetClassName()); textMapper.SetTextProperty(textProperty); textActor.SetMapper(textMapper); textActor.SetPosition(100, 16); //Create a mapper and actor vtkPolyDataMapper mapper = vtkPolyDataMapper.New(); mapper.SetInputConnection(subdivisionFilter.GetOutputPort()); vtkActor actor = vtkActor.New(); actor.SetMapper(mapper); renderer.AddActor(actor); renderer.AddActor(textActor); renderer.ResetCamera(); } renderWindow.Render(); }
/// <summary> /// The main entry method called by the CSharp driver /// </summary> /// <param name="argv"></param> public static void AVclosedSplines(String [] argv) { //Prefix Content is: "" // get the interactor ui[] // Now create the RenderWindow, Renderer and Interactor[] //[] ren1 = vtkRenderer.New(); renWin = vtkRenderWindow.New(); renWin.AddRenderer((vtkRenderer)ren1); iren = new vtkRenderWindowInteractor(); iren.SetRenderWindow((vtkRenderWindow)renWin); math = new vtkMath(); numberOfInputPoints = 30; aKSplineX = new vtkKochanekSpline(); aKSplineX.ClosedOn(); aKSplineY = new vtkKochanekSpline(); aKSplineY.ClosedOn(); aKSplineZ = new vtkKochanekSpline(); aKSplineZ.ClosedOn(); aCSplineX = new vtkCardinalSpline(); aCSplineX.ClosedOn(); aCSplineY = new vtkCardinalSpline(); aCSplineY.ClosedOn(); aCSplineZ = new vtkCardinalSpline(); aCSplineZ.ClosedOn(); // add some points[] inputPoints = new vtkPoints(); x = -1.0; y = -1.0; z = 0.0; aKSplineX.AddPoint((double)0, (double)x); aKSplineY.AddPoint((double)0, (double)y); aKSplineZ.AddPoint((double)0, (double)z); aCSplineX.AddPoint((double)0, (double)x); aCSplineY.AddPoint((double)0, (double)y); aCSplineZ.AddPoint((double)0, (double)z); inputPoints.InsertPoint((int)0, (double)x, (double)y, (double)z); x = 1.0; y = -1.0; z = 0.0; aKSplineX.AddPoint((double)1, (double)x); aKSplineY.AddPoint((double)1, (double)y); aKSplineZ.AddPoint((double)1, (double)z); aCSplineX.AddPoint((double)1, (double)x); aCSplineY.AddPoint((double)1, (double)y); aCSplineZ.AddPoint((double)1, (double)z); inputPoints.InsertPoint((int)1, (double)x, (double)y, (double)z); x = 1.0; y = 1.0; z = 0.0; aKSplineX.AddPoint((double)2, (double)x); aKSplineY.AddPoint((double)2, (double)y); aKSplineZ.AddPoint((double)2, (double)z); aCSplineX.AddPoint((double)2, (double)x); aCSplineY.AddPoint((double)2, (double)y); aCSplineZ.AddPoint((double)2, (double)z); inputPoints.InsertPoint((int)2, (double)x, (double)y, (double)z); x = -1.0; y = 1.0; z = 0.0; aKSplineX.AddPoint((double)3, (double)x); aKSplineY.AddPoint((double)3, (double)y); aKSplineZ.AddPoint((double)3, (double)z); aCSplineX.AddPoint((double)3, (double)x); aCSplineY.AddPoint((double)3, (double)y); aCSplineZ.AddPoint((double)3, (double)z); inputPoints.InsertPoint((int)3, (double)x, (double)y, (double)z); inputData = new vtkPolyData(); inputData.SetPoints((vtkPoints)inputPoints); balls = new vtkSphereSource(); balls.SetRadius((double).04); balls.SetPhiResolution((int)10); balls.SetThetaResolution((int)10); balls.Update(); glyphPoints = new vtkGlyph3D(); glyphPoints.SetInputData((vtkDataObject)inputData); glyphPoints.SetSourceData((vtkPolyData)balls.GetOutput()); glyphMapper = vtkPolyDataMapper.New(); glyphMapper.SetInputConnection((vtkAlgorithmOutput)glyphPoints.GetOutputPort()); glyph = new vtkActor(); glyph.SetMapper((vtkMapper)glyphMapper); glyph.GetProperty().SetDiffuseColor((double)1.0000, 0.3882, 0.2784); glyph.GetProperty().SetSpecular((double).3); glyph.GetProperty().SetSpecularPower((double)30); ren1.AddActor((vtkProp)glyph); Kpoints = new vtkPoints(); Cpoints = new vtkPoints(); profileKData = new vtkPolyData(); profileCData = new vtkPolyData(); numberOfInputPoints = 5; numberOfOutputPoints = 100; offset = 1.0; //method moved fit(); lines = new vtkCellArray(); lines.InsertNextCell((int)numberOfOutputPoints); i = 0; while ((i) < numberOfOutputPoints) { lines.InsertCellPoint((int)i); i = i + 1; } profileKData.SetPoints((vtkPoints)Kpoints); profileKData.SetLines((vtkCellArray)lines); profileCData.SetPoints((vtkPoints)Cpoints); profileCData.SetLines((vtkCellArray)lines); profileKTubes = new vtkTubeFilter(); profileKTubes.SetNumberOfSides((int)8); profileKTubes.SetInputData((vtkDataObject)profileKData); profileKTubes.SetRadius((double).01); profileKMapper = vtkPolyDataMapper.New(); profileKMapper.SetInputConnection((vtkAlgorithmOutput)profileKTubes.GetOutputPort()); profileK = new vtkActor(); profileK.SetMapper((vtkMapper)profileKMapper); profileK.GetProperty().SetDiffuseColor((double)0.8900, 0.8100, 0.3400); profileK.GetProperty().SetSpecular((double).3); profileK.GetProperty().SetSpecularPower((double)30); ren1.AddActor((vtkProp)profileK); profileCTubes = new vtkTubeFilter(); profileCTubes.SetNumberOfSides((int)8); profileCTubes.SetInputData((vtkDataObject)profileCData); profileCTubes.SetRadius((double).01); profileCMapper = vtkPolyDataMapper.New(); profileCMapper.SetInputConnection((vtkAlgorithmOutput)profileCTubes.GetOutputPort()); profileC = new vtkActor(); profileC.SetMapper((vtkMapper)profileCMapper); profileC.GetProperty().SetDiffuseColor((double)0.2000, 0.6300, 0.7900); profileC.GetProperty().SetSpecular((double).3); profileC.GetProperty().SetSpecularPower((double)30); ren1.AddActor((vtkProp)profileC); ren1.ResetCamera(); ren1.GetActiveCamera().Dolly((double)1.5); ren1.ResetCameraClippingRange(); renWin.SetSize((int)300, (int)300); // render the image[] //[] iren.Initialize(); // prevent the tk window from showing up then start the event loop[] //method moved //method moved //method moved //method moved //method moved //method moved //deleteAllVTKObjects(); }
private void OBBDicer(string filePath) { vtkPolyData inputPolyData; if (filePath != null) { vtkXMLPolyDataReader reader = vtkXMLPolyDataReader.New(); reader.SetFileName(filePath); reader.Update(); inputPolyData = reader.GetOutput(); } else { vtkSphereSource sphereSource = vtkSphereSource.New(); sphereSource.SetThetaResolution(30); sphereSource.SetPhiResolution(15); sphereSource.Update(); inputPolyData = sphereSource.GetOutput(); } // Create pipeline vtkOBBDicer dicer = vtkOBBDicer.New(); #if VTK_MAJOR_VERSION_5 dicer.SetInput(inputPolyData); #else dicer.SetInputData(inputPolyData); #endif dicer.SetNumberOfPieces(4); dicer.SetDiceModeToSpecifiedNumberOfPieces(); dicer.Update(); vtkPolyDataMapper inputMapper = vtkPolyDataMapper.New(); inputMapper.SetInputConnection(dicer.GetOutputPort()); inputMapper.SetScalarRange(0, dicer.GetNumberOfActualPieces()); Debug.WriteLine("Asked for: " + dicer.GetNumberOfPieces() + " pieces, got: " + dicer.GetNumberOfActualPieces()); vtkActor inputActor = vtkActor.New(); inputActor.SetMapper(inputMapper); inputActor.GetProperty().SetInterpolationToFlat(); vtkOutlineCornerFilter outline = vtkOutlineCornerFilter.New(); #if VTK_MAJOR_VERSION_5 outline.SetInput(inputPolyData); #else outline.SetInputData(inputPolyData); #endif vtkPolyDataMapper outlineMapper = vtkPolyDataMapper.New(); outlineMapper.SetInputConnection(outline.GetOutputPort()); vtkActor outlineActor = vtkActor.New(); outlineActor.SetMapper(outlineMapper); outlineActor.GetProperty().SetColor(0, 0, 0); // 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(inputActor); renderer.AddActor(outlineActor); }
/// <summary> /// A console application that creates a /// vtkRenderWindow without a Windows Form /// </summary> /// <param name="argv"></param> public static void Main(String[] argv) { // Demonstrate how to use the vtkBoxWidget 3D widget, // This script uses a 3D box widget to define a "clipping box" to clip some // simple geometry (a mace). Make sure that you hit the "W" key to activate the widget. // Create a mace out of filters. sphere = vtkSphereSource.New(); cone = vtkConeSource.New(); glyph = vtkGlyph3D.New(); glyph.SetInputConnection(sphere.GetOutputPort()); glyph.SetSource(cone.GetOutput()); glyph.SetVectorModeToUseNormal(); glyph.SetScaleModeToScaleByVector(); glyph.SetScaleFactor(0.25); // The sphere and spikes are appended into a single polydata. This just makes things // simpler to manage. apd = vtkAppendPolyData.New(); apd.AddInput(glyph.GetOutput()); apd.AddInput(sphere.GetOutput()); maceMapper = vtkPolyDataMapper.New(); maceMapper.SetInputConnection(apd.GetOutputPort()); maceActor = vtkLODActor.New(); maceActor.SetMapper(maceMapper); maceActor.VisibilityOn(); // This portion of the code clips the mace with the vtkPlanes implicit function. // The clipped region is colored green. planes = vtkPlanes.New(); clipper = vtkClipPolyData.New(); clipper.SetInputConnection(apd.GetOutputPort()); clipper.SetClipFunction(planes); clipper.InsideOutOn(); selectMapper = vtkPolyDataMapper.New(); selectMapper.SetInputConnection(clipper.GetOutputPort()); selectActor = vtkLODActor.New(); selectActor.SetMapper(selectMapper); selectActor.GetProperty().SetColor(0, 1, 0); selectActor.VisibilityOff(); selectActor.SetScale(1.01, 1.01, 1.01); // Create the RenderWindow, Renderer and both Actors ren1 = vtkRenderer.New(); renWin = vtkRenderWindow.New(); renWin.AddRenderer(ren1); iren = vtkRenderWindowInteractor.New(); iren.SetRenderWindow(renWin); // The SetInteractor method is how 3D widgets are associated with the render // window interactor. Internally, SetInteractor sets up a bunch of callbacks // using the Command/Observer mechanism (AddObserver()). boxWidget = vtkBoxWidget.New(); boxWidget.SetInteractor(iren); boxWidget.SetPlaceFactor(1.25); ren1.AddActor(maceActor); ren1.AddActor(selectActor); // Add the actors to the renderer, set the background and size ren1.SetBackground(0.1, 0.2, 0.4); renWin.SetSize(300, 300); // Place the interactor initially. The input to a 3D widget is used to // initially position and scale the widget. The EndInteractionEvent is // observed which invokes the SelectPolygons callback. boxWidget.SetInput(glyph.GetOutput()); boxWidget.PlaceWidget(); boxWidget.EndInteractionEvt += new vtkObject.vtkObjectEventHandler(SelectPolygons); // render the image iren.Initialize(); iren.Start(); //Clean up deleteAllVTKObjects(); }
private void ContoursFromPolyData(string filePath) { vtkPolyData inputPolyData; if (filePath != null) { vtkXMLPolyDataReader reader = vtkXMLPolyDataReader.New(); reader.SetFileName(filePath); reader.Update(); inputPolyData = reader.GetOutput(); } else { vtkSphereSource sphereSource = vtkSphereSource.New(); sphereSource.SetThetaResolution(30); sphereSource.SetPhiResolution(15); sphereSource.Update(); inputPolyData = sphereSource.GetOutput(); } vtkPolyDataMapper inputMapper = vtkPolyDataMapper.New(); #if VTK_MAJOR_VERSION_5 inputMapper.SetInput(inputPolyData); #else inputMapper.SetInputData(inputPolyData); #endif // Create a plane to cut vtkPlane plane = vtkPlane.New(); double[] center = inputPolyData.GetCenter(); double[] bounds = inputPolyData.GetBounds(); plane.SetOrigin(center[0], center[1], center[2]); plane.SetNormal(1, 1, 1); float[] centerf = new float[] { (float)center[0], (float)center[1], (float)center[2] }; float[] minBoundf = new float[] { (float)bounds[0], (float)bounds[2], (float)bounds[4] }; float[] maxBoundf = new float[] { (float)bounds[1], (float)bounds[3], (float)bounds[5] }; IntPtr pCenter = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(float)) * 3); IntPtr pMinBound = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(float)) * 3); IntPtr pMaxBound = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(float)) * 3); Marshal.Copy(centerf, 0, pCenter, 3); Marshal.Copy(minBoundf, 0, pMinBound, 3); Marshal.Copy(maxBoundf, 0, pMaxBound, 3); // vtkMath.Distance2BetweenPoints accepts floats only double distanceMin = Math.Sqrt(vtkMath.Distance2BetweenPoints(pMinBound, pCenter)); double distanceMax = Math.Sqrt(vtkMath.Distance2BetweenPoints(pMaxBound, pCenter)); Marshal.FreeHGlobal(pCenter); Marshal.FreeHGlobal(pMinBound); Marshal.FreeHGlobal(pMaxBound); // Create cutter vtkCutter cutter = vtkCutter.New(); cutter.SetCutFunction(plane); #if VTK_MAJOR_VERSION_5 cutter.SetInput(inputPolyData); #else cutter.SetInputData(inputPolyData); #endif cutter.GenerateValues(20, -distanceMin, distanceMax); vtkPolyDataMapper cutterMapper = vtkPolyDataMapper.New(); cutterMapper.SetInputConnection(cutter.GetOutputPort()); cutterMapper.ScalarVisibilityOff(); // Create plane actor vtkActor planeActor = vtkActor.New(); planeActor.GetProperty().SetColor(1.0, 0.0, 0.0); planeActor.GetProperty().SetLineWidth(3); planeActor.SetMapper(cutterMapper); // Create input actor vtkActor inputActor = vtkActor.New(); inputActor.GetProperty().SetColor(1.0, 0.8941, 0.7686); // bisque inputActor.SetMapper(inputMapper); // 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(inputActor); renderer.AddActor(planeActor); //display the contour lines }
void _sphereSource_ModifiedEvt(vtkObject sender, vtkObjectEventArgs e) { _sphereSource.Update(); SpherePolyData = _sphereSource.GetOutput(); }
private void PolygonalSurfaceContourLineInterpolator() { vtkPolyData polyData; vtkSphereSource sphereSource = vtkSphereSource.New(); sphereSource.SetThetaResolution(40); sphereSource.SetPhiResolution(20); sphereSource.Update(); polyData = sphereSource.GetOutput(); // The Dijkstra interpolator will not accept cells that aren't triangles vtkTriangleFilter triangleFilter = vtkTriangleFilter.New(); #if VTK_MAJOR_VERSION_5 triangleFilter.SetInput(polyData); #else triangleFilter.SetInputData(polyData); #endif triangleFilter.Update(); vtkPolyData pd = triangleFilter.GetOutput(); //Create a mapper and actor vtkPolyDataMapper mapper = vtkPolyDataMapper.New(); mapper.SetInputConnection(triangleFilter.GetOutputPort()); vtkActor actor = vtkActor.New(); actor.SetMapper(mapper); actor.GetProperty().SetInterpolationToFlat(); // 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.3, 0.4, 0.5); // add our actor to the renderer renderer.AddActor(actor); // Here comes the contour widget stuff..... vtkContourWidget contourWidget = vtkContourWidget.New(); contourWidget.SetInteractor(renderWindow.GetInteractor()); vtkOrientedGlyphContourRepresentation rep = vtkOrientedGlyphContourRepresentation.SafeDownCast( contourWidget.GetRepresentation()); rep.GetLinesProperty().SetColor(1, 0.2, 0); rep.GetLinesProperty().SetLineWidth(3.0f); vtkPolygonalSurfacePointPlacer pointPlacer = vtkPolygonalSurfacePointPlacer.New(); pointPlacer.AddProp(actor); pointPlacer.GetPolys().AddItem(pd); rep.SetPointPlacer(pointPlacer); vtkPolygonalSurfaceContourLineInterpolator interpolator = vtkPolygonalSurfaceContourLineInterpolator.New(); interpolator.GetPolys().AddItem(pd); rep.SetLineInterpolator(interpolator); renderWindow.Render(); contourWidget.EnabledOn(); }